Kafka基本介绍(kafka相关术语,基本概念,用途)

Kafka基本介绍(kafka相关术语,基本概念,用途)

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

 

 

 

  1. Kafka相关术语

broker

topic

stream

partition

offset

producer

consumer

consumer group

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

Kafka基本介绍(kafka相关术语,基本概念,用途)

Kafka基本介绍(kafka相关术语,基本概念,用途)

 

partitioned data publication : 分区数据发布.

Ordered subscription : 订购,订阅

名词 解释
Producer 消息的生成者
Consumer 消息的消费者
ConsumerGroup 消费者组,可以并行消费Topic中的partition的消息
Broker 缓存代理,Kafka集群中的一台或多台服务器统称broker.
Topic Kafka处理资源的消息源(feeds of messages)的不同分类
Partition Topic物理上的分组,一个topic可以分为多个partion,每个partion是一个有序的队列。partion中每条消息都会被分                                配一个 有序的Id(offset)
Message 消息,是通信的基本单位,每个producer可以向一个topic(主题)发布一些消息
Producers 消息和数据生成者,向Kafka的一个topic发布消息的 过程叫做producers
Consumers 消息和数据的消费者,订阅topic并处理其发布的消费过程叫做consumers

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

小结

  1. 理解分区,主题,broker,消费组,生产者之间的关系,基本理解就不会差太多
  2. Kafka需要配合ZooKeeper一起使用,有些集群相关的东西是ZooKeeper管理的
  3. 数据存储在磁盘上,因为是追加写入的方式,因为是顺序IO,性能还可以