Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/apache-kafka/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache kafka 卡夫卡消费群体划分问题_Apache Kafka - Fatal编程技术网

Apache kafka 卡夫卡消费群体划分问题

Apache kafka 卡夫卡消费群体划分问题,apache-kafka,Apache Kafka,我读过卡夫卡维基,对这张图片有一些问题 对于消费者组A,C1、C2只能接收两个分区消息,如C1只能接收P0,C2只能接收P1 正如我所知,一个消费者群体映射一个主题,所以C1,C2必须有相同的主题,所以PO,P1,P2,P3有相同的主题,对吗 所以有一个矛盾,如果问题2是对的,那么消费者群体A和消费者群体B有相同的主题,所以这是关于一个消费者群体映射一个主题的矛盾 C1如何控制P0,P1消息,如果P0,P1有相同的主题,这意味着C1将接收重复消息,如果没有,C1如何控制只有一个偏移量的不同消息

我读过卡夫卡维基,对这张图片有一些问题

  • 对于消费者组A,C1、C2只能接收两个分区消息,如C1只能接收P0,C2只能接收P1

  • 正如我所知,一个消费者群体映射一个主题,所以C1,C2必须有相同的主题,所以PO,P1,P2,P3有相同的主题,对吗

  • 所以有一个矛盾,如果问题2是对的,那么消费者群体A和消费者群体B有相同的主题,所以这是关于一个消费者群体映射一个主题的矛盾

  • C1如何控制P0,P1消息,如果P0,P1有相同的主题,这意味着C1将接收重复消息,如果没有,C1如何控制只有一个偏移量的不同消息

  • 关于“所有分区都包含相同的主题,至少我是这样理解这幅图的”的问题。所以我假设,相同的主题名为“test”,然后一个生产者为该主题生成消息“Hello test”,这意味着C1、C2、C3、C4都将接收相同的消息? 对于第四个答案,C1仍然接受“Hello测试”两次

  • CG-A或CG-B能否收到不同的主题信息

  • 我没有看到消费者群体的任何优势,“有时候,从卡夫卡读取消息的逻辑并不关心处理消息偏移量,它只需要数据。因此,提供高级消费者从卡夫卡中提取消费事件的大部分细节。”从卡夫卡的wiki中, 你能给我举一个关于这张图片的消费者群体的例子吗,比如你说CG-A在报告任务,CG-B在监控

  • 这是否意味着来自一个名为“测试”的主题的P0、P1、P2、P3将发送不同的消息?但我关注卡夫卡的维基,比如:

    a。bin/kafka-server-start.sh config/server.properties

    b。bin/kafka-topics.sh--create--zookeeper localhost:2181--replication factor 1--partitions 3--topic test//partitions为3

    c。bin/kafka-console-producer.sh--代理列表localhost:9092--主题测试

    d。bin/kafka-console-consumer.sh——zookeeper本地主机:2181——主题测试——从头开始

    然后我在生产者中键入一些内容,然后消费者将显示这些消息

  • 那么这三个分区如何具有不同的消息呢

  • 最后,如何使用命令行模拟此图片?创建消费组,然后为其分配一些消费者,然后生成消息,我可以监视分区和消费者之间的映射关系,以及从哪个分区发送的消息吗
  • 非常感谢

  • 在图中,使用者组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还具有复制功能,但这与分区的概念不同。图中未显示复制,但这意味着服务器1上会有类似于[P0\u leader,P1\u follower,P2\u follower,P3\u leader]的内容,而服务器2上会有[P0\u follower,P1\u leader,P2\u leader,P3\u follower]的内容


  • 下面是关于分区和使用者组id的一些测试结果

    Properties props = new Properties();
          //set all other properties as required
          props.put("group.id", "ConsumerGroup1");
          props.put("max.poll.records", "1");
          KafkaConsumer<String, String> consumer = new KafkaConsumer<String, String>(props);
    
    Properties=newproperties();
    //根据需要设置所有其他属性
    props.put(“group.id”、“ConsumerGroup1”);
    道具放置(“最大投票记录”,“1”);
    卡夫卡消费者=新卡夫卡消费者(道具);
    
    consumer.group id用于对生成的数据进行负载平衡 (如果每个消费者的group.id不同,则每个消费者将获得数据副本

    如果partition=1,total consumers count=2,则两个活动的使用者中只有一个将获得数据

    如果partition=2且total consumers count=2,则两个活动使用者中的每一个都会均匀地获取数据

    如果partition=3,total consumers count=2,则两个活动使用者中的每一个都将获得数据。一个使用者从2个分区获取数据,另一个使用者从1个分区获取数据


    如果partition=3,total consumers count=3,则三个活动使用者中的每一个都会均匀地获取数据

    谢谢你的回答。我仍然对“所有分区都包含相同的主题”有疑问,至少我是这样理解这幅图的。所以我假设,同一个主题名为“test”,然后一个生产者为这个主题生成消息“Hello test”,这意味着C1、C2、C3、C4都将收到相同的消息?对于第四个答案,C1仍然接受“Hello测试”两次?是出了什么问题,还是我误解了什么?再次感谢你的时间,这些问题让我担心了这么久,我昨天开始了卡夫卡。如果你有一个主题“测试”和produ