引言
深度使用kafka协议做了两年的产品,想把kafka里面的一些东西记录一下。
kafka协议
Kafka 使用基于 TCP 的二进制协议,所有的Apis都是由[request,reponse]对来构成。
kafka鉴权链
sequenceDiagram
participant C as Client
participant B as Broker
C ->> B: ApiVersions Request
B -->> C: ApiVersions Response
C ->> B: SaslHandshake Request
B -->> C: SaslHandshake Response
C ->> B: SaslAuthenticate Request
B -->> C: SaslAuthenticate Response
kafka消费者
sequenceDiagram
participant C as Consumer
participant B as Broker
C ->> B: ApiVersions Request
B -->> C: ApiVersions Response
C ->> B: Metadata Request
B -->> C: Metadata Response
C ->> B: FindCoordinator Request
B -->> C: FindCoordinator Response
sequenceDiagram
participant C as Consumer
participant B as Broker
C ->> B: JoinGroup Request
B -->> C: JoinGroup Response
C ->> B: SyncGroup Request
B -->> C: SyncGroup Response
loop
C ->> B: Heartbeat Request
B -->> C: Heartbeat Response
end
C ->> B: OffsetFetch Request
B -->> C: OffsetFetch Response
C ->> B: OffsetCommit Request
B -->> C: OffsetCommit Response
C ->> B: LeaveGroup Request
B -->> C: LeaveGroup Response
sequenceDiagram
participant C as Consumer
participant B as Broker
C ->> B: ListOffset Request
B -->> C: ListOffset Response
C ->> B: Fetch Request
B -->> C: Fetch Response
kafka生产者
sequenceDiagram
participant P as Producer
participant B as Broker
P ->> B: ApiVersions Request
B -->> P: ApiVersions Response
P ->> B: Metadata Request
B -->> P: Metadata Response
sequenceDiagram
participant P as Producer
participant B as Broker
P ->> B: Produce Request
B -->> P: Produce Response