前言
其实干程序员这么些年来,一直有一个愿望想写本书,但是一直没实现,一开始是想着是因为自己没时间,后来想想也不是说没时间,可能还是感觉水平有限。为了给写书做准备,最近打算写一个专栏,专栏的要求就稍微低一些,能坚持写完的概率也就会大一些。所以最近挑了从Kafka的源码角度去写一个专栏。
选择写Kafka源码剖析的理由
1、Kafka是大数据里面难度较大,而且使用广泛的一个技术,倒不是说使用起来难度大,而是说使用过程中容易出问题,但是生产又对其稳定性要求高。通过剖析其里面的源码可以帮助大家深刻理解Kafka的原理,便于大家去解决生产中的问题。
2、Kafka的源码的质量是我看过的大数据的开源产品里面质量最好的。其代码质量远超于hadoop,Spark等产品。整体代码阅读起来难度也不大,而且清晰。最关键的是在里面可以学到较多的架构的知识,这些知识在一般的架构课里面是学不到的。还可以偷偷的告诉大家,里面的有些代码漂亮的代码,可以直接复制粘贴到你的项目里。
源码解析概述
在正式分析源码之前先说明一下此套专栏分析源码的思路。
本次分析源码是按照这个思路去分析的:
- 生产者生产数据的流程
- 服务端存储数据的流程
- 消费端消费数据的流程
阅读源码对很多同学来说是个难题,此次我们使用画图讲解,场景驱动的方式去阅读源码,尽可能的把Kafka的源码剖析清楚。
生产者生产数据的流程
在这个流程里,我们分析数据生成的整个流程,可以学习到工业级的项目里是如何处理粘包和拆包问题的,可以学习到如何通过内存池的设计减少GC压力的,可以学习到是如何设计优秀的数据结构来提高代码性能的。
服务端存储数据的流程
这个流程里我们会分析,服务端是如何接受数据的,网络是如何架构的,数据是如何存储的,副本之间是如何管理的,元数据是如何管理的,集群是如何管理的等。里面我们可以学习到Kafka为了实现高并发,高性能的目的是如何架构项目的,这是这个项目的一大亮点。
消费端消费数据的流程
其实之前的分析清楚了以后再去分析这个流程就比较简单了,这个流程里面我们重点关注消费者是如何实现负载均衡的。
服务器托管,北京服务器托管,服务器租用 http://www.fwqtg.net
机房租用,北京机房租用,IDC机房托管, http://www.fwqtg.net
相关推荐: Backupify:一条Yelp评论价值相当于1万条微博
你每天随手更新的微博、状态和心情,对你来说可能微不足道;但对那些社交网络公司却是十分有价值的,可能你在Path上的一条状态更新,就给这个公司带来了50美分的营收。 Path: $12.50 Instagram: $18.52 Yelp: $21.21 Pint…