Как добиться немедленной согласованности в архитектуре микросервисов?

Например amazon.com; они полагаются на микросервисную архитектуру, и, вероятно, заказ и оплата - это отдельные микросервисы, но когда вы оформляете заказ на amazon.com, вы, наконец, можете увидеть идентификатор и детали заказа. Если это не подход конечной согласованности, что это такое? Может 2ПК?

Обобщаю свой вопрос; что, если конечная согласованность не подходит для бизнес-транзакции (конечный пользователь должен видеть результат завершения транзакции), но отдельные микросервисы имеют значение (например, заказ и оплата), как обеспечить немедленную согласованность?


person spartacus    schedule 11.10.2017    source источник


Ответы (1)


Существует несколько методов, которые могут обеспечить межсервисные транзакции (атомарность): 2PC, транзакции Percolator и Sagas.

Транзакции перколятора имеют сериализуемый уровень изоляции. Они известны в отрасли, см. библиотеку транзакций DynamoDB от Amazon. , базу данных CockroachDB и саму систему Pecolator от Google. пошаговая визуализация транзакций Перколятора может помочь вам понять, как они работают.

Паттерн саги был описан в конце 80-х годов в сагах бумага, но стала более актуальной с появлением микросервисов. Для вдохновения прочтите доклад Применение паттерна саги.

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

person rystsov    schedule 15.10.2017