apache kafka系列之源码分析走读-kafkaApi详解
来源:互联网 发布:怎么搬家划算 知乎 编辑:程序博客网 时间:2024/06/13 07:32
Kafka源码中数据交互流程
图1
1.概述
kafka启动时做很多初始化运行环境工作,具体请参考:apache kafka系列之源码分析走读-kafka内部模块分析
其中SockeServer类启动时,首先初始化NIO网络环境、启动监听、创建主线程、工作线程池、设置参数等等。
从上图1中可以看到整个交互过程中,kafka的所有逻辑处理和交互实际是交给KafkaApi类来处理的。
通过请求的类型,把具体的request路由到对应的handler处理。目前kafka并没有把handler抽象出来,
而是每个handler都是一个函数,混在KafkaApi类中。
2. Request请求类别
kafka-0.8.1版本中定义了10种类型请求,请求类型说明如下:
参数
说明(解释)
请求二进制数据解码类
RequestKeys.ProduceKey
producer请求
ProducerRequest
RequestKeys.FetchKey
consumer请求
FetchRequest
RequestKeys.OffsetsKey
topic的offset请求
OffsetRequest
RequestKeys.MetadataKey
topic元数据请求
TopicMetadataRequest
RequestKeys.LeaderAndIsrKey
leader和isr信息更新请求
LeaderAndIsrRequest
RequestKeys.StopReplicaKey
停止replica请求
StopReplicaRequest
RequestKeys.UpdateMetadataKey
更新元数据请求
UpdateMetadataRequest
RequestKeys.ControlledShutdownKey
controlledShutdown请求
ControlledShutdownRequest
RequestKeys.OffsetCommitKey
commitOffset请求
OffsetCommitRequest
RequestKeys.OffsetFetchKey
consumer的offset请求
OffsetFetchRequest
下面是KafkaApi中handle方法代码:
3.请求交互二进制数据格式
3.1 ProducerRequest二进制格式
3.2 FetchRequest二进制格式
3.3 OffsetRequest二进制格式
3.4 TopicMetadataRequest二进制格式
3.5 LeaderAndIsrRequest二进制格式
3.6 StopReplicaRequest二进制格式
3.7 UpdateMetadataRequest二进制格式
3.8 ControlledShutdownRequest二进制格式
3.9 OffsetCommitRequest二进制格式
3.10 OffsetFetchRequest二进制格式
- apache kafka系列之源码分析走读-kafkaApi详解
- apache kafka系列之源码分析走读-kafkaApi详解
- apache kafka系列之源码分析走读-SocketServer分析
- apache kafka系列之源码分析走读-kafka内部模块分析
- apache kafka系列之源码分析走读-kafka内部模块分析
- apache kafka系列之源码分析走读-server端网络架构分析
- apache kafka系列之源码分析走读-server端网络架构分析
- apache kafka源码分析走读-Producer分析
- apache kafka源码分析走读-ZookeeperConsumerConnector分析
- apache kafka源码分析走读-Producer分析
- Apache Spark源码走读系列
- apache kafka系列之源码构建打包
- Apache Spark源码走读之3 -- Task运行期之函数调用关系分析
- Apache Spark源码走读之Task运行期之函数调用关系分析
- Apache Spark源码走读之15 -- Standalone部署模式下的容错性分析
- (一)storm-kafka源码走读之前言
- (四)storm-kafka源码走读之自定义Scheme
- (五)storm-kafka源码走读之KafkaSpout
- LeetCode | 728. Self Dividing Numbers
- 结构体专题
- c# 透明textbox,透明richtextbox
- Bootstrap 使用
- 利用TensorFlow训练简单的RNN
- apache kafka系列之源码分析走读-kafkaApi详解
- Epubor All DRM Removal(电子书DRM版权保护移除工具)官方中文版V1.0.15.1215下载
- sumblime text 3 配置nodejs
- Python学习笔记一
- Maximum Width of Binary Tree 解题心得
- 410. Split Array Largest Sum
- SQLServer 数据加密解密:常用的加密解密(一)
- Java Io
- LeetCode | 729. My Calendar I