kafka通讯协议

Kafka的通讯协议

谁都会走 提交于 2020-03-18 17:45:45
3 月,跳不动了?>>> Kafka的Producer、Broker和Consumer之间采用的是一套自行设计的基于TCP层的协议。Kafka的这套协议完全是为了Kafka自身的业务需求而定制的,而非要实现一套类似于Protocol Buffer的通用协议。本文将介绍这套协议的相关内容。下面我自己加了一张图 基本数据类型 定长数据类型:int8,int16,int32和int64,对应到Java中就是byte, short, int和long。 变长数据类型:bytes和string。变长的数据类型由两部分组成,分别是一个有符号整数N(表示内容的长度)和N个字节的内容。其中,N为-1表示内容为null。bytes的长度由int32表示,string的长度由int16表示。 数组:数组由两部分组成,分别是一个由int32类型的数字表示的数组长度N和N个元素。 Request和Response的基本结构 Kafka中两个角色之间通讯的基本单位是Request/Response,Request和Response的基本结构如下: RequestOrResponse => MessageSize (RequestMessage | ResponseMessage) 其中各字段的含义为: 名称 类型 描述 MessageSize int32