Использование асинхронного обмена сообщениями для улучшения доступности¶
Снхронное взаимодействие снижает доступность¶
Каждый раз, когда сервисы общаются между собой по синхронному протоколу, снижается доступность всего приложения. С математической точки зрения доступность системной операции является произведением доступности сервисов, которые в нее вовлечены.
Пусть у нас есть сервис, который вызывает два других сервиса. Если каждый из них имеет доступность 99.5%, то все вместе они будут иметь 99.5%3=98.5%
Избавление от синхронного взаимодействия¶
Существует несколько способов избавления от синхронного взаимодействия.
- Использование асинхронных стилей взаимодействия. В идеале всё взаимодействие должно происходить в асинхронном стиле.
- Репликация данных. Сервис хранит копию (реплику) данных, которые ему нужны для обработки запросов. Чтобы поддерживать реплику в актуальном состоянии, он подписывается на события, публикуемые сервисами, которым эти данные принадлежат.
- Завершение обработки после возвращения ответа. А именно, сервис сперва делает проверку запроса с помощью данных, доступных локально, обновляет свою базу данных (в том числе пополняя таблицу OUTBOX), и возвращает ответ клиенту. Таким образом, взаимодействие с другими сервисами происходит асинхронно. Часто этот процесс реализуется в виде повествования.
Последнее обновление :
7 сентября 2022 г.
Дата создания : 25 июля 2022 г.
Дата создания : 25 июля 2022 г.