Kafka的核心概念

一、Producer

  1. Producer 特指消息的生产者,消息和数据生产者,向 Kafka 的一个 topic 发布消息的过程叫做 producers。
  2. Producer将消息发布到指定的Topic中,同Producer也能决定将此消息归属于哪个partition;比如基于”round-robin”方式或者通过其他的一些算法等。
  3. 异步发送:批量发送可以很有效的提高发送效率。Kafka producer的异步发送模式允许进行批量发送,先将消息缓存在内存中,然后一次请求批量发送出去。

二、Consumer

订阅消息并处理发布的消息的种子的对象称之为主题消费者(consumers)。

三、Consumer Group

  1. 消费者组,由一个或多个consumers组成,可以并行消费Topic中partition的消息。
  2. 在 kafka中,我们 可以认为一个group是一个“订阅者”,一个Topic中的每个partions,只会被一个“订阅者”中的一个consumer消费,不过一个 consumer可以消费多个partitions中的消息(消费者数据小于Partions的数量时)。
  3. kafka的设计原理决定,对于一个topic,同一个group中不能有多于partitions个数的consumer同时消费,否则将意味着某些consumer将无法得到消息。
  4. 一个partition中的消息只会被group中的一个consumer消费。
  5. group中的每个consumer消费消息相互独立。

四、Broker:

  1. Broker:缓存代理,Kafka 集群中的一台或多台服务器统称为 broker。
  2. 已发布的消息保存在一组服务器中,称之为Kafka集群。集群中的每一个服务器都是一个代理(Broker). 消费者可以订阅一个或多个主题(topic),并从Broker拉数据,从而消费这些已发布的消息。
  3. Message在Broker中通Log追加的方式进行持久化存储。并进行分区(patitions)。
  4. 为了减少磁盘写入的次数,broker会将消息暂时buffer起来,当消息的个数(或尺寸)达到一定阀值时,再flush到磁盘,这样减少了磁盘IO调用的次数。

Kafka的Broker无状态机制

  1. Broker没有副本机制,一旦broker宕机,该broker的消息将都不可用。
  2. Broker不保存订阅者的状态,由订阅者自己保存。
  3. 无状态导致消息的删除成为难题(可能删除的消息正在被订阅),kafka采用基于时间的SLA(服务水平保证),消息保存一定时间(通常为7天)后会被删除。
  4. 消息订阅者可以rewind back到任意位置重新进行消费,当订阅者故障时,可以选择最小的offset(id)进行重新读取消费消息。

五、Topic

  1. Topic:特指 Kafka 处理的消息源(feeds of messages)的不同分类。
  2. Partition:Topic 物理上的分组,一个 topic 可以分为多个 partition,每个 partition 是一个有序的队列。partition 中的每条消息都会被分配一个有序的 id(offset)。

六、Message

  1. Message消息:是通信的基本单位,每个 producer 可以向一个 topic(主题)发布一些消息。
  2. Kafka中的Message是以topic为基本单位组织的,不同的topic之间是相互独立的。每个topic又可以分成几个不同的partition(每个topic有几个partition是在创建topic时指定的),每个partition存储一部分Message。

partition中的每条Message包含了以下三个属性:

  1. offset 对应类型:long
  2. MessageSize 对应类型:int32
  3. data 是message的具体内容

七、Kafka的Partitions分区的目的

  1. kafka基于文件存储.通过分区,可以将日志内容分散到多个server上,来避免文件尺寸达到单机磁盘的上限,每个partiton都会被当前server(kafka实例)保存。
  2. 可以将一个topic切分多任意多个partitions,来消息保存/消费的效率。
  3. 越多的partitions意味着可以容纳更多的consumer,有效提升并发消费的能力.

八、Producers

消息和数据生产者,向 Kafka 的一个 topic 发布消息的过程叫做 producers。

九、Consumers

消息和数据消费者,订阅 topics 并处理其发布的消息的过程叫做 consumers。

猜你喜欢

转载自blog.csdn.net/qq_37502106/article/details/80159915