Концепция Kafka для обеспечения высокой доступности хотя бы одного - PullRequest
0 голосов
/ 10 июля 2020

Я прочитал несколько инструкций относительно Kafka и того, как он работает с темами, производителями, потребителями, группами потребителей и т. Д. c, но не совсем ясно, что вам нужно делать, чтобы не потерять сообщения, и что потребители только в группах потребителей читать незавершенные сообщения. Все примеры простейшие и не дают никаких указаний

Сценарий:

Допустим, у меня есть тема A с 4 разделами P1-P4. У меня есть 2 потребителя C1 и C2, которые принадлежат к группе потребителей CG1 ... Что мне нужно делать при кодировании / настройке C1 и C2, чтобы никакие сообщения никогда не терялись, т.е. если C1 или C2 выйдет из строя / перезапустится, они должны начать читать непрочитанные сообщения (незавершенные) от P1-P4, чтобы они прибыли в Кафку. Нужно ли мне настраивать C1 и C2, чтобы узнать о P1-P4, или это делается под капотом, например, с помощью confluent-kafka-do tnet?

Спасибо!

Ответы [ 2 ]

0 голосов
/ 10 июля 2020

при сбое / перезапуске C1 или C2 они должны начать читать непрочитанные сообщения

Когда потребитель выйдет из строя и вернется, он начнет чтение с последнего смещения чтения, так что да, он будет читать только незавершенные сообщения.

(незавершенные) из P1-P4, чтобы они доходили до Kafka

Также одна вещь, которую следует учитывать при использовании более 1 раздела в топи c состоит в том, что сообщения нельзя использовать по порядку.

Подробнее об этом можно прочитать здесь: ссылка

Нужно ли мне настраивать C1 и C2, чтобы знать о P1-P4, или это делается под капотом

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

Дополнительная информация: ссылка

0 голосов
/ 10 июля 2020

Когда C1 или C2 аварийно завершает работу (или перезапускается), живой потребитель продолжает читать разделы умершего потребителя, когда де потребитель go снова оживает, разделы снова балансируются снова для потребителей.

Если ваши два (или N ... все!) потребителя вылетают (или перезапускаются), когда их go онлайн снова продолжает чтение с последней точки, где они его оставили, без потери или повторения сообщений.

https://www.oreilly.com/library/view/kafka-the-definitive/9781491936153/ch04.html

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

https://medium.com/@jhansireddy007 / how-to-parallelise- кафка-потребители-59c8b0bbc37a

Q. Что, если потребитель-B упадет? A. Kafka выполнит ребалансировку и назначит все четыре раздела потребителю-A.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...