
我阅读了 Kafka wiki,对这张图片有一些问题。
对于Consumer Group A,C1,C2,只能接收两个partition消息,像C1只接收P0,C2只接收P1?
据我所知,一个Consumer Group映射一个Topic,所以C1、C2的Topic一定是一样的,所以PO、P1、P2、P3的Topic也是一样的,对吗?
所以有一个矛盾,如果问题2是对的,那么消费者组A和消费者组B有相同的主题,所以一个消费者组映射一个主题的矛盾。
C1如何控制P0,P1消息,如果P0,P1有相同的topic,就意味着C1会收到重复的消息,如果不是,C1如何控制只有一个偏移量的不同消息?
关于“所有分区都包含相同的主题,至少我是这样解释这张图片的”的问题。所以我假设,同一个主题名为“test”,然后一个生产者为这个主题生成消息“Hello test”,这意味着 C1 、C2、C3、C4都会收到同样的消息吗?对于第四个答案,C1 仍然收到两次“Hello test”?
CG-A 或 CG-B 能收到不同主题的消息吗?
我没有看到 Consumer Group 的任何优势,“有时从 Kafka 读取消息的逻辑并不关心处理消息偏移量,它只需要数据。因此提供高级消费者来抽象大部分细节消费来自 Kafka 的事件。” 来自 Kafka 的 wiki,你能给我一个关于这张图片的消费者组的例子,比如你种子 CG-A 正在报告任务,而 CG-B 正在监控?
这是否意味着来自一个名为“test”的主题的 P0、P1、P2、P3 会发送不同的消息?但我关注了 Kafka 的 wiki,比如:
一种。bin/kafka-server-start.sh 配置/server.properties
湾 bin/kafka-topics.sh --create --zookeeper localhost:2181 --replication-factor 1 --partitions 3 --topic test //分区为3
C。bin/kafka-console-producer.sh --broker-list localhost:9092 --topic 测试
d. bin/kafka-console-consumer.sh --zookeeper localhost:2181 --topic test --from-beginning
然后我在生产者中输入一些东西,然后消费者会显示这些信息?
那么这三个分区怎么会有不同的信息呢?
非常感谢
在图中,消费者组 A 和消费者组 B 都读取了所有 4 个分区。C1->[P0,P3], C2->[P1,P2] 让我们想象一下 C1 有问题,这个消费者终止了。然后 C2 将接管剩余的两个分区,映射将变为 C2->[P0,P1,P2,P3] 假设您解决了问题,重新启动 C1 并在同一组中添加第三个消费者 C3。然后你会有一个像 C1->[P0], C2->[P1,P2], C3->[P3] 这样的映射
主题的概念与分区有些不同,可以是一个消费者组消费的主题列表,但为了简化起见,图片可能意味着仅显示两个独立消费者组消费的一个主题。我们可以想象 CG-A 正在对消息做一些简单的事情,并且可以只用两个实例来管理它,而 CG-B 进行更复杂的处理并且需要更多的并行性。它们也可能有不同的时间限制,因此 CG-B 可能更多地是实时消费者(例如直接监控),而 CG-A 可能具有较少的实时限制(例如报告服务)。所有分区都包含相同的主题,至少我是这样解释这张图片的。
毫无矛盾,Kafka 是一个多订阅者消息系统。您可以拥有任意数量的消费群体,彼此独立地消费相同的主题。
特定消息仅存在于其中一个分区中,因此不会收到重复的消息。出于冗余目的,Kafka 也具有复制功能,但这是与分区不同的概念。图中未显示复制,但这意味着您将在服务器 1 上使用 [P0_leader,P1_follower,P2_follower,P3_leader] 和在服务器 2 上使用 [P0_follower,P1_leader,P2_leader,P3_follower] 之类的内容。
| 归档时间: |
|
| 查看次数: |
2228 次 |
| 最近记录: |