tgoop.com/microservices_arch/578
Last Update:
Есть такая теорема – BAC (Backup, Availability, Consistency), по аналогии с CAP.
Она звучит так: при резервном копировании всей системы микросервисов нельзя одновременно обеспечить и доступность, и согласованность.
Чтобы раскрыть суть, стоит посмотреть на бэкапы с позиции архитектурных компромиссов:
◼︎ Бэкапить сервисы по отдельности – но тогда при восстановлении данные могут быть несогласованными (например, один сервис сохранил событие, а другой нет)
◼︎ Согласованный бэкап – все сервисы бэкапятся одновременно, но в это время система становится недоступной для изменений
◼︎ Не делать резервных копий – сохраняются доступность и согласованность, но без бэкапов
И даже в такой, казалось бы, банальной вещи, как бэкапы для микросервисов все немного усложняется, в итоге:
◼︎ Приходится выбирать, где важнее согласованность, а где доступность (и обосновывать это)
◼︎ Выбирать стратегии под конкретные сервисы, например, где нужна строгая согласованность (вроде платежей) - кооринированные бэкапы, а где согласованность не так критична, вроде ленты новостей, условных лайков или статитики просмотров, – индивидуальные бэкапи + реплей событий.
Поделитесь в комментариях, как бэкапите решения на MSA, с какими проблемами сталкиваетесь, как решаете
Почитать подробнее тут: https://design.inf.usi.ch/sites/default/files/biblio/bac-theorem.pdf
BY Микросервисы / распределенные системы
Share with your friend now:
tgoop.com/microservices_arch/578