Pull to refresh

Comments 2

Очень интересная тема. Давно хочу развиваться в сторону архитектур и распределенных систем, но чтобы в сжатой форме такого еще не находил.

А это только первый поток курса?

Статья конечно познавательная… увы но для новичков
Сразу бросается в глаза, что вы пытаетесь преподнести асинхронную модель коммуникации как серебреную пулю, которая решит все проблемы, в том числе и с масштабированием. У асинхронной модели, есть очень важный момент, который может очень сильно усложнить вашу систему. В частности eventually consistency, если коротко, когда данные в двух сервисах рассинхронизированы. Пример, user меняет свой никнейм, email, событие помещается в очередь, проходит некоторые время, сервис chat обновляет данные юзера в своем хранилище. Вроде все хорошо, но как мы проинформируем пользователя, что пользователь чата с таким именем уже существует, что обновление данных прошло удачно?? Как вариант, добавление новой очереди куда будут помещаться результат работы сервиса Chat и потом сервис User посредством нотификации будет информировать конечно пользователя (если веб то могут быть soctet-ы).
Плюс надо решать вопрос последовательного обрабатывания событий сервисом Chat (если очередь не предлагает такое решение из коробки). Пример, пользователь обновил о себе информацию, сгенерировано event1, пользователь понял что у него ошибка в имени, обновил имя, сгенерировано event2. Сервис Сhat может обработать событие event2 в первую очередь, потом event1. как результат система в невалидном состоянии, данные рассинхронизированы. Решения которые решают эту проблему из коробки, как правило дороже в разы.


Как должен вести себя сервис Chat если User поместил одно и тоже событие дважды?


Как мы видим сложность системы, накладные расходы, поддержка может увеличиться в разы. Что касается масштабируемости, то на мелких и средних проектов она вообще не актуальна, и решается оптимизацией БД, потому что, как правило БД это узкое место любого сервиса


Использовать или нет асинхроную модель? it depends
Учитываете ли вы все моменты которые она приносит в ваш проект, хватит ли у вас ресурсов, опыта команды чтобы решить эти вопросы?

Sign up to leave a comment.