欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

kafka入门学习笔记(二)

程序员文章站 2022-06-27 19:49:20
kafka入门学习笔记(二)二、 KAFKA架构这是一个集群的架构图。集群中有多个broker,每个broker相当于一个物理机。每个topic有多个part。每一个part有一个leader,可以有或者没有follower,读写操作都是基于leader进行的。整个集群中的kfk信息,producer,broker,consumer等状态信息都是由zk来管理的。kafka之ZKzk在kafka中的作用。为啥我们选择zk。ZooKeeper是一个分布式的服务框架,可以用来解决集群中应用系统的一...

kafka入门学习笔记(二)

二、 KAFKA架构

kafka入门学习笔记(二)

这是一个集群的架构图。
集群中有多个broker,每个broker相当于一个物理机。每个topic有多个part。每一个part有一个leader,可以有或者没有follower,读写操作都是基于leader进行的。整个集群中的kfk信息,producer,broker,consumer等状态信息都是由zk来管理的。

  • kafka之ZK

zk在kafka中的作用。为啥我们选择zk。ZooKeeper是一个分布式的服务框架,可以用来解决集群中应用系统的一致性问题。用于存储相关多方都关心的数据状态,每方均可注册为“观察者”,一旦数据状态发生变化,每方都可以得到通知。
Dubbo 中也用到了zk。

(详情请见)

zk在kafka中主要体现在以下几个方面:

1. 存储topic信息
2. 存储broker分区信息
3. 控制器
4. 消费者id节点
5. 某分区被哪个消费者线程消费的信息
6. 老版本的偏移量。现在的版本使用特定的topic(_consumer_offsets)来保存偏移量
  • kafka高可用

当某个Topic的副本因子为N且N大于1时,每个Partition都会有N个副本;

Replica的个数小于等于Broker数,即对每个Partition而言么个Broker上只会有一个Replica,因此可用BrokerId 表示Replica;

所有的Partition的所有的Replica没人情况会均匀分部到所有Broker上;

如下图架构图所示:

kafka入门学习笔记(二)

kafka集群第一个启动的broker会在zk中创建一个临时节点/controller,使自己成为控制器。其他broker节点在控制器节点上注册zk的watch对象,监听控制器节点的状态变更。当broker controller断开连接时,zk的/controller节点便会消失,watch对象得到通知,再次争夺controller控制权,第一个成功创建/controller节点的会成为新的控制节点,其他会成为watch对象。控制器会检查新加入的broker是否包含现有分区副本,如果有的话,会把变更通知发送给其他broker,分区的follower副本。会从leader处复制消息。
kafka入门学习笔记(二)

  • kafka高性能

kafka数据的存储形式是一partition形式存储的。每个partition的外在表现形式为一个文件夹。主要包含以下几个文件:
kafka入门学习笔记(二)

每个partition的都是有序存储(顺序读写性能高)

每个partition的文件夹下面会有多组segment文件,每组segment文件又包含.index文件、.log文件、.timeindex文件(早期版本中没有)三个文件, log文件就实际是存储message的地方,而index和timeindex文件为索引文件,用于检索消息。
kafka入门学习笔记(二)

分段+索引的方式便于快速的查找消息体
kafka入门学习笔记(二)

1、 方便扩展。因为一个topic可以有多个partition,所以我们可以通过扩展机器去轻松的应对日益增长的数据量。

2、 提高并发。以partition为读写单位,可以多个消费者同时消费数据,提高了消息的处理效率

本文地址:https://blog.csdn.net/qq_29269907/article/details/107339323

相关标签: 消息队列 kafka