没想到我费劲心力学的 kafka,还不如阿里大佬整理的这份学习手册,真的是差距啊
前言
分布式,是程序员必备技能之一,在面试过程中属于必备类的,在工作中更是会经常用到。而 Kafka 是一个分布式的基于发布订阅的消息队列,目前它的魅力是无穷的,对于 Kafka 的奥秘,还需要我们细细去探寻。
要谈对 Kafka 有多熟悉,我相信还是阿里的大佬们最有发言权,所以今天分享的内容,就是 Alibaba 内部供应的“限量笔记”,关于 Kafka 的精髓全部写在这里面了,不得不感叹:不愧是 Alibaba 的技术官啊,真的服了!
关于这份 Kafka 限量笔记,我只能在文章中展示部分的章节内容和核心截图,如果你需要完整的 pdf 版本,关注公众号:Java 架构师联盟,后台回复 Java 即可
![](https://static001.geekbang.org/infoq/f1/f14bf866fa3b89622cb4c66405660983.jpeg?x-oss-process=image/resize,p_80/auto-orient,1)
一、对 Kafka 的认识
1.Kafka 的基本概念
![](https://static001.geekbang.org/infoq/cb/cb75aa1bc344d455eeebf24f3cc88625.png)
2.安装与配置
![](https://static001.geekbang.org/infoq/71/719adec50e84707779d90c36b699053d.png)
3.生产与消费
![](https://static001.geekbang.org/infoq/a2/a24813e5694b25ee27441df6ea5aac8f.png)
4.服务端参数配置
![](https://static001.geekbang.org/infoq/aa/aa25a9561733ee6c915aab028ae7dac8.png)
二、生产者
1.客户端开发
必要的参数配置
消息的发送
序列化
分区器
生产者拦截器
![](https://static001.geekbang.org/infoq/fc/fc0a7df5062c73b02331f2fc847ce3bc.png)
2.原理分析
整体架构
元数据的更新
![](https://static001.geekbang.org/infoq/29/29bb51ad604828dfa81dfeeda969cad2.png)
3.重要的生产者参数
![](https://static001.geekbang.org/infoq/ce/cefec92b0449b94270bc7b00172c429a.png)
三、消费者
1.消费者与**消费组**
![](https://static001.geekbang.org/infoq/35/350be4a68b3ffa5cc9b858d604a55543.png)
2.客户端开发
必要的参数配置
订阅主题与分区
反序列化
消息消费
位移提交
控制或关闭消费
指定位移消费
再均衡
消费者拦截器
多线程实现
重要的消费者参数
![](https://static001.geekbang.org/infoq/0b/0b253e938a913ebaa9eab5e19e274497.png)
四、主题与分区
1.主题的管理
创建主题
分区副本的分配
查看主题
修改主题
配置管理
主题端参数
删除主题
![](https://static001.geekbang.org/infoq/0b/0b3c182d2e913cbad97080e3aaae0f7b.png)
2.初识 KafkaAdminCilent
基本使用
主题合法性验证
![](https://static001.geekbang.org/infoq/20/201e4d8b8ab34bb4045eecceb3f88334.png)
3.分区的管理
优先副本的选举
分区重分配
复制限流
修改副本因子
![](https://static001.geekbang.org/infoq/83/837ea6d3a1e2a49831bb46d6a1626868.png)
4.如何选择合适的分区数
性能测试工具
分区数越多吞吐量就越高吗
分区数的上限
考量因素
![](https://static001.geekbang.org/infoq/46/462d4030a956c9f439c9a5469e594059.png)
五、日志存储
1.文件目录布局
![](https://static001.geekbang.org/infoq/34/3468d0e0757dd4d0c41d68fbb55951d8.png)
2.日志格式的演变
v0 版本
v1 版本
消息压缩
变长字段
v2 版本
![](https://static001.geekbang.org/infoq/b1/b17305c02aadc7d636eae2740f480a2f.png)
3.日志索引
偏移量索引
时间戳索引
![](https://static001.geekbang.org/infoq/c8/c808c82a3ed1eea996a62dbc365274e7.png)
4.日志清理
日志删除
日志压缩
![](https://static001.geekbang.org/infoq/ae/aea30f466ce0a12616dd0c0173b6d50d.png)
5.磁盘存储
页缓存
磁盘 I/O 流程
零拷贝
![](https://static001.geekbang.org/infoq/c0/c001d8504f73f5ce527c3733757f240a.png)
六、深入服务端
1.协议设计
![](https://static001.geekbang.org/infoq/24/241b20738cac3d05e1e0a3c8ba88377f.png)
2.时间轮
![](https://static001.geekbang.org/infoq/bc/bc87674ab9b223d09696a0806b858b68.png)
3.延时操作
![](https://static001.geekbang.org/infoq/46/46da801e542d2782f962a4ed3d841b86.png)
4.控制器
![](https://static001.geekbang.org/infoq/1d/1de7e72f5689916101463110025ebf63.png)
5.参数解密
![](https://static001.geekbang.org/infoq/34/3472d8d0fc2e45538834f8888f140bf2.png)
七、深入客户端
1.分区分配策略
![](https://static001.geekbang.org/infoq/b6/b6e8d9d7b06b1f5d27511e0a22066ee0.png)
2.消费者协调器和组协调器
![](https://static001.geekbang.org/infoq/21/21d4e6cdc09eeb94d32fffb0d9423a3a.png)
3._consumer_offsets 剖析
![](https://static001.geekbang.org/infoq/3e/3e7edfae17408c196a3c5f1d1c3d67c4.png)
4.事务
![](https://static001.geekbang.org/infoq/20/208b5bec1d1e8a8b342dd91f327c10ff.png)
八、可靠性探究
1.副本剖析
![](https://static001.geekbang.org/infoq/e6/e6946004e3d218cde51873ededb21fce.png)
2.日志同步机制
![](https://static001.geekbang.org/infoq/65/65c94216e3de87f9ea3961ec666bb05c.png)
3.可靠性分析
![](https://static001.geekbang.org/infoq/4a/4a21314e33b7c8ecf16a18aa8cb33369.png)
九、Kafka 应用
1.命令行工具
![](https://static001.geekbang.org/infoq/8b/8bb30947a512eecdebfb8c4da6b721b7.png)
2.Kafka Connect
![](https://static001.geekbang.org/infoq/9a/9ad169f55a653831cbbe8dab25c3b5fd.png)
3.Kafka Mirror Maker
![](https://static001.geekbang.org/infoq/a2/a2c96d27ea6c01f72d558b69514314ae.png)
4.Kafka Streams
![](https://static001.geekbang.org/infoq/f9/f9bfdd6637e461538242da1e0d086932.png)
十、Kafka 监控
1.监控数据的来源
![](https://static001.geekbang.org/infoq/f7/f790fdd4e4b17e81c3e87d059e0cda12.png)
2.消费滞后
![](https://static001.geekbang.org/infoq/8b/8b03213babeb14479c64f1b007ea7bba.png)
3.同步失效分区
![](https://static001.geekbang.org/infoq/93/93a3e1fac991029d0c023c5d4cdd8816.png)
4.监控指标说明
![](https://static001.geekbang.org/infoq/f5/f58a91d3460d6ee8692d0999f0338a70.png)
5.监控模块
![](https://static001.geekbang.org/infoq/ac/acced8d2448802aec6abf742aec8fb06.png)
十一、高级应用
1.过期时间(TTL)
![](https://static001.geekbang.org/infoq/11/11f858d27b305e1b2e433e0c127341d4.png)
2.延时队列
![](https://static001.geekbang.org/infoq/f5/f55bdd13dca97e8c7593ff5e10489cd3.png)
3.死信队列和重试队列
![](https://static001.geekbang.org/infoq/19/19e2941ad89aa1b08f8c62743c479335.png)
4.消息路由
![](https://static001.geekbang.org/infoq/d6/d6a21d84a813d4a429d9b4a1e701f938.png)
5.消息轨迹
![](https://static001.geekbang.org/infoq/0e/0e8549d2dc88f2149dfb6df950660bf7.png)
6.消息审计
![](https://static001.geekbang.org/infoq/1a/1adf3d7714f9fcc56e786db978f102f0.png)
7.消息代理
![](https://static001.geekbang.org/infoq/4d/4dec9eb7ec9cdbb1b29d9a0fe473ad5d.png)
8.消息中间件选型
![](https://static001.geekbang.org/infoq/c3/c354bdbfa17212f0d44981dbaeef2b48.png)
十二、Kafka 与 Spark 的集成
1.Spark 的安装及简单应用
![](https://static001.geekbang.org/infoq/28/280f50d19886b8a3887a69e625bd64e3.png)
2.Spark 编程模型
![](https://static001.geekbang.org/infoq/42/42dfafd5a6045c9cdc1e625b60723d97.png)
3.Spark 的运行结构
![](https://static001.geekbang.org/infoq/01/01b74cf439b99e3043acc523b78d287b.png)
4.Spark Streaming 简介
![](https://static001.geekbang.org/infoq/33/3330ea044420c369b2225714a19498c0.png)
5.Kafka 与 Spark Streaming 的整合
![](https://static001.geekbang.org/infoq/d3/d332402b317261f3e8e41ac22fbb3942.png)
6.Spark SQL
![](https://static001.geekbang.org/infoq/17/17723f0d3076369fdf921b1455ea20c4.png)
7.Structured Streaming
![](https://static001.geekbang.org/infoq/6a/6addca47be83f83f7ba4d93e5b542d3d.png)
8.Kafka 与 Structured Streaming 的整合
![](https://static001.geekbang.org/infoq/c8/c85c22926334ade531ac577488c8ea2b.png)
总结
我们总是喜欢瞻仰大厂的大神们,但实际上大神也不过凡人,与菜鸟程序员相比,也就多花了几分心思,如果你再不努力,差距也只会越来越大。实际上,作为程序员,丰富自己的知识储备,提升自己的知识深度和广度是很有必要的,在我看来,自己付出多少,回报就有多少。
Kafka 的学习,并没有想象中那么难,这份 Kafka 限量笔记里面的内容,对你学习 Kafka 必有启发和帮助。关注公众号:Java 架构师联盟,后台回复 Java 即可
版权声明: 本文为 InfoQ 作者【小Q】的原创文章。
原文链接:【http://xie.infoq.cn/article/94a3769bcc02d5227636849a2】。
本文遵守【CC BY-NC-ND】协议,转载请保留原文出处及本版权声明。
评论