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

(一)Kafka源码的总览

程序员文章站 2024-01-04 13:29:10
...

Kafka

1)Kafka是大数据里面难度较大,而且使用广泛的一个技术,倒不是说使用起来难度大,而是说使用过程中容易出问题,但是生产又对其稳定性要求高。通过剖析其里面的源码可以帮助大家深刻理解Kafka的原理,便于大家去解决生产中的问题。

2)Kafka的源码的质量是我看过的大数据的开源产品里面质量最好的。其代码质量远超于hadoop,Spark等产品。整体代码阅读起来难度也不大,而且清晰。最关键的是在里面可以学到较多的架构的知识,这些知识在一般的架构课里面是学不到的。还可以偷偷的告诉大家,里面的有些代码漂亮的代码,可以直接复制粘贴到你的项目里。

提升大家编码能力,系统架构能力
支持高并发,高性能,高可用的的消息系统。

学习Kafka的源码需要储备哪些知识?

1)熟悉java的IO,线程,并发方面的知识
2)要会NIO方面的知识,因为Kafka的网络就是使用的 java NIO,磁盘读写也是用的java NIO
3)会一点scala方面的知识。很多人都说看kafka的源码不需要懂scala,但是其实根据我阅读下来,要是真的一点也不懂scala,还是挺难阅读的,所以要懂一些scala的基础知识,比如面向对象,函数编程等,不过要求不高。

	kafka:
	客户端:(java)
	producer
	consumer
	服务端:(scala)
	broker

三 Kafka的书可以推荐吗?
《Apache Kafka源码剖析》
《kafka技术内幕》
《深入理解Kafka 核心设计与实践原理》:讲源码但是没有大量贴源码,推荐这一本;

源码剖析方式

  1. 场景驱动的方式
    比如我们分析生产者代码的时候,我们就先写一个生产者的代码,根据代码一步一步去分析。
  2. 画图分析,看源码的时候边分析,边画图
  3. 我们看到写得比较好的源码的时候,我们也去分析一下,里面的一些架构的技巧,代码编程技巧。
    我会进行代码总结。

源码剖析的核心内容

  1. Producer生产数据的流程。
  2. Broker端:
    2.1 broker如何接收数据(高并发)
    2.2 数据写入(leader partition)
    2.3 副本的数据同步(HW,LEO)
    2.4 Kafka的集群管理(controller -》 Zookeeper)
  3. consumer 消费数据
相关标签: Kafka源码

上一篇:

下一篇: