Кафка Mirror Maker место исполнения - PullRequest
0 голосов
/ 12 марта 2019

Существуют лучшие практики, которые рекомендуют запускать Mirror Maker на целевом кластере.https://community.hortonworks.com/articles/79891/kafka-mirror-maker-best-practices.html

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

Если производительность из-за несколькихмногопоточность - это вопрос, будет ли целесообразно использовать несколько производителей (по одному на каждого потребителя) для репликации данных (с помощью специального процесса репликации)?Кто-нибудь знает, почему Mirror Maker разделяет один источник среди всех потребителей?

Мой пример использования - репликация данных из нескольких исходных кластеров (~ 10) в один целевой кластер.Я бы предпочел запустить процесс репликации в исходном кластере, чтобы избежать многих процессов репликации (каждый для одного источника) в целевом кластере.

Советы и предложения по этой теме приветствуются.

1 Ответ

0 голосов
/ 07 июня 2019

Я также поставил вопрос в списке рассылки Apache Kafka:
https://lists.apache.org/thread.html/06a3c3ec10e4c44695ad0536240450919843824fab206ae3f390a7b8@%3Cusers.kafka.apache.org%3E

Я хотел бы процитировать несколько разумных ответов здесь:

Франц, вы можете запустить ММ на исходном или целевом кластере или рядом с ним, но это более эффективно рядом с целью, потому что это минимизирует производителя задержка. Если задержка высока, poducers будет блокировать ожидание ACK для записи в полете, что снижает пропускную способность.

Я рекомендую запускать MM рядом с целевым кластером, но не обязательно на одни и те же машины, потому что часто узлы Kafka относительно дороги, с массивами SSD и огромной пропускной способностью ввода-вывода и т. д., что не является необходимым для ММ. ​​

Ryanne

и

Привет, Франц!

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

Это также некоторая вероятность ошибок даже при хорошем программном обеспечении. Итак, если мы поместите MM на исходный кластер, и сеть будет разделена, потребители могут (теоретически) продолжать читать сообщения из исходного кластера и зафиксировать их даже без запросов от целевого кластера (один из возможные ошибки). Таким образом, вы получите потерянные сообщения на производитель после исправления сети.

С другой стороны, если мы поместим MM в целевой кластер и сеть расколется, ничего плохого не случится. ММ не сможет получить данные из исходный кластер, поэтому ваши данные не будут повреждены даже в случае ошибок.

Толя

...