1分区消费模式是客户端直接使用(任何语言写的)使用Kafka提供的协议向服务端发送RPC请求获取数据,服务端收到客户端的RPC请求,最后将数据构造成RPC响应返回给客户端,客户端解析对应的RPC响应获取数据。Kafka支持的协议很多,最主要用到的有:获取消息的FetchRequest和FetchResponse获取偏移量的OffsetRequest和OffsetResponse获取偏移量的OffsetCommitRequest和OffsetCommitResponse获取元数据的MetadataRequest和MetadataResponse生产消息的ProducerRequest和ProducerResponse1.1分区消费模式server端源码流程2Group消费模式2.1流程3总结3.1Partition消费模式特点指定消费topic、partition和offset是通过向server发送RPC请求来消费的,需要自己提交offset,需要处理各种错误自己,如:leader切换错误需要自己做处理消费者负载均衡策略3.2Group消费模式特点最终通过向服务器发送RPC请求完成(与分区消费模式相同)。群消费模式由Kafka服务器处理各种错误,然后将消息放入队列并封装为迭代服务器(队列是一个FetchedDataChunk对象),客户端只需要在iterator上迭代取消息即可,而Kafka服务器通过调度器周期性提交当前消费的offset,客户端无需负责Kafka服务器处理消费者负载均衡监控工具KafkaOffsetMonitor和KafkaManager都是基于分组消费模式,所以尽量使用组消费模式,除非你需要自己管理offset,比如你想自己实现消息传递的其他语义,自己处理各种错误,根据你的业务需要本文转载自微信公众号“JavaEdge”,可通过以下二维码关注。转载本文请联系JavaEdge公众号。
