先来看个主要的层次图
1.coordinator 字面意思就是协调者是ConsumerCoordinator类的对象。ConsumerCoordinator继续AbstractCoordinator提供心跳服务,心跳超时时间是5S。当我们生成kafkaconsumer对象的时候,如果没有配置groupId coordinator就为null. coordinator这个类我在consumer里面的接口调用一般是用来offset操作的
2.fetcher 这个类主要是全权负责socket通信的,对服务器的请求和消息的存储都是在这个类里面进行的。
3.matedata主要是存放结点信息的,最开始的connect address。每个IP地址作为一个Node.这个在服务端被称作broker.每次consumer每次请成response成功后,都会来调用matedate的update接口,将Node和partition最新的数据填充进去。MetadataCache这个类是专门用来存储broker和partiton信息的
4.下面就是网络层的通信了,这块用的是NIO的方式。代码这里就不截图了,网上讲代码的一大堆。这里主要是把思路理清晰,细节的东西在思路清晰之后很容易看明白
kafkaConsumer流程分析
最新推荐文章于 2024-04-28 00:36:05 发布