Бэкэнд-архитектура
Событийно-ориентированный микросервис заказов/счетов
Высокомасштабируемая микросервисная архитектура, использующая доменно-ориентированный дизайн и шаблон исходящих сообщений, гарантирующая надежную доставку сообщений.
The challenge
В распределенной системе обеспечение согласованности данных между несколькими службами без использования медленных распределенных транзакций (двухфазных фиксаций) является серьезным архитектурным препятствием. Клиент сталкивался с потерей сообщений и нестабильными состояниями во время событий с высоким трафиком.
The solution
Мы перепроектировали основной поток заказов и счетов, используя архитектуру, управляемую событиями. Реализуя шаблон Transactional Outbox, мы гарантировали доставку сообщения хотя бы один раз в Kafka/RabbitMQ. Мы сделали всех потребителей идемпотентными, гарантируя, что дублирующиеся сообщения не приведут к дублированию счетов или повреждению состояния.