易燃物汇聚 YouTube 有声书与书评
深入理解Kafka:核心设计与实践原理 封面

深入理解Kafka:核心设计与实践原理

朱忠华

2.4万人在读
28.8万字总字数
¥69.3定价

内容简介

本书从Kafka的基础概念切入,循序渐进地转入对其内部原理的剖析。本书主要阐述了Kafka中生产者客户端、消费者客户端、主题与分区、日志存储、原理解析、监控管理、应用扩展及流式计算等内容。虽然Kafka的内核使用Scala语言编写,但本书基本以Java语言作为主要的示例语言,方便大多数读者的理解。虽然本书没有明确的界定,但总体上可以划分为三个部分:基础篇、原理篇和扩展篇,前4章为基础篇,包括基础概念、生产者、消费者,以及主题与分区,学习完这4章的内容完全可以应对绝大多数的开发场景。第5章至第8章为原理篇,包括对日志存储、协议设计、控制器、组协调器、事务、一致性、可靠性等内容的探究,学习完这4章的内容可以让读者对Kafka有一个深刻的认知。最后4章从应用扩展层面来做讲解,可以归类为扩展篇,主要内容包括监控、应用工具、应用扩展(延时队列、重试队列、死信队列、消息轨迹等)、与Spark的集成等,让读者可以对Kafka的生态有一个更加全面的认知。本

读者书评

★★★★★

[2019年第38本] 皮皮厮大佬的kafka大作,从基础到实践循序渐进对其内部核心设计与原理进行了剖析,读完让人醍醐灌顶,力荐[强][强][强]

★★★★☆

内容很详实,且细致,但是总感觉组织上不是特别好,只能充当工具书,不便于理解。对比oreilly出版的kafka权威指南还是差点意思

★★★★★

比起rocketmq那本书,这个讲的更透彻,设计理念、组织架构讲的非常清新,是一本理解kafka甚至消息队列的好书

★★★★★

这本书对Kafka原理讲的很透彻,不仅仅在说Kafka,对理解各种消息中间件设计都很有启发。 有点遗憾是缺少涉及关于Kafka安全机制的说明

★★★★★

粗读一遍,内容翔实,逻辑脉络清晰。不过限于对Kafka的使用经验不多,感觉应该先熟练使用Kafka后再读一遍本书。推荐指数五颗星!

★★☆☆☆

可以看作者是去实践了,但是像是在翻译实践一样,照着()一步一步实践罗列堆叠终于堆叠了1000页的一本书,用了我好几天看完,我也是够耐心了。

★★★★☆

这本关于Kafka的书写得非常详尽,很多底层细节和原理都分析得很透彻,对比市面上不同产品的技术方案,总结出各种实现的优缺点,做到触类旁通,对于一些可能在业务场景中需要但是Kafka本身没有的功能,作者都提出了相应的解决方案。 producer:生产者,生成消息。 consumer:消费者,消费消息。 broker:存储和管理消息的节点。 topic:主题,消息的一级分类。 partition:分区,一个主题有多个分区,每一个分区对应一个Log日志根目录。 replica:副本,一个分区有多个副本,每一个副本对应一个Log日志分段。每一个分区有一个leader副本,有多个follower副本,读写发生在leader副本,follower只作备份。为了负载均衡,不同分区的leader副本会尽可能地分布在不同的broker上。 Kafka集成了zookeeper作为协调服务,易于动态扩展,批量发送、顺序读写、零拷贝、页缓存等技术,使他具备高吞吐量的特性,消息存储在磁盘上实现持久性,消息传输重试和确认机制、幂等和事务、分区多副本确保了可靠性,时间轮与delayQueue结合,在大量分布式定时任务的条件下,保证了精确性同时,又保证了性能。 Kafka生产者发送消息 指定要发送的Topic,还可以指定Key。 Key是用来指定消息的键,它不仅是消息的附加信息,还可以用来计算分区号进而可以让消息发往特定的分区。前面提及消息以主题为单位进行归类,而这个key可以让消息再进行二次归类,同一个key的消息会被划分到同一个分区中。 Kafka的消费者与消费组 一个消费者可以订阅一个或多个主题。 每个消费者都有一个对应的消费组。当消息发布到主题后,只会被投递给订阅它的每个消费组中的一个消费者。 假设目前某消费组内只有一个消费者 C0,订阅了一个主题,这个主题包含 7 个分区:P0、P1、P2、P3、P4、P5、P6。也就是说,这个消费者C0订阅了7个分区。 此时消费组内又加入了一个新的消费者C1,按照既定的逻辑,需要将原来消费者C0的部分分区分配给消费者C1消费。消费者C0和C1各自负责消费所分配到的分区,彼此之间并无逻辑上的干扰。 紧接着消费组内又加入了一个新的消费者C2,消费者C0、C1和C2各自负责消费所分配到的分区。 消费者与消费组这种模型可以让整体的消费能力具备横向伸缩性,我们可以增加(或减少)消费者的个数来提高(或降低)整体的消费能力。对于分区数固定的情况,一味地增加消费者并不会让消费能力一直得到提升,如果消费者过多,出现了消费者的个数大于分区个数的情况,就会有消费者分配不到任何分区。 Kafka的幂等性 Producer在生产发送消息时,难免会重复发送消息。Producer进行retry时会产生重试机制,发生消息重复发送。而引入幂等性后,重复发送只会生成一条有效的消息。 Kafka的事务 Kafka中的事务是指一系列的Producer生产消息和消费消息提交Offsets的操作在一个事务中,即原子性操作。对应的结果是同时成功或者同时失败。 需要与数据库中事务进行区别,操作数据库中的事务指一系列的增删查改,对Kafka来说,操作事务是指一系列的生产和消费等原子性操作。

★★★★★

本文介绍了 Kafka 是一个分布式、分区的、多副本的、多生产者、多订阅者的分布式消息系统。 1. Kafka 2.8.0 之前是使用 ZooKeeper 存储着 Partition 和 Broker 的元数据 ,同时也负责 Kafka Controller 的选举工作。 Kafka 2.8.0 版本实现了 Raft 分布式一致性机制,意味着可以脱离 ZooKeeper 2. Kafka 主要设计目标 2.1 以时间复杂度为O(1)的方式提供消息持久化能力,即使对TB级以上数据也能保证常数时间的访问性能。 2.2 高吞吐率。即使在非常廉价的商用机器上也能做到单机支持每秒100K条消息的传输。 2.3 支持Kafka Server间的消息分区,及分布式消费,同时保证每个partition传输。 2.3 同时支持离线数据处理和实时数据处理 2.4 支持在线水平扩展 3. 详细介绍了 Producer、Consumer、Broker、Topic、Partition、Replicas、Offset、AR(ISR+OSR)、HW、LEO、LSO等核心概念。 4、深入了客户端的讲解,包括但不限于分区分配策略、消费者协调器和组协调器、__consumer_offsets 内部主题的剖析、幂等性与事务等。 5、深入了服务端的讲解,包括但不限于协议设计、时间轮、延时操作、控制器等。

★★★★★

这本书由浅入深地介绍了Kafka的概念和原理,是一本非常好的入门书籍。在本书的第一章的第一节,就说明了Kafka的基本概念,包括主题、分区、副本、ISR、HW和LEO等等,让读者快速建立对Kafka的全面认识。在后续的多个章节中又对这些概念一层层的展开,第四章主题和分区会谈到怎么让分区和副本在Kafka集群中均衡分布,第五章日志存储会谈到主题和分区的物理结构,第八章可靠性探究会从保障可靠性的角度把很多概念串联起来。这本书除了介绍Kafka,也谈了一些有趣的话题,比如通过磁盘存储消息是不是一定比内存存储消息慢?如何设计一个插入和删除效率都为O(1)的定时器?这些问题折射了Kafka的性能,也帮助我加深了对技术的理解。

★★☆☆☆

不知道这本书的定位是什么,把kafka的代码、原理了解清楚了,却不能写出好的书,可能我太苛刻了,但是换一种叙述方式可能会更好,原理的归原理,实践的归实践,代码分析的归代码分析,这就是三本书了哇,这本书拆成三本比揉成一本更合适。

书籍信息

作者朱忠华
出版社电子工业出版社
出版时间2019-01-01
ISBN9787121359026
分类计算机-编程设计
格式EPUB
完结状态连载中
章节数83