1. Kafka整体架构
Kafka整体架构图如下:
Kafka基本概念:
Broker
:Kafka以Broker集群的方式运行,一个Kafka节点就是一个Broker。理论上可以跨越多个数据中心。Broker负责数据复制,管理主题、分区、消费偏移量等。如果要跨越多个数据中心,数据中心之间的网络延迟需要非常低,因为Kafka Broker之间以及Broker和Zookeeper服务器之间有大量的通信。- 在上图中,Kafka集群中包含3个Broker。
Topic
:即主题,与RocketMQ的Topic类似,使用Topic对消息进行分类,Kafka接收到的每条消息都会放入到一个Topic中。- Topic代表发布和消费记录的端点。生产者向主题发布消息,消费者订阅主题进行消费消息;
- 每条记录有一个键,一个值,一个时间戳和一些元数据组成;
- 在未指定分区的情况下发布消息时,将使用键的散列选择分区。
Producer
:消息生产者,负责向Broker发送消息;Consumer
:消息消费者,从负责Broker读取并消费消息;ConsumerGroup
:消费分组,对于同一个主题,可以被多个消费分组分别消费,每个消费分组有自己的消费偏移量,互不影响;Partition
:分区,对Topic的数据进行分布式存储的最小单位。
再次说明下关键点:Kafka每个分区的消息存在在CommitLog文件中,每个Consumer各自维护各自对CommitLog的消费进度(offset),可以从头到尾消费消息,也可以指定offset来重复消费消息,或者跳过某些消息。
接下来的文章会详细讲解这些特性。