Как кластеризовать коммутатор в Apache Pulsar без дубликатов данных - PullRequest
0 голосов
/ 20 апреля 2020

У меня есть сценарий использования в Apache Потребитель Pulsar. Есть Производитель, который создает сообщения для разных двух кластеров (Кластер A и Кластер B) и к соответствующим темам с одними и теми же данными одновременно как сообщение (JSON является произведенным сообщением).

Здесь A - первичный кластер, а B - как вторичный кластер.

Что я пытаюсь

Я пытаюсь использовать данные, а затем обрабатывать их в файл CSV, а затем в таблицу на ежедневной основе. Это должно быть сделано на основе доступность кластера.

Проблема:

Когда первичный кластер недоступен и / или не опрашивает сообщение на первичный (A), тогда мне нужно переключиться на вторичный ( B). Но если я получаю из Secondary, то я получу данные с начала, потому что между кластерами нет общего подтверждения. Из-за этого у нас возникнет проблема избыточности данных.

Предположим, если я запустил оба в то же время и хранение только первичных данных и вторичных данных следует учитывать только при сбое первичного сервера в ожидании определенного интервала времени. В этом случае возможна потеря данных, потому что я жду определенного интервала времени.

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

Я разработал два пользовательских кода для использования данных: один для A, а другой для B.

1 Ответ

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

Вам следует взглянуть на Apache Географическая репликация Pulsar с реплицированными подписками:

https://pulsar.apache.org/docs/en/administration-geo/#replicated -подписки

Эта функция поддерживает подписки между двумя кластеры в син c. Когда сообщения подтверждаются в кластере A, это подтверждение обновляется в кластере B. Существует небольшая задержка, поэтому возможно получить дубликаты сообщений, но это устраняет проблему необходимости начинать чтение с начала topi c.

...