Публикация на kafka успешной и обновление базы данных не удается, как поддерживать согласованность в распределенной системе - PullRequest
0 голосов
/ 31 марта 2020

Я работаю в распределенной системе (eCommerce) и использую события Kafka для связи между системами. Таким образом, согласно нашей бизнес-логике c, мы сначала публикуем в Kafka topi c (что успешно), а после этого мы обновляем базу данных oracle. Иногда это обновление в базе данных дает сбой, как поддерживать согласованность состояний между системами? Поскольку другая система обновит свою базу данных с новым статусом заказа, но производитель будет иметь только старый статус, так как уменьшить это несоответствие?

1 Ответ

0 голосов
/ 31 марта 2020

То, что вы используете, на самом деле называется двойным письмом, которое может вызвать постоянную несогласованность из-за многих уродливых проблем, таких как частичные сбои, такие как ваш случай, состояние расы ...

Подход, который я считаю довольно интересным, заключается в использовании change data capture чтобы синхронизировать различные системы данных c, которые друг с другом.

Настоятельно рекомендую этот доклад, блог Мартина Клеппмана о том, как использовать этот вид архитектуры:

  1. Использование журналов для построения solid инфраструктуры данных
  2. Синхронизация c: от транзакций к потокам
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...