Изучение управления сообщениями и согласованности: полное руководство по транзакционным функциям RocketMQ

RocketMQ функционирует как система хранения сообщений, эффективно записывая передачу сообщений. Процесс отправки половинного сообщения подобен созданию записи об отправке сообщения, в то время как отправка подтверждающего сообщения обновляет эту запись. Функция проверки сообщений аналогична механизмам компенсации фоновых задач и повторных попыток.

Распределенные транзакции — относительно распространенная и сложная проблема в микросервисах. Конечно, это не неразрешимо. Если вы знакомы с распределенными транзакциями, вы должны знать такие решения, как XA, 2PC/3PC, TCC и сообщения о транзакциях.

Обмен транзакционными сообщениями — это тип распределенного транзакционного решения, и это также тема, которую мы собираемся обсудить сегодня.

Что такое транзакционные сообщения?

Целью транзакционных сообщений является достижение конечной согласованности надежных сообщений.

Как вы это понимаете? Всем будет проще понять на примере.

Это по-прежнему наш более распространенный сценарий оплаты: пользователь платит за размещение заказа, меняет статус заказа на завершенный, а затем отправляет сообщение о заказе через MQ.

Последующие услуги, такие как система начисления баллов для обновления пользовательских баллов, система логистики должна обновлять информацию о логистике заказа, система push-уведомлений должна отправлять сообщения или рекламу пользователям и т. д.

Можно сказать, что это относительно стандартная микросервисная архитектура. Различные бизнес-системы делятся по областям бизнеса. Каждая бизнес-система использует сообщения MQ для реализации разделения бизнеса заказов. Вроде в процессе проблем нет.

Но давайте посмотрим внимательнее, на этом этапе обновления заказа и отправки сообщения в системе заказов будут возникать несоответствия: