Size: a a a

Ваdоо PHP Мееtuр

2021 February 10

AT

Anton Titov in Ваdоо PHP Мееtuр
вот например как мы сделали - https://github.com/temporalio/samples-php/blob/master/app/src/AsyncClosure/AsyncGreetingWorkflow.php#L35 запуск двух асинхронных корутин на пхп с гарантией выполнения (либо перехвата throwable)
источник

AT

Anton Titov in Ваdоо PHP Мееtuр
работает через разворачивание стейта через event sourcing, так что даже если пхп умрет то все будет ок
источник

M

Malaf in Ваdоо PHP Мееtuр
Michael Gorishnyi
Проблема в том, что реббит и является тем местом, которое поможет с ассинхронностью. И вот оно падает. Да, можно через базу. Можно сразу из базы читать, если кончьюмеры в этом же сервисе
зависит больше от требований предъявляемых к консьюмеру, часто подключение должно быть простым и максимально изолировано от внтуренних особенностей, структуры БД, тогда вариант вычитывать из базы не подходит, плюс Rabiit позволяют сильно гибче настраивать логику доставки и фильтрации сообщений + масштабирование
источник

M

Malaf in Ваdоо PHP Мееtuр
часто консьюмеры могут быть на третей стороне и здесь rabbit сильно проще будет
источник

M

Malaf in Ваdоо PHP Мееtuр
it depends в общем
источник

w

who is john galt in Ваdоо PHP Мееtuр
Michael Gorishnyi
Умер пхп - когда закончил обработку запроса. В обработку запроса - входит так же отправка сообщения в реббит
всё равно не понятна проблема. отправил сообщение в рэббит - умер. что не так?
источник

MG

Michael Gorishnyi in Ваdоо PHP Мееtuр
who is john galt
всё равно не понятна проблема. отправил сообщение в рэббит - умер. что не так?
Отправка сообщения - не происходит. Коннект к реббиту по несколько секунд
источник

MG

Michael Gorishnyi in Ваdоо PHP Мееtuр
Это не постоянная проблема, но на пиках была
источник

MG

Michael Gorishnyi in Ваdоо PHP Мееtuр
Anton Titov
вот например как мы сделали - https://github.com/temporalio/samples-php/blob/master/app/src/AsyncClosure/AsyncGreetingWorkflow.php#L35 запуск двух асинхронных корутин на пхп с гарантией выполнения (либо перехвата throwable)
Почитаю, спасибо
источник

w

who is john galt in Ваdоо PHP Мееtuр
как выше писали сохранять в базу или редис. затем можно кроном вычитывать и отправлять сообщения пачками в ребит
источник

MG

Michael Gorishnyi in Ваdоо PHP Мееtuр
Как и говорил - редис загнулся при таких нагрузках
источник

MG

Michael Gorishnyi in Ваdоо PHP Мееtuр
Про базу подумаю
источник

w

who is john galt in Ваdоо PHP Мееtuр
не уверен но чисто интуитивно больше времени тратится на коннект чем на отправку сообщения в рэбит. значит нужно уменшить количество коннектов
источник

F

Fogr in Ваdоо PHP Мееtuр
who is john galt
как выше писали сохранять в базу или редис. затем можно кроном вычитывать и отправлять сообщения пачками в ребит
А зачем реббит, если уже записали в базу? Можно уже сразу очередь на базе оставить
источник

P

Pavel in Ваdоо PHP Мееtuр
Fogr
А зачем реббит, если уже записали в базу? Можно уже сразу очередь на базе оставить
Так а как же микросервисная архитектура?

Шарить базу чёт не очень
источник

P

Pavel in Ваdоо PHP Мееtuр
Michael Gorishnyi
Как и говорил - редис загнулся при таких нагрузках
Можно набросить? Редис он как бы очень быстрый. Обычно даёт больше производительности на ядро чем тот же постгрес в простых операциях.
Может вы редис не верно приготовили?
источник

F

Fogr in Ваdоо PHP Мееtuр
Pavel
Так а как же микросервисная архитектура?

Шарить базу чёт не очень
Какая разница, база или ещё какое-то хранилище?
Тут главное права разграничить
источник

F

Fogr in Ваdоо PHP Мееtuр
По проблеме топик стартера
Что гугл говорит?
Я вот первое что нагуглил, но правда не вчитывался
https://tech.trivago.com/2017/01/25/learn-redis-the-hard-way-in-production/
источник

DG

Dmitry Guzun in Ваdоо PHP Мееtuр
@gorishnyi можно попробовать через pfsockopen коннект открыть для продюсера, тогда по идее будет персистентный коннект между реквестами, но это только в теории
источник

DG

Dmitry Guzun in Ваdоо PHP Мееtuр
Но тут не стоит забывать про gracefullshutdown
источник