当前位置:   article > 正文

关于消息队列Kafka的一些常见问题_一个项目可以发送两个kafka topic主题吗

一个项目可以发送两个kafka topic主题吗

前沿:

          首先从整体流程介绍一下kafka的使用架构流程图(多个producer、一个topic,一个分组,三个partition、一个分组下的三个consumer):

(1)多个producer可以往一个topic发送消息,同时多个Consumer可以注册该topic,消费该数据。

(2)简单理解topic,Topic在逻辑上可以被认为是一个queue,每条消费都必须指定它的Topic,可以简单理解为必须指明把这条消息放进哪个queue里。

(3)顺序性:多个producer往topic发送数据可以是无序的,消息存储在broker里面是有序的,但是多个consuemr之间是获取消息是无序的。(kafka只能保证一个pratition里面的消息是顺序的:只有一个poartition,和一个consumer时,消息是有序的)

         具体: 多个consumers同时从这个服务器消费消息,服务器就会以消息存储的顺序向consumer分发消息。虽然服务器按顺序发布消息,但是消息是被异步的分发到各consumer(保持并发性)上,所以当消息到达时可能已经失去了原来的顺序

(4)partition与group以及consumer数量的对应关系以及匹配关系

       一个topic 可以配置几个partition,produce发送的消息分发到不同的partition中,consumer接受数据的时候是按照group来接受,kafka确保每个partition只能同一个group中的同一个consumer消费,如果想要重复消费,那么需要其他的组来消费。Zookeerper中保存这每个topic下的每个partition在每个group中消费的offset 。

     (a)一个partition下面只有一个分组(group)

                 同一消息,只会被该gruop,消费不会被重复消费;

     (b)一个partition下面多个分组时

                同一消息会被多个分组消费

以下是讨论只有一个分组的情况

     数量关系:

     1)、一个partition、多个consumer时,partition里消息都会堆积到一个broker中,导致硬盘被沾满

     2)、多个partition,一个consumer时,所有partition里的消息都会发往该consumer,如果consumer不止一个时,可能会存在有的consumer里面数据消费的多,有的消费的少;

     3)、partition数量=consuerm时,消息可以达到负载均衡。

      匹配关系,partition是如何与group对应的

          原理:Zookeerper中保存这每个topic下的每个partition在每个group中消费的offset 。新版kafka把这个offsert保存到了一个__consumer_offsert的topic下 ,这个__consumer_offsert 有50个分区,通过将group的id哈希值%50的值来确定要保存到那一个分区

     

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/2023面试高手/article/detail/142494
推荐阅读
相关标签
  

闽ICP备14008679号