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 消费数据
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐