3.新的Consumer
Kafka 0.8.2, Producer被重新设计, Kafka 0.9则重新设计了Consumer接口。它不再区分high-level consumer API和low-level consumer API,而是提供了一个统一的consumer API。
1).Kafka可以自行维护Offset、消费者的Position。也可以开发者自己来维护Offset,实现相关的业务需求。消费时,可以只消费指定的Partitions
2).可以使用外部存储记录Offset,如数据库之类的。
3).自行控制Consumer消费消息的位置。
4).可以使用多线程进行消费。
4.为用户定义配额
一个大的Kafka集群可能有多个用户。0.9以前,consumer 如果处理的消息非常快,可能会垄断整个broker的网络资源,producer也是如此。现在Kafka 0.9提供了基于client的用户配额控制。对于Producer可以控制每个client的每秒写的字节数,对于Consumer控制每个 client的每秒读的字节。
(二)、0.9 vs 0.10
1.Kafka Streams
Kafka Streams包含了一整套描述常见流操作的高级语言API(比如 joining, filtering以及aggregating records),这使得开发者可以快速开发强大的流处理应用程序。Kafka Streams提供了状态和无状态的处理能力,并且可以部署在很多系统之上。
2.Connectors连接状态/控制的REST API
在Kafka 0.10.0.0中,Kafka Connect得到了持续提升。
在此之前,用户需要监控日志以便看到各个connectors以及他们task的状态,现在Kafka已经支持了获取的状态API这样使得监控变得更简单。
同时也添加了控制相关的API,这使得用户可以在进行维护的时候停止一个connector;或者手动地重启那些失败的task。这些能够直观的在用户界面展示和管理connector目前可以在控制中心(Control Center)看到。
3.SASL改进
新的安全特性,包括通过SASL支持Kerberos。Apache Kafka 0.10.0.0现在支持更多的SASL特性,包括外部授权服务器,在一台服务器上支持多种类型的SASL认证以及其他的改进。
4.Rack Awareness
现在Kafka已经内置了机架感知以便隔离副本,这使得Kafka保证副本可以跨越到多个机架或者是可用区域,显著提高了Kafka的弹性和可用性。这个功能是由Netflix提供的。
5.Kafka Consumer Max Records
在Kafka 0.9.0.0,开发者们在新consumer上使用poll()函数的时候是几乎无法控制返回消息的条数。不过值得高兴的是,此版本的Kafka引入了max.poll.records参数,允许开发者控制返回消息的条数。
6.协议版本改进
Kafka brokers现在支持返回所有支持的协议版本的请求API,这个特点的好处就是以后将允许一个客户端支持多个broker版本。