tgoop.com/Java_Iibrary/1785
Last Update:
Готовишься к собеседованиям на бэкенд?
Не пропусти эти 5 концептов системного дизайна для микросервисов
I. Saga: управляет распределёнными транзакциями без глобальной блокировки. Каждый сервис выполняет транзакцию в своей базе и публикует событие. Ошибки обрабатываются компенсирующими транзакциями. Реализуется через хореографию или оркестрацию.
II. TCC: резервирует ресурсы на этапе try, подтверждает через confirm, если все части успешны, или отменяет через cancel при ошибке. Часто используется для бронирований и платежей.
III. 2PC: координатор просит участников подготовиться; если все согласны, выполняется commit, иначе abort. Гарантирует атомарность, но синхронный, может блокировать участников и снижает доступность.
IV. Идемпотентность: проектируй операции так, чтобы повторные вызовы не изменяли результат. Используй idempotency key или дедупликацию.
V. Eventual Consistency: копии могут временно расходиться, но со временем сходятся через асинхронную репликацию или события. Подходит, когда важны масштабируемость и доступность.
