Submit Search
Upload
Путь к Go на конкретном примере
•
1 like
•
805 views
Sergey Xek
Follow
Опыт пилотной разработки микросервиса на Go и оценки производительности
Read less
Read more
Software
Report
Share
Report
Share
1 of 38
Download now
Download to read offline
Recommended
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Fwdays
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
Andrew Minkin
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
Консольные приложения на Go
Консольные приложения на Go
Andrey Smirnov
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Ontico
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Ontico
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
SQALab
Юрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
Ontico
Recommended
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Alexandr Serbul "The Rust language for a high-load network service - a quick ...
Fwdays
Как собирать gps треки раз в секунду, экономя траффик
Как собирать gps треки раз в секунду, экономя траффик
Andrew Minkin
Анатомия веб сервиса (HighLoad-2014)
Анатомия веб сервиса (HighLoad-2014)
Andrey Smirnov
Консольные приложения на Go
Консольные приложения на Go
Andrey Smirnov
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Язык Lua — секреты производительности / Ник Заварицкий (Mail.ru)
Ontico
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Twisted Framework - фреймворк для написания сетевых приложений на Python (Анд...
Ontico
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
Badoo в облаках. Решение для запуска cli-скриптов в облаке собственной разраб...
SQALab
Юрий Насретдинов, Badoo
Юрий Насретдинов, Badoo
Ontico
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Ontico
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
Ontico
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
Михаил Тюрин
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Ontico
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Ontico
Нагруженный поиск на Sphinx
Нагруженный поиск на Sphinx
Roman Pavlushko
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
Alex Chistyakov
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Roman Pavlushko
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
Alexandr Krasheninnikov
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Ontico
Облако в Badoo год спустя
Облако в Badoo год спустя
Yuriy Nasretdinov
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
Ontico
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload
Yehor Herasymchuk
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Ontico
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
Alex Chistyakov
Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"
Fwdays
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Ontico
Константин Осипов
Константин Осипов
CodeFest
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
Alex Chistyakov
Обработка геоданных в Go
Обработка геоданных в Go
Andrew Minkin
Пословицы дядюшки Пайка
Пословицы дядюшки Пайка
Elena Grahovac
More Related Content
What's hot
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Ontico
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
Ontico
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
Михаил Тюрин
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Ontico
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Ontico
Нагруженный поиск на Sphinx
Нагруженный поиск на Sphinx
Roman Pavlushko
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
Alex Chistyakov
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Roman Pavlushko
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
Alexandr Krasheninnikov
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Ontico
Облако в Badoo год спустя
Облако в Badoo год спустя
Yuriy Nasretdinov
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Ontico
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
Ontico
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload
Yehor Herasymchuk
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Ontico
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
Alex Chistyakov
Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"
Fwdays
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Ontico
Константин Осипов
Константин Осипов
CodeFest
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
Alex Chistyakov
What's hot
(20)
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
OpenResty: превращаем NGINX в полноценный сервер приложений / Владимир Прота...
Где живут Ваши объявления / Тюрин Михаил (Avito)
Где живут Ваши объявления / Тюрин Михаил (Avito)
pgconf.ru 2015 avito postgresql
pgconf.ru 2015 avito postgresql
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
LuaJIT как основа для сервера приложений - проблемы и решения / Игорь Эрлих (...
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Архитектура поиска в Booking.com / Иван Круглов (Booking.com)
Нагруженный поиск на Sphinx
Нагруженный поиск на Sphinx
Benchmarking PostgreSQL in Linux and FreeBSD
Benchmarking PostgreSQL in Linux and FreeBSD
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
AVITO. Решаем проблемы по мере их поступления. Стачка 2013
Near-realtime аналитика событий в высоконагруженном проекте
Near-realtime аналитика событий в высоконагруженном проекте
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Тестирование через мониторинг или холакратия на практике / Максим Чистяков (U...
Облако в Badoo год спустя
Облако в Badoo год спустя
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
Open Source SQL-базы данных вступили в эру миллионов запросов в секунду / Фед...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
101 способ приготовления RabbitMQ и немного о pipeline архитектуре / Филонов ...
2020.10.13 HA Redis is simple. FWDays Highload
2020.10.13 HA Redis is simple. FWDays Highload
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
Эффективная отладка репликации MySQL / Света Смирнова (Percona)
My talk on LeoFS, Highload++ 2014
My talk on LeoFS, Highload++ 2014
Anton Turetckii "What does it take to build a host?"
Anton Turetckii "What does it take to build a host?"
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Пайплайн машинного обучения на Apache Spark / Павел Клеменков (Rambler&Co)
Константин Осипов
Константин Осипов
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
My talk on DevOps engineer's adventures in the Windows world at UWDC 2017
Viewers also liked
Обработка геоданных в Go
Обработка геоданных в Go
Andrew Minkin
Пословицы дядюшки Пайка
Пословицы дядюшки Пайка
Elena Grahovac
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай сам
Sergey Xek
Стартап: формирование технической команды
Стартап: формирование технической команды
Sergey Xek
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
Sergey Xek
Javascript-фреймворки: должен остаться только один
Javascript-фреймворки: должен остаться только один
Sergey Xek
Ездим на батарейках
Ездим на батарейках
Sergey Xek
5 мифов о производительности баз данных и Python
5 мифов о производительности баз данных и Python
Max Klymyshyn
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Ontico
Python и высокая нагрузка
Python и высокая нагрузка
Alexander Shigin
Big Data aggregation techniques
Big Data aggregation techniques
Valentin Logvinskiy
Gtd Dev Labs2010 Part Ii
Gtd Dev Labs2010 Part Ii
Maxim Dorofeev
Gtd Dev Labs2010 Part I
Gtd Dev Labs2010 Part I
Maxim Dorofeev
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
Alexey Lesovsky
Go в автобусе
Go в автобусе
Artem Kovardin
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
Igor Dolzhikov
Обзорная экскурсия по runit
Обзорная экскурсия по runit
Alexander Shcherbinin
Golang
Golang
Dmitry Kakunin
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
Anton Piskunov
Как ВКонтакте использует Go
Как ВКонтакте использует Go
Artem Kovardin
Viewers also liked
(20)
Обработка геоданных в Go
Обработка геоданных в Go
Пословицы дядюшки Пайка
Пословицы дядюшки Пайка
Архитектура А/Б тестирования: сделай сам
Архитектура А/Б тестирования: сделай сам
Стартап: формирование технической команды
Стартап: формирование технической команды
Mind map для «Архитектура А/Б тестирования: сделай сам»
Mind map для «Архитектура А/Б тестирования: сделай сам»
Javascript-фреймворки: должен остаться только один
Javascript-фреймворки: должен остаться только один
Ездим на батарейках
Ездим на батарейках
5 мифов о производительности баз данных и Python
5 мифов о производительности баз данных и Python
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Расширяемость PostgreSQL для хакеров и архитекторов / Олег Бартунов, Александ...
Python и высокая нагрузка
Python и высокая нагрузка
Big Data aggregation techniques
Big Data aggregation techniques
Gtd Dev Labs2010 Part Ii
Gtd Dev Labs2010 Part Ii
Gtd Dev Labs2010 Part I
Gtd Dev Labs2010 Part I
PostgreSQL Vacuum: Nine Circles of Hell
PostgreSQL Vacuum: Nine Circles of Hell
Go в автобусе
Go в автобусе
Codefest 2016 - Go в Openprovider
Codefest 2016 - Go в Openprovider
Обзорная экскурсия по runit
Обзорная экскурсия по runit
Golang
Golang
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
РИФ+КИБ 2016: как потратить почти 2 миллиона рублей и так и не сделать бизнес
Как ВКонтакте использует Go
Как ВКонтакте использует Go
Similar to Путь к Go на конкретном примере
Tarantool, .net, newsql
Tarantool, .net, newsql
Anatoly Popov
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest
Sivko
Sivko
kuchinskaya
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Anton Baranov
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Ontico
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
SIPLABS Communications
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
it-people
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
Ontico
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Nikolay Samokhvalov
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
Tanya Denisyuk
Breaking logs
Breaking logs
Ilya Sergeev
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
it-people
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
SQALab
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Fwdays
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo Os
HighLoad2009
dotnext version of "Tarantool, .net, newsql"
dotnext version of "Tarantool, .net, newsql"
Anatoly Popov
Async Python
Async Python
Victoria Fantasy
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Ontico
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Cisco Russia
Similar to Путь к Go на конкретном примере
(20)
Tarantool, .net, newsql
Tarantool, .net, newsql
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
CodeFest 2014. Каплуновский Б. — Использование асинхронного I/O для снижения ...
Sivko
Sivko
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
Мониторинг в высоконагруженных (и не только) проектах: сравнительный анализ с...
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
KAZOOMEETUP MOSCOW 2015. Михаил Родионов. Введение в KAZOO (KAZOO 101)
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
DUMP-2015 «Микросервисная архитектура в теории и на практике» Иван Бурмистров...
Обзор перспективных баз данных для highload / Юрий Насретдинов
Обзор перспективных баз данных для highload / Юрий Насретдинов
2014.12.23 Александр Андреев, Parallels
2014.12.23 Александр Андреев, Parallels
Сергей Аверин "Распространенные ошибки применения баз данных"
Сергей Аверин "Распространенные ошибки применения баз данных"
Breaking logs
Breaking logs
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
«Микросервисы наносят ответный удар!» Олег Чуркин, Rambler&Co
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
CodeFest 2014. Сибирев А. — Управление инфраструктурой под Cocaine
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Jenkins 2.0: Организуем тестирование в составе Continuous Delivery
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Anton Tsitou "Designing hybrid Go/PHP applications using RoadRunner"
Highload2009 Rybak Badoo Os
Highload2009 Rybak Badoo Os
dotnext version of "Tarantool, .net, newsql"
dotnext version of "Tarantool, .net, newsql"
Async Python
Async Python
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Путь от монолита на PHP к микросервисам на Scala / Денис Иванов (2GIS)
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
Сетевой инженер 2.0. Что нужно знать о программируемости в корпоративной сети?
More from Sergey Xek
Формирование технической команды на старте
Формирование технической команды на старте
Sergey Xek
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
Sergey Xek
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL
Sergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Sergey Xek
Mysql+handlersocket=nosql
Mysql+handlersocket=nosql
Sergey Xek
Не все базы данных одинаково полезны
Не все базы данных одинаково полезны
Sergey Xek
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Sergey Xek
Не все базы данных одинаково полезны
Не все базы данных одинаково полезны
Sergey Xek
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Sergey Xek
Pconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяны
Sergey Xek
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Sergey Xek
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Sergey Xek
More from Sergey Xek
(13)
Формирование технической команды на старте
Формирование технической команды на старте
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
То, что вы хотели знать о HandlerSocket, но не смогли нагуглить
MySQL+HandlerSocket=NoSQL
MySQL+HandlerSocket=NoSQL
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Mysql+handlersocket=nosql
Mysql+handlersocket=nosql
Не все базы данных одинаково полезны
Не все базы данных одинаково полезны
Распространенные ошибки применения баз данных
Распространенные ошибки применения баз данных
Не все базы данных одинаково полезны
Не все базы данных одинаково полезны
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Badoo Desktop: оптимизация приложения на миллион юзеров онлайн
Pconnect: граната в руках обезьяны
Pconnect: граната в руках обезьяны
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Mind map от «Полмиллиона юзеров в онлайне без падений: оптимизация высокона...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Полмиллиона юзеров в онлайне без падений: оптимизация высоконагруженного se...
Путь к Go на конкретном примере
1.
New Generation Data
Protection Powered by Acronis AnyData Technology Путь к Go на конкретном примере Аверин Сергей, Acronis
2.
©2016 2 в цифрах 5
миллионов Более 5 млн обычных людей доверяют компании хранить свои личные данные 500 000 Число корпоративных заказчиков из разных отраслей экономики 30 000 Обширная экосистема из 30 000 бизнес-партнеров, среди которых 300 — ОЕМ-партнеры 150 стран Продукты компании переведены на 18 языков, пользуются ими в 150 странах мира 750 человек 750 сотрудников, 23 офиса по всему миру, среди сотрудников компании более 350 инженеров высшего класса 45 наград Авторитетные издания не раз признавали продукты компании лучшими на рынке Домашние пользователи Корпоративные клиенты Партнеры География Сотрудники Признание
3.
Нужен микросервис для
хранения и обновления инфы об инфраструктуре
4.
©2016 4 Python-way 1) Хотим
python 3.5, async/await, asyncio 2) Все это должно работать с AMQP (RabbitMQ) 3) Должна быть поддержка MySQL, PostgreSQL, MSSQL и SQlite 4) Основной костяк людей хорошо знает Tornado framework
5.
©2016 5 Python-way Tornado framework
6.
©2016 6 Python-way Tornado framework −
Нет поддержки async/await
7.
©2016 7 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам
8.
©2016 8 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам − Сложные синхронные процедуры (вычисления) тормозят единственный тред
9.
©2016 9 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам − Сложные синхронные процедуры (вычисления) тормозят единственный тред + Есть стандартная библиотека AMQP-клиента
10.
©2016 10 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам − Сложные синхронные процедуры (вычисления) тормозят единственный тред + Есть стандартная библиотека AMQP-клиента
11.
©2016 11 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам − Сложные синхронные процедуры (вычисления) тормозят единственный тред + Есть стандартная библиотека AMQP-клиента
12.
©2016 12 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам − Сложные синхронные процедуры (вычисления) тормозят единственный тред + Есть стандартная библиотека AMQP-клиента
13.
©2016 13 Python-way Tornado framework −
Нет поддержки async/await − Нет масштабирования по тредам/процессам − Сложные синхронные процедуры (вычисления) тормозят единственный тред + Есть стандартная библиотека AMQP-клиента
14.
©2016 14 Python-way
15.
©2016 15 Python-way
16.
©2016 16 Python-way: Тесты
RPS На одном Macbook Pro 15”: RabbitMQ, клиент, сервер 100 000 запросов Сервер: 1 процесс, 1 воркер-тред, QOS=1, 1 коннект к базе 223 RPS
17.
©2016 17 Python-way: Тесты
RPS На одном Macbook Pro 15”: RabbitMQ, клиент, сервер 100 000 запросов Сервер: 1 процесс, 1 воркер-тред, QOS=1, 1 коннект к базе 223 RPS 1 процесс, 32 воркер-треда, QOS=32, 16 коннектов к базе 301 RPS
18.
©2016 18 Python-way …почему так
мало?
19.
©2016 19 Python-way …почему так
мало? • Выключаем всякие special фичи AMQP
20.
©2016 20 Python-way …почему так
мало? • Выключаем всякие special фичи AMQP • А БД-то синхронная!
21.
©2016 21 Python-way …почему так
мало? • Выключаем всякие special фичи AMQP • А БД-то синхронная! Async Postgres client, пока, SQLAlchemy…
22.
©2016 22 Python-way …почему так
мало? • Выключаем всякие special фичи AMQP • А БД-то синхронная! Async Postgres client, пока, SQLAlchemy… • перспектива с поддержкой async MySQL, MSSQL и SQlite
23.
©2016 23 Python-way …почему так
мало? • Выключаем всякие special фичи AMQP • А БД-то синхронная! Async Postgres client, пока, SQLAlchemy… • перспектива с поддержкой async MySQL, MSSQL и SQlite • выжимаем 585 RPS… а можно ли больше?
24.
©2016 24 Python-way Итого, плюсы: +
Известный популярный язык без сюрпризов + Код бизнес-логики приятен и понятен + Удобно валидируются и конвертятся данные, приходящие в JSON
25.
©2016 25 Python-way Итого, минусы: −
Asyncio ядро не любит долгих тупняков − Вся асинхронщина реализуется кодом на Python -> глубокий стек, трудно дебажить − Война промисов-корутин-коллбеков − Надо написать свой обвязочно-костыльный асинхронный фреймворк чтобы оно заработало
26.
©2016 26 Python-way ?
27.
©2016 27 Python-way ?…а давайте
попробуем на каком-нть другом языке?
28.
Про Go
29.
©2016 29 Go-way Что изначально
понравилось: • Простой и немногословный синтаксис • Язык заставляет делать хорошую архитектуру • Вся асинхронщина «просто работает» • Есть package-manager из коробки • Есть хорошая документация • Есть единый универсальный SQL-package
30.
©2016 30 Go-way С чем
пришлось повозиться: • Чуть более сложный маппинг структур в SQL • Не нашлось библиотеки по приведению типов (маршаллинг), пришлось написать самостоятельно • Дольше подбор существующих библиотек под задачи • Мелкие глюки отдельных библиотек, типа SQL BIT поля читаются как 0x31/0x30 • Логирование из коробки так себе
31.
©2016 31 Go-way
32.
©2016 32 Go-way
33.
©2016 33 Go-way Делаем простенький
однопоточный сервис в 1 файл. 1 горутина, AMQP QOS = 1, 1 коннект к базе 1063 RPS
34.
©2016 34 Go-way Делаем простенький
однопоточный сервис в 1 файл. 1 горутина, AMQP QOS = 1, 1 коннект к базе 1063 RPS Переписали на нормальный код, получили рабочий сервис и ~1087 RPS (и никакие оптимизации уже не помогали)
35.
©2016 35 Go-way Итого, плюсы: +
Если сравнивать с C++, то сильно проще и менее бажно + Все асинхронное и удобное из коробки + Работает быстрее Python в нашей практике, даже всего при 2 горутинах
36.
©2016 36 Go-way Итого, минусы: −
Дебажить сложнее, и не все видно − Строгая типизация (еще и машинно-зависимая) — больше мучений чем хотелось бы − Код усеивается конструкциями if (error != nil) { panic(…); } − Жаль, синтаксис весьма скуден
37.
©2016 37 Спасибо! Вопросы? Аверин Сергей twitter.com/ryba_xek s@averin.ru averin.ru/slides/ facebook.com/ryba.xek
38.
acronis.com blog.acronis.com twitter.com/acronis facebook.com/acronis New Generation Data
Protection Powered by Acronis AnyData Technology
Download now