@spbpython

Страница 631 из 785
Null
15.01.2018
20:12:16
У меня одногруппник был с такой фамилией...

Danil
15.01.2018
20:12:17
Привет. Нужен совет. Устроился на работу. Здесь используют селери и называют это микросервисами. Микросервис -- селери воркер. Для общения с микросервисом юзают send_task (http://docs.celeryproject.org/en/latest/reference/celery.html#celery.Celery.send_task), либо broadcast сообщения (http://docs.celeryproject.org/en/latest/userguide/routing.html#broadcast). Меня жутко коробит, что инструмент для task queue используют как средство месседжинга. Сегодня пытался отстоять использование просто 'kombu', но не смог найти аргументов против наличия тулинга вокруг селери (типа flower). Вопрос: нормально ли использовать селери (очередь задач) как основу для микросервисов? Это вообще законно?
Данная архитуктура легко подходит под под определения воркеров в celery. Для чего тогда требуется затаскивать в проекты дополнительную либу, если у команды уже есть проверенный стек, которому они доверяют, возможно есть уже мониторинг, возможно уже есть моки для тестов и т.п.?

Vadim
15.01.2018
20:12:45
настырность скорее)

Google
Vadim
15.01.2018
20:13:05
и все равно это неправильно

Alexander
15.01.2018
20:25:30
Данная архитуктура легко подходит под под определения воркеров в celery. Для чего тогда требуется затаскивать в проекты дополнительную либу, если у команды уже есть проверенный стек, которому они доверяют, возможно есть уже мониторинг, возможно уже есть моки для тестов и т.п.?
Не, есть только прототип, который грозит вырасти в реализацию. Система с нуля создаётся. Идея тупо не называть это микросервисами мне нравится, спасибо! Только воркеры эти тоже какие-то неполноценные. Их код распихан в отдельных репозиториях, а вызов тасок происходит по их имени (введен специальный нейминг).

а база одна на все микросервисы?
Не, у каждого набора тасок ("микросервиса") своя.

Danil
15.01.2018
20:27:33
Не, у каждого набора тасок ("микросервиса") своя.
А деплоятся по отдельности или все сразу?

Sergey
15.01.2018
20:29:04
и все равно это неправильно
Может у него самого спросить?

Alexander
15.01.2018
20:29:38
А деплоятся по отдельности или все сразу?
Пока не продуман деплой :) Это хороший вопрос как раз стоял сейчас на остановке и думал

Vadim
15.01.2018
20:29:46
Может у него самого спросить?
меня нет ни в фб ни в твиттере

и не предвидится

Sergey
15.01.2018
20:31:23
меня нет ни в фб ни в твиттере
А зря, твиттер — ❤️

Danil
15.01.2018
20:31:27
Пока не продуман деплой :) Это хороший вопрос как раз стоял сейчас на остановке и думал
В общем пока не понятно почему это микросервисы, видимо слово знакомое для всех. С единой базой раздельный речной деплой поддержать будет сложно, cd еще сложнее. Команда постоянно должна думать про обратную совместимость схемы данных либо про паралельный деплой. Степень изолированности хромает кмк.

и не предвидится
если уж ты меняешь направление своей деятельности, то и информационные источники стоит сменить ) хорошо что хоть до телеграма добрался )

Google
Alexander
15.01.2018
20:39:51
В общем пока не понятно почему это микросервисы, видимо слово знакомое для всех. С единой базой раздельный речной деплой поддержать будет сложно, cd еще сложнее. Команда постоянно должна думать про обратную совместимость схемы данных либо про паралельный деплой. Степень изолированности хромает кмк.
База и репозиторий у каждого набора тасок ("микросервиса") своя. Спасибо за ответы! Не ожидал! Есть гейтвей с http ручками, который дёргает селери таски по имени. Сами таски запускаются как селери воркеры со своими базюльками, иногда эмитят ещё бродкаст сообщения. Сейчас думаю может эти наборы тасок ("микросервисы") попихать в питон пакеты, заливать на свой pypi, а в гейтвее добавить в requirements.txt. Тогда гейт и конкретный селери воркер нужно будет деплоить вместе.

Aleksey
15.01.2018
20:41:46
Теперь можно дать ответ. Единая БД врядли является уместной в использовании микросервисной архитектуры.
Мне кажется, что важно именно наличие связей между сущностями в БД, если они есть в самой БД, то про какие сервисы вообще речь ) Если просто используется одна СУБД, то почему и нет.

Alexander
15.01.2018
20:42:57
Danil
15.01.2018
20:49:11
Мне кажется, что важно именно наличие связей между сущностями в БД, если они есть в самой БД, то про какие сервисы вообще речь ) Если просто используется одна СУБД, то почему и нет.
Да согласен, подход с бд норм. Иногда можно даже добавить избыточность чтобы распилить на сервисы. Трейдоф в принципе простой - появляется очередь на обновление

Спасибо за ответы!
Про версионирование api не забудьте, хотя лучше его не делать и меня во всех репах сразу (работает но не для всех)

Stepan
15.01.2018
21:29:08
tfw когда кто-то переживают о терминологии при использовании celery, а ты собираешься дергать celery из node.js. как я низко пал ?

Самое стремное, что как раз дергать celery из ноды не проблема, а вот либы которая позволяет писать celery воркеры на ноде нет ? Ох уж эти инструменты существующие только для одного языка... Благо простую очередь можно наколбасить на RPOP/BRPOP, а если не лень то на RPOPLPUSH ? Но в такие моменты задумываешься, что свернул куда-то не туда...

Некто
15.01.2018
21:35:33
мне интересно, а когда таска это селери воркер, то сколько там тредов-воркеров на один менеджер?

или эта микросервесность работает по принципу 1 менеджер-1тред под ним?

Stepan
15.01.2018
21:36:34
мне интересно, а когда таска это селери воркер, то сколько там тредов-воркеров на один менеджер?
как настроешь celery воркер, там по дефолту prefork который разгребает зарегистрированные таски из очереди

Некто
15.01.2018
21:36:46
мне интересно про историю выше

Stepan
15.01.2018
21:36:46
можно сделать thread pool или gevent

Некто
15.01.2018
21:36:49
микросервисную

я то в курсе )

Google
Stepan
15.01.2018
21:36:57
ааа

Некто
15.01.2018
21:43:07
а есть какое-то оправдание микросервисам в проекте?

разные языки к примеру?)

я просто почему-то сразу вспоминаю хайлоуд 2016 года

очень много докладов про микросервисы мозга было

?

Некто
15.01.2018
21:46:08
https://github.com/mher/node-celery

?

Stepan
15.01.2018
21:46:17
https://github.com/mher/node-celery
там только клиент

Некто
15.01.2018
21:46:24
?

Stepan
15.01.2018
21:47:12
Так самое время такую либу написать?
я вот подумываю, но пока не уверен. если бы у нас был amqp, то было бы совсем просто воткнуться, но я не уверен что там в кишках у redis бэкэнда у celery, может подскажет кто?

Некто
15.01.2018
21:47:59
ты всегда можешь просто вызывать py общающийся с celery из js,

amqp не редис

у редиса свой протокол

amqp это rabbit

в питоне в любом случае

kombu

и там и там

Google
Некто
15.01.2018
21:48:45
с редисом будут проблемы, если нужен будет кластер

комбу еще в октябре кластер редиса не поддерживали

может конечно уже запилили

но в октябре 2017 не было

Stepan
15.01.2018
21:49:29
ты всегда можешь просто вызывать py общающийся с celery из js,
ну да это как раз не проблема, просто как-то не симметрично получается, что в ноду надо одним макаром пихать, а из ноды другим (celery)

Dmitry
15.01.2018
21:49:44
Редис все же не самое лучшее решение для организации очередей. Имхо рэббит лучше, ибо он для этого создан практически

Некто
15.01.2018
21:50:03
поддерживаю

Dmitry
15.01.2018
21:50:05
И на нем можно сделать хоть свою селери

Я реализовывал микросервис , в который через рэббит прилетали таски

Некто
15.01.2018
21:50:47
редис обычно идет когда "давайте не плодить зоопарк" и уже используется для кэша какого-нибудь

Dmitry
15.01.2018
21:50:48
Очень удобно, в том числе с использованием приоритетов

Stepan
15.01.2018
21:50:48
У redis с кластером и без kombu не все слава богу, например пабсаб там тупо зеркалируется вместо того, чтобы как-то по умному ходить.

Dmitry
15.01.2018
21:51:05
И удачи сделать приоритеты через редис

Некто
15.01.2018
21:51:13
угу, там правда есть sentinel

но это не кластер всё же

Stepan
15.01.2018
21:51:31
редис обычно идет когда "давайте не плодить зоопарк" и уже используется для кэша какого-нибудь
Так и есть. В этом и прелесть celery, что нафигачил на редисе, а потом перенес на amqp когда припекло )

Dmitry
15.01.2018
21:52:19
Так рэббит ставится не сложнее редиса, зачем поднимать селери на редисе - не понятно

Некто
15.01.2018
21:52:33
тут дело не в поднятии

дело потом в поддержке

Stepan
15.01.2018
21:52:47
ага

Google
Некто
15.01.2018
21:52:48
если команда опсов упрется

или не знакома со стеком, тут как бы поднимай не поднимай)

Dmitry
15.01.2018
21:53:33
Вот не было пробелом с рэббитом, но и нагрузка была не 10к в секунду

Alexander
15.01.2018
21:53:59
мне интересно, а когда таска это селери воркер, то сколько там тредов-воркеров на один менеджер?
Не, один "микросервис" -- не одна таска, но их набор, работающий с определенным набором сущностей. На данный используются дефолтные настройки селери воркера при запуске "микросервиса".

Alexander
15.01.2018
21:54:40
Некто
15.01.2018
21:54:43
и каждый воркер слушает свою очередь отдельную? и сколько сейчас микросервисов?

а есть бенчи какие-то что такое дробление на микросервисы в плюс? просто честно говоря не понятно чем микросервис - селери-воркер лучше нормально распределенных пулов, к примеру, + что с отказоусточивостью, как воркеры переключаются или лег хост с микросервисами такими или вы держите всегда дублирующий воркер на ту же очередь?

Alexander
15.01.2018
21:56:42
и каждый воркер слушает свою очередь отдельную? и сколько сейчас микросервисов?
Да, каждый каждый воркер слушает свою очередь. Некоторые по две, если заинтересованы в бродкаст сообщениях

Некто
15.01.2018
21:56:57
а как воркеры поднимаются при стаке?

забился менеджер сообщений

воркер загнулся

мне просто интересно, у нас просто регулярно возникает раз в пару месяцев такая проблема

при пиковых нагрузках

но у нас группа воркеров слушает определенные пулы

поэтому не критично

Alexander
15.01.2018
21:58:26
а как воркеры поднимаются при стаке?
Не знаю, я с селери неделю назад познакомился. Может flower мониторить позволяет?

Некто
15.01.2018
21:59:05
что-то мониторить веб интерфейс позволяет до момента пока за 5 минут лежачего сервиса не нагибают раком всю команду ?

у нас конечно не так жестко

Alexander
15.01.2018
22:00:20
У flower http api есть

Некто
15.01.2018
22:00:23
flower обычно используем для отслеживания пульса - где чего застревало, какое время проблемное для воркеров, не дохнут ли какие-то машины по очередям, но только как режим диагностики, смотреть туда все равно никто постоянно не будет

да, оно кстати очень веселое

Страница 631 из 785