nikchar
@nikchar
PHP

Как синхронизировать данные между одинаковыми микросервисами?

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

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

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

Подскажите, пожалуйста, куда копать.
  • Вопрос задан
  • 2144 просмотра
Решения вопроса 1
nikchar
@nikchar Автор вопроса
PHP
Все, разобрался. Я неверно себе представлял отличия между микросервисом и инстансом микросервиса.

Все инстансы одного микросервиса в большинстве случаев смотрят в одну БД (или replica set), а уже сама БД масштабируется отдельно от инстансов сервиса.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
@dinegnet
Сами микросервисы не хранят данные.
У них общая БД.
Или у них внутренняя синхронизация по шине сообщений.
Или, что более практично - общая БД, затем синхронизация изменений по шине сообщений.
Ответ написан
@akonovalov
Программист на компьютере
Видимо, куча "одинаковых" микросервисов - это инстансы одного и того же микросервиса. Всю кучу можно спрятать за прокси-сервис (nginx, HAProxy, etc.) или свой же самодельный проксирующе-балансирующий микросервис (раз уж сейчас тренд такой и все так прутся по микросервисам).

Для синхронизации всего этого зоопарка можно пользовать брокер сообщений, например RabbitMQ.

P.S. Настоятельно рекомендую ознакомиться вот с этим манифестом
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы