消息中间件 透彻理解Kafka系列 从本专栏开始,我将对Kafka这一分布式消息中间件的底层源码进行详细讲解,我主要分**Producer**、**Consumer**、**Broker**三部分进行讲解。作为一款优秀的消息引擎,Kafka 的架构设计有很多为人称道的地方,掌握了这些原理将极大地提升我们自身的系统架构能力和代码功力。即使你不使用 Kafka,也可以借鉴其优秀的设计理念,提升你在其他框架上的系统架构能力。 2020-08-09 浏览(3,835) 评论(0) 阅读全文
消息中间件 透彻理解RocketMQ系列 从本专栏开始,我将详细讲解分布式系统中常用的一种组件——消息中间件。目前工业环境常用的消息中间件主要有ActiveMQ、RabbitMQ、Kafka、RocketMQ。这四种消息中间件的优劣和使用场景,我会在专栏中进行对比,读者也可以先参照我的另一个专栏《分布式系统从理论到实战系列》对消息中间件的核心要点进行了解。 2019-01-07 浏览(8,273) 评论(0) 阅读全文
Kafka源码分析(二八)——Consumer:GroupCoordinator协调器 本章主要对GroupCoordinator协调器的底层原理进行了讲解。Kafka Consumer的核心无非就是三块:分区分配、offset管理、底层通信。分区分配的核心就是GroupCoordinator,底层通信的原理和Producer类似,offset管理主要涉及HW、LEO。 至此,整个Kafka源码分析系列我就讲完了,剩余的很多边边角角的内容和细节读者可以自己去研读源码。 2020-11-27 浏览(3,967) 评论(0) 阅读全文
Kafka源码分析(二七)——Broker:集群管理——分区重分配 本章主要对Kafka的分区重分配流程和底层实现原理进行了讲解,分区重分配本质在于数据复制,先增加新的副本,然后进行数据同步,最后删除旧的副本来达到最终目的。 数据复制会占用额外的资源,所以,分区重分配一定要在低峰值时期执行。另外,可以减小重分配的粒度,以小批次的方式来操作是一种可行的解决思路 。 2020-11-27 浏览(3,722) 评论(0) 阅读全文
Kafka源码分析(二六)——Broker:集群管理——Topic创建 本章主要对Topic创建的整体流程和底层原理进行了讲解,Controller会监听新Topic的创建,同时对分区副本进行管理,向新的元数据信息发送给集群中的其它Broker。 2020-11-26 浏览(2,876) 评论(0) 阅读全文
Kafka源码分析(二五)——Broker:集群管理——KafkaController 本章主要对Kafka的Broker集群的选举流程进行了讲解,Kafka Server服务启动后,每个Broker内部都包含一个KafkaController组件,选举流程的本质就是通过该组件往Zookeeper写入节点,首先写入成功的就是Leader,即Controller。 2020-11-25 浏览(2,902) 评论(0) 阅读全文
Kafka源码分析(二四)——Broker:副本同步——延迟读写 本章主要对副本同步中的最后一块内容——延迟读写进行了讲解。Kafka就是利用了时间轮机制对这种延迟读写的情况进行处理。 2020-11-24 浏览(3,674) 评论(0) 阅读全文
Kafka源码分析(二三)——Broker:副本同步——Leader侧整体流程 本章主要对Leader侧的副本同步的整体流程进行了讲解,主要涉及以下几个核心要点: 1. Leader侧的消息读取流程; 2. Leader侧的LEO和HW维护; 3. Leader侧的ISR列表维护; 2020-10-21 浏览(2,035) 评论(0) 阅读全文
Kafka源码分析(二二)——Broker:副本同步——Follower侧整体流程 本章主要站在Follower副本的角度对副本同步的整个流程进行了讲解,通过本章可以了解ReplicaFetcherThread对于副本同步的流程。 2020-10-20 浏览(1,620) 评论(0) 阅读全文
Kafka源码分析(二一)——Broker:日志子系统——索引 本章对Kafka中的索引进行了深入讲解。有两个重点: AbstractIndex:里面的 mmap 变量是实现索引机制的核心,Kakfa采用了内存映射文件实现了索引的写入,极大提升了IO性能; 改进版二分查找算法:所有索引项分成两个部分:热区(Warm Area)和冷区(Cold Area),在这两个区域内执行二分查找算法,从而提升页缓存的使用率,避免缺页中断(Page Fault)问题。 2020-10-17 浏览(2,285) 评论(0) 阅读全文