Kafka新版本API特性

在kafka中,新版本api主要是针对java版本的producer和consumer。

Producer
新版本的Producer,相对于旧版本而言,在设计理念上具有以下优势:

  • 发送过程被划分到两个不同的线程:用户主线程和Sender I/O线程,逻辑更加容易把控。
  • 完全异步发送消息,并提供回掉机制(callback)用于判断发送成功与否。
  • 分批机制(batching),每个批次中包括多个发送请求,提升整体吞吐量。
  • 更加合理的分区策略:对于没有指定key的消息而言,旧版本Producer分区策略是默认在一段时间内将消息发送到固定的分区,这容易造成数据倾斜(skewed);新版本采用轮询方式,消息发送将更加均匀。
  • 底层统一使用基于Java的Selector的网络客户端,结合Java的Future实现更加健壮和优雅的生命周期管理。

Consumer
新版本的Consumer,相对于旧版本而言,在设计上的突出优势如下:

  • 单线程设计——单个consumer线程可以管理多个分区的消费Socket连接,极大地简化了视线。虽然在0.10.1.0版本中额外引入了一个后台心跳线程(background hearbeat thread),不过双线程的设计依然比旧版本consumer鱼龙混杂的多线程设计简单得多。
  • 位移提交和保存交由Kafka来处理——位移不再保存到zookeeper中,而是单独保存在Kafka的一个内部的topic中,这种设计即避免了Zookeeper的频繁读/写的性能瓶颈,同时在Kafka的内部的备份机制天然地视线了位移的高可用管理。
  • 消费者组的集中式管理——上面提到了Zookeeper要管理位移,其实它还负责管理整个消费者组(consumer group)的成员。者进一步加重了对于zookeeper的依赖。新版本consumer改进了这种设计,实现了一个集中式协调者(corrdinator)的角色。所有组成员的管理都交由该coordinator负责,因此对于group的管理将更加可控。
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 大致可以通过上述情况进行排除 1.kafka服务器问题 查看日志是否有报错,网络访问问题等。 2. kafka p...
    生活的探路者阅读 12,239评论 0 10
  • 一、入门1、简介Kafka is a distributed,partitioned,replicated com...
    HxLiang阅读 8,930评论 0 9
  • 我们美学老师说过,每个人生来都是带着一个使命的,像一个颗颗的种子,被风偶然的吹落人间。 我好奇,如果这种使命是与生...
    青果吧阅读 3,401评论 0 1
  • 昨天晚上沛沛玩游戏到了10点多钟,我先睡了,沛沛主动说,我把灯调暗一点。 过了一会儿,爸爸也洗完睡觉了,我看沛沛还...
    梁琰阅读 548评论 0 0
  • 3《孙子兵法》里的投资战略 前几日听得到专栏“张潇雨的经典案例课”,讲美团的创始人王兴的时候,提到王兴打赢的几次漂...
    姜一得阅读 3,902评论 0 3

友情链接更多精彩内容