Comments (14)
截至昨天晚上(2018-06-27),Kafka 源码解析系列23篇终于完成,主要是 client 与 core 部分的代码。
from awesome.
Kafka Producer 端系列的源码分析,目前能想到的几个主题:
- Producer 的发送模型(Kafka 源码分析之 Producer 发送模型(一),2017.6.25);
- Producer metadata 更新机制Kafka 源码分析之 Producer Metadata 更新机制(二)(2017.7.8);
- Producer 之Server 端对 create topic 请求的处理;Kafka 源码分析之 topic 创建过程(三)(计划2017.7.16,实际完成时间2017.7.21);
- Producer 之Java NIO 总结,Kafka 源码分析之 Producer NIO 网络模型(四)(计划2017.8.6,实际完成时间2017.8.23);
- Producer 其他部分小节(RecordAccumulator 详细实现、有序性保证等)Kafka 源码解析之 Producer 单 Partition 顺序性实现及配置说明(五)(计划完成时间2017.8.31,完成时间2017.9.10)。
from awesome.
Kafka Consumer 端系列源码分析,分别以下几个部分来讲述(大概会分为5个):
- Consumer 消费模型的第一步——加入一个 group,Kafka 源码解析之 Consumer 如何加入一个 Group(六)(计划 2017.9.17,实际2017.10.22);
- Consumer poll 模型(Kafka 源码解析之 Consumer Poll 模型(七))(计划2017.11.4,实际完成 2017.11.11);
- Consumer 两种消费订阅及两中 commit (同步、异步)机制(Kafka 源码解析之 Consumer 两种订阅模式(八))(Kafka 源码解析之 Consumer 两种 commit 机制和 partition 分配机制(九))(计划 2017.11.11,实际完成 2017.11.19);
- ConsumerCoordinator 与 GroupCoordinator 机制(计划2017-11-24);
- Consumer 最后总结,Fetcher 及一些参数配置(计划2017-11-30);
from awesome.
马上就到2018.6.11了,这个小项目也算是立项一年了,庆幸的是自己能够坚持下来了,遗憾的时候没有在一年的时间内完成,后续其他的源码阅读要督促自己,保证总体按照计划去进行(立于2018.6.10)。
from awesome.
Kafka Server 端的源码解析,主要分为以下三块来讲解(大概会有8篇左右的文章):
GroupCoordinator
- Kafka 源码解析之 GroupCoordinator 详解(十),完成时间:2018-01-28.
存储层
- LogManager 的设计与实现(Kafka 源码解析之日志管理(十一))(计划完成时间:2018-03-11,实际完成时间是2018-03-12);
- Log 的设计与实现,主要是 Log 读写、分段(Kafka 源码解析之 Server 端如何处理 Produce 请求(十二),实际完成时间:2018-03-18);(计划完成时间:2018-03-18);
- Kafka Server 对 Fetch 请求的处理与 Log 的读实现(Kafka 源码解析之 Server 端如何处理 Fetch 请求(十三))(计划完成时间:2018-03-25,实际完成时间:2018-04-16);
- Kafka 副本同步机制的实现Kafka 源码解析之副本同步机制实现(十四)(计划完成时间:2018-04-30,实际完成时间:2018-04-29);
- ReplicaManager 的设计实现Kafka 源码解析之 ReplicaManager 详解(十五)(计划完成时间:2018-05-01,实际完成时间:2018-05-01);
Controller
这部分计划在 6.11 前讲述完。
- Controller 之 启动选举流程,见 Kafka 源码解析之 Controller 选举及服务启动流程(十六),完成时间:2018-06-15;
- Controller 之 PartitionStateMachine 和 ReplicaStateMachine,见 Kafka 源码解析之副本状态机与分区状态机(十七),完成时间:2018-06-16;
- Controller Partition reassignment,Kafka 源码解析之 Partition 副本迁移实现(十八),完成时间:2018-06-16;
- Topic /新建/扩容/删除的处理,Kafka 源码解析之 Topic 的新建/扩容/删除(二十),完成时间:2018-06-18;
- Controller 处理 broker 的上下线,Kafka 源码解析之 Broker 上线下线(十九),完成时间:2018-06-17;
- Controller 请求发送模型,Kafka 源码解析之 Controller 发送模型(二十一),完成时间:2018-06-23;
- LeaderAndIsr 请求的处理过程,Kafka 源码解析之 LeaderAndIsr 请求的处理(二十二),完成时间:2018-06-25;
Kafka Server 端
- Broker 端 SocketServre M+N+1 处理模型,Kafka 源码解析之 Server 1+N+M 网络处理模型(二十三),完成时间:2018-06-27。
最后总述。
from awesome.
其它内容(包括后来的 new feature):
- producer 端如何实现不重(1.0.0代码)KIP-98 - Exactly Once Delivery and Transactional Messaging;
- kafka 能否做到完全不丢(腾讯开源的一个 mq:微信开源PhxQueue:高可用、高可靠、高性能的分布式队列),或者有没有什么情况下kafka 即使做了不丢的设置,还是会有丢失的风险?
- Kafka 限流是如何做的?
from awesome.
你好,请问你这是哪个版本的kafka啊,我看kafka2.0,源码差别和你文章里的还是又挺大差别啊
from awesome.
@CoderCai 上面的文章是以 0.10.2.0 为例,Kafka 2.0 增加了事务性、重构 Controller,所以改动还是挺大的,后面我的几篇关于事务性的文章是以 2.0.0 为例
from awesome.
为什么源码分析的文档看不了了
from awesome.
@Anandonzy 我这里可以打开的,你也可以看这里:http://matt33.com/tags/kafka/
from awesome.
@Anandonzy 我这里可以打开的,你也可以看这里:http://matt33.com/tags/kafka/
不行啊,我打开还是无效的访问。。
from awesome.
@Anandonzy 我这里可以打开的,你也可以看这里:http://matt33.com/tags/kafka/
不行啊,我打开还是无效的访问。。
@Anandonzy 你是在国外访问的么?😂
from awesome.
有没有遇到这种情况,我有一个topic,但有上百个消费者,只知道有个消费者A用了低版本的方式消费导致kafka server 报错,怎样快速定位这个有问题的消费者A?
java.lang.IllegalArgumentException: Magic v0 does not support record headers
at org.apache.kafka.common.record.MemoryRecordsBuilder.appendWithOffset(MemoryRecordsBuilder.java:403)
at org.apache.kafka.common.record.MemoryRecordsBuilder.append(MemoryRecordsBuilder.java:586)
at org.apache.kafka.common.record.AbstractRecords.convertRecordBatch(AbstractRecords.java:134)
at org.apache.kafka.common.record.AbstractRecords.downConvert(AbstractRecords.java:109)
at org.apache.kafka.common.record.FileRecords.downConvert(FileRecords.java:253)
from awesome.
@VIPJoey 这个问题其实就是快速定位到一个恶意 client 的 ip,我们之前用到的方法是:使用阿里开源 arthas 工具,找到这个异常请求的 client ip。
from awesome.
Related Issues (20)
- 2018 读书记录 HOT 1
- 通过源码看 Kafka 的容错是如何设计的 HOT 1
- HDFS 学习 HOT 1
- Kafka 时间戳问题 HOT 2
- 【Kafka Streams】实践与学习 HOT 2
- Kafka 事务性实现机制 HOT 5
- YANR 学习 HOT 2
- BookKeeper 学习与调研 HOT 3
- 2019 读书记录 HOT 2
- 分布式理论学习
- 2019 paper阅读记录 HOT 2
- Calcite 学习与总结 HOT 10
- Flink 源码分析 HOT 13
- TiDB 相关内容学习
- 读书记录 HOT 2
- Paper 阅读记录 HOT 8
- 2020 技术博客记录 HOT 3
- 【为什么这么设计】的系列文章 HOT 3
- Kubernetes 相关 HOT 2
- 2022 Plan
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from awesome.