12|从基础功能拆解Kafka的架构设计与实现
该思维导图由 AI 生成,仅供参考
Kafka 系统架构
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了Kafka的系统架构、协议和网络模块、数据存储等方面。首先介绍了Kafka的系统架构,包括Producer、Broker、ZooKeeper和Consumer四个模块,并指出了Kafka与RocketMQ在架构设计上的相似之处。文章详细分析了Kafka的协议和网络模块,以及数据存储方面的元数据存储和消息数据存储。在数据存储方面,文章提到了Kafka以分区为维度单独存储数据的特点,并对其存储结构进行了解释。此外,文章还介绍了Kafka的清理机制和存储性能优化手段。总体而言,本文通过深入剖析Kafka的架构设计和实现细节,为读者提供了全面了解Kafka基础功能的视角。文章还探讨了Kafka从生产到消费的全过程,包括客户端寻址、生产消息分配策略、消费模式、消费进度管理等方面的内容。文章还提到了Kafka对HTTP协议和管控操作的支持,以及Kafka的协议、网络、存储等方面的特点。
《深入拆解消息队列 47 讲》,新⼈⾸单¥59
全部留言(6)
- 最新
- 精选
- 张洋关于存储模块有一个问题,Kafka为什么每个分区一个文件(逻辑上的会分段),rocketMQ为什么一个Broker所有的queue都在一个commitlog中? 自己想的是Kafka的方式如果分区太多会创建大量的资源,如果FD资源耗尽就会出现问题,所以Rocketmq会支持的分区更多。 还有其他原因吗?
作者回复: 你好呀,这个问题的答案在基础篇的《05 | 存储:消息数据和元数据的存储是如何设计的?》中可以找到。 核心考虑点事对读和写的性能要求。 第一种方案,单个文件读和写都是顺序的,性能最高。但是当文件很多且都有读写的场景下,硬盘层面就会退化为随机读写,性能会严重下降。 第二种方案,因为只有一个文件,不存在文件过多的情况,写入层面一直都会是顺序的,性能一直很高。但是在消费的时候,因为多个分区数据存储在同一个文件中,同一个分区的数据在底层存储上是不连续的,硬盘层面会出现随机读的情况,导致读取的性能降低。
2023-07-20归属地:北京22 - fc1997想问下,如果kafka一个topic有五个partition然后有三台broker,这种情况下会存在一台broker有三个partition的情况嘛,因为没用过kafka
作者回复: 你好,是有可能的。 默认情况下,5个partition会均匀分布在3台Broker上。 此时分区在Broker上的数量分布可能是:2、2、1。 但是分区在Broker上分布的算法实现是比较复杂的,考虑的情况更多。所以从理论上看,是有可能会出现一个Broker上放了3个分区的。此时分区数量分布就是:3,1,1。
2023-07-21归属地:浙江21 - jackfan有一个疑问 就是客户端寻址,寻的是哪个的地址?是broker的还是topic、分区这些的
作者回复: 你好~ 寻找的是分区Leader所在的 Broker 地址。因为在直连模式下,需要先知道分区的Leader是哪台,才能把数据写入到分区的Leader中。
2023-07-20归属地:上海 - 林龍看完前面的篇章,我以为kafka是poll的,认为poll = pull + ack ;能够更加详细讲一下poll这个模式吗?2023-07-1911
- 开发很忙文中提到,“消费分组模式下,一个分区只能给一个消费者消费,消费是顺序的。”意思是说Kafka不能实现共享消息吗?即消息粒度的负载均衡?2023-09-24归属地:广东
- 鲁米消费端的消费分组是出于高可用目的设计么?客户端寻址是怎样动态保持与生产端元数据的一致的呢?2023-08-10归属地:北京