Как реализовать трансляцию изменений с Кассандрой? - PullRequest
1 голос
/ 22 апреля 2020

Я использую несколько python микросервисов, которые должны использовать Cassandra в качестве своей базы данных. В духе микросервисов каждый «владеет» своими данными, но имеет право передавать данные любому желающему. Все микросервисы взаимодействуют друг с другом через kafka.

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

Вопрос в том, как лучше всего auth уведомить службу scheduler об изменениях данных. , В понедельник go я бы использовал Изменить потоки .

1 Ответ

1 голос
/ 23 апреля 2020

Cassandra не имеет готовых к использованию функций, таких как «Смена потоков» в понедельник go. Cassandra имеет Capture Data Change (CD C) , но вам нужно написать код для использования изменений, вы получите те же изменения на всех узлах, которые содержат реплики, вы не получите уведомления о данных, срок действия которых истек через TTL, и т. д. c.

Я лично реализовал бы все коммуникации через Kafka и использовал что-то вроде Kafka Connector DataStax для отправки данных в разные базы данных / таблицы (это не с открытым исходным кодом, но он бесплатен для использования с DSE и Cassandra).

...