kafka的相关术语

这里将会对包括kafka基本架构以及消费者、生产者API涉及的术语进行说明。了解这些术语有助于更深入理解kafka。

  1. Kafka相关术语

broker

topic

stream

partition

offset

producer

consumer

consumer group

要了解这些术语,我们先看下kafka整个消息处理过程:

https://img-blog.csdnimg.cn/20181227230827806

https://img-blog.csdn.net/20180612175717588?watermark/2/text/aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3UwMTAzMjUxOTM=/font/5a6L5L2T/fontsize/400/fill/I0JBQkFCMA==/dissolve/70

partitioned data publication : 分区数据发布.

Ordered subscription : 订购,订阅

kafka整个消息处理过程

消息由producer产生,消息按照topic归类,并发送到broker中,broker中保存了一个或多个topic的消息,consumer通过订阅一组topic的消息,通过持续的pull操作从broker获取消息,并进行后续的消息处理。

  1. broker 

一台kafka服务器就是一个broker。一个集群由多个broker组成。一个broker可以容纳多个topic

    2、topic 每条发送到broker的消息都有一个类别,这个类别称为topic

   3、partition 

分区,一个topic的消息实际上由多个队列存储的,一个队列在kafka上称为一个分区。

为了实现扩展性,一个非常大的topic可以分布到多个broker(即服务器)上,一个topic可以分为多个partition,每个partition是一个有序的队列。partition中的每条消息都会被分配一个有序的id(offset)。kafka只保证按一个partition中的顺序将消息发给consumer,不保证一个topic的整体(多个partition间)的顺序。

   4、producer

       消息生成者,负责发送指定topic的消息到broker

   5、consumer

      消息读取客户端,通过订阅一组topic的消息从broker拉取消息。

   6、consumer group  (简称:CG)

每个consumer都会属于一个消费者组,具有相同的group.id的消费客户端属于同一个消费者。通过设置一个消息消费者group.id是否相同可以分为单播消费(集群消费)或广播消费。

假如一个消费者组有两个消费者,订阅了一个具有4个分区的topic的消息,那么这个消费者组的每一个消费者都会消费两个分区的消息。

消费者组的成员是动态维护的,如果新增或者减少了消费者组中的消费者,那么每个消费者消费的分区的消息也会动态变化。比如原来一个消费者组有两个消费者,其中一个消费者因为故障而不能继续消费消息了,那么剩下一个消费者将会消费全部4个分区的消息。

若干个Consumer组成的集合。这是kafka用来实现一个topic消息的广播(发给所有的consumer)单播(发给任意一个consumer)的手段。一个topic可以有多个CG。topic的消息会复制(不是真的复制,是概念上的)到所有的CG,但每个CG只会把消息发给该CG中的一个consumer。如果需要实现广播,只要每个consumer有一个独立的CG就可以了。要实现单播只要所有的consumer在同一个CG。用CG还可以将consumer进行自由的分组而不需要多次发送消息到不同的topic。

    7、offset

偏移量。kafka为每条在分区的消息保存一个偏移量offset,这也是消费者在分区的位置。比如一个偏移量是5的消费者,表示已经消费了从0-4偏移量的消息,下一个要消费的消息的偏移量是5。

kafka的存储文件都是按照offset.kafka来命名,用offset做名字的好处是方便查找。例如你想找位于2049的位置,只要找到2048.kafka的文件即可。当然the first offset就是00000000000.kafka

 

发布了13 篇原创文章 · 获赞 1 · 访问量 7826

猜你喜欢

转载自blog.csdn.net/weixin_40482816/article/details/85314103