Kafka新旧版本对比

kafka product新旧对比,新版本的优势

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

kafka consumer 新旧版本对比

1.单线程设计--单个consumer线程可以管理对个分区的消费Socker连接,极大地简化了实现。0.10.1.0版本额外引入一个后台心跳线程,不过双线程设计依然比旧版本consumer的
多线程设计要简单的多。
2.位移提交与保存由kafka来处理,不在保存在zookeeper中,而是单独保存在Kafka的一个内部topic中,避免了zookeeper频繁读写的性能瓶颈,
同时也依托Kafka的备份机制天然实现位移的高可用管理。
3.消费者组的集中式管理,原来由zookeeper来管理位移,还要负责管理整个消费者组成员。新版本改进了设计,实现了一个集中式协调者的角色。现在都交给该角色管理,
对于group的管理更加可控。

kafka在window和linux的区别

1.kafka新版本clients在设计底层网络库采用java的Selector机制,而在linux上的实现机制就是epoll;但是在windows平台商,java NIO的Selector
底层使用select模型而非IOCP实现的,只有javaNIO2才是使用IOCP实现的。因此在linux上部署kafka要比在windows上部署能够得到更高效的I/O处理性能。
2.linux网络传输优势。底层采用sendfile系统调用,即linux提供的零拷贝技术。windows提供函数TransmitFile来支持零拷贝,在java 8u60版本才
支持FileChannel的transferTO方法调用该函数。
3.epoll比select模型高级。epoll取消轮训机制,使用的是回调机制。当底层连接socket较多时,可以避免很多无意义的CPU时间浪费。IOCP模型是异步I/O模型,
但由于其系统局限性,并没有广泛应用。
posted @ 2020-05-20 16:28  snail灬  阅读(1396)  评论(0编辑  收藏  举报