三, Kafka Broker
文章目录三, Kafka Broker3.1 Kafka Broker 工作流程1. Zookeeper 中存储的Kafka信息2. Kafka Broker 总体工作流程2.1 Broker 重要参数3. 生产经验--节点服役(新增Broker)和退役3.1 服役新节点3.2 退役旧结点4. Kafka副本4.1 副本的信息4.2 Leader的选举流程4.3 副本同步策略(见消费者剖析一文)5
·
文章目录
三, Kafka Broker
什么是Broker ?
Kafka集群包含一个或多个服务器,这种服务器被称为broker.一个集群由多个Broker组成, 一个Broker可以容纳多个topic; Producers往Brokers里面的指定Topic中写消息,Consumers从Brokers里面拉取指定Topic的消息,然后进行业务处理,broker在中间起到一个代理保存消息的中转站。
3.1 Kafka Broker 工作流程
1. Zookeeper 中存储的Kafka信息
推荐一个windows端的zk可视化工具, 下载地址
2. Kafka Broker 总体工作流程
- 每台Kafka Broker启动后, 都会向Zokeeper注册, ids的值维护启动着的Broker id, [0,1,2];
- 注册完毕后, Brokers抢占注册controller, 负责leader选举;
- 抢占注册contoller节点后, Broker中的Conroller组件监听ids结点的变化;
- Contoller决定leader的选举; (AR: Kafka分区中的所有副本)
- 选举完成后, Contoller组件将选举到的leader写入到topics的/0/state结点中, 其他broker的controller组件拉取该信息
- 生产者向brokers发送信息.
模拟 Kafka 上下线, Zookeeper 中数据变化
2.1 Broker 重要参数
3. 生产经验–节点服役(新增Broker)和退役
3.1 服役新节点
- 新节点准备
- 执行负载均衡操作
- 输入以下内容:
3.2 退役旧结点
4. Kafka副本
4.1 副本的信息
4.2 Leader的选举流程
举个栗子:
4.3 副本同步策略(见消费者剖析一文)
5. 文件存储
5.1 Kafka 文件存储机制
- 由于生产者生产的消息会不断追加到log文件的末尾, 为了防止log文件过大而导致数据定位效率低下, Kafka
采取了分片和索引机制
, 将每个partition对应的log数据文件分为多个segment,每个segment对应着两个文件–.index文件 + .log文件
, 另外每个.log 的文件是在config/server.properties中log.segment.bytes
规定了的, 通常是1GB. - 这些文件位于一个topic分区文件夹下, 该文件夹的命名规则为: topic名称+分区序号. 比如: 有个topic叫first, 他有三个partition(分区), 则其对应的文件夹为first-0, first-1, first-2, 每个文件夹中都有着一定数量的.index和.log文件.
看下图, 这是一个topic分区文件夹中的几个分片, 可以看到每个分片的.log和.index的命名相同, 都是以当前分片的最小偏移量命名的.
index文件和log文件内的数据详解
.index文件存储大量的索引信息, .log文件存储大量的数据, 索引文件中的元数据指向数据文件中消息的物理存储偏移地址.
kafka定位消息数据位置的步骤:
- 首先需要知道offset, 通过二分查找法, 找到存有这个offset信息的.index文件,
- 然后读取.log文件, 找到目标offset对应的消息数据在.log物理存储的偏移量(因为每条消息的存储大小都是固定的), 根据偏移量我们可以迅速定位到目标数据.
6. Kafka为什么这么快?(或是Kafka为什么有这么高的吞吐量)
- Kafka 本身是分布式集群, 可以采用分区技术, 并行度较高;
- 读数据采用稀疏索引, 可以快速定位要消费的数据;
- 顺序写入磁盘, 把数据追加到文件的末尾;
- 页缓存 + 零拷贝技术
更多推荐
已为社区贡献4条内容
所有评论(0)