Kafka概念详解——http://kafka.apache.org/24/documentation.html
Kafka的基本概念
Broker:
- Kafka集群包含一个或多个服务器,这种服务器被称为broker。
- broker端不维护数据的消费状态,提升了性能。
- 直接使用磁盘进行存储,线性读写,速度快:避免了数据在JVM内存和系统内存之间的复制,
减少耗性能的创建对象和垃圾回收。
Producer:
负责发布消息到Kafka broker
Consumer:
消息消费者,向Kafka broker读取消息的客户端,consumer从broker拉取(注意是拉去不是broker推送)数据并进行处理。
Consumer Group:
- 每个Consumer属于一个特定的Consumer Group(可为每个Consumer指定group name,若不指定group name则属于默认的group)
Topic:
- 每条发布到Kafka集群的消息都有一个类别,这个类别被称为Topic。
- 一个逻辑的概念,由1到多个分区(Partition)组成。
- Topic类似于文件系统中的文件夹,events是目录中的文件
- 一个Topic可以被多个用户操作
- 每个Topic KafKa集群都会维护一个分区日志
Partition:
- 实际消息存储单位
- 一个或多个Partition构成Topic
- 每个分区都是顺序,不可变的队列
- 每个分区是一组有序的消息日志
- 每个分区都有一个物理日志文件
- 分区的数量在运行期间可以增加,但是不能减少
- 生产者生产的消息,只会发给主题的一个分区
- 一个topic的分区可以分布在不同的broker上
offset
- 属于分区里的一个概念
- 当消息到达分区时,该消息会有一个标识id就叫offset
- offset是消息在分区中的唯一标识
- KafKa通过offset来保证分区内消息的顺序性
- offset不跨分区
- offset从0开始,依次递增
Replica
- 属于分区里的一个概念
- 一个分区内的消息可以有多个副本
- 与ES的副本机制类似
- 副本分为leader和follower
- leader副本负责处理读写请求
- follower副本只负责与leader副本的消息同步
- 副本分散在不同的broker中,当leader副本出现故障时,从follower副本中重新选举新的leader副本
- 分区中所有副本统称为AR
- 某Topic比如有三个分区每个分区三个副本如下图: