微信公众号:[深广大数据Club]
关注可了解更多大数据相关的技术资讯。问题或建议,请公众号留言;
如果你觉得深广大数据Club对你有帮助,欢迎赞赏[1]
今天apache kafka 2.0.0版本正式发布,近一年kafka的发展势头迅猛,也新增了很多亮眼的功能。可以说是目前大数据生态圈中流式数据使用最多,范围最广的技术框架。apache 2.0.0版本主要对以下几个方面进行了增强:
加强对于kafka在线升级的方便性
监控指标的增强
更全面的数据安全支持
功能上的优化增强
加强对于kafka在线升级的方便性
KIP-268:简化Kafka Streams重新平衡元数据升级
利用Version prob可以是的就版本的任务分配者告知其他高版本的成员暂时使用就版本的rebalance原数据编码,达到让用户依然能够通过rolling bounce在线升级kafka streams的版本。当所有参与的成员全部升级完毕后,最后一次rebalance会自动更换回新版本的元数据编码。
KIP-279:在快速领导者故障转移后修复领导者和追随者之间的日志差异
复制协议已得到改进,将主本的epoch信息扩展到offsetForLeaderEpochResponse。以避免在快速领导者故障转移期间,领导者和追随者之间的日志分歧
KIP-283:用于下转换的高效内存使用
在从代理向消费者发送消息时,Kafka通常使用零拷贝优化将数据从文件系统缓存传输到网络套接字。仅当使用者能够理解磁盘消息格式时,此优化才有效。
较旧的消费者期望比日志中存储的消息格式更旧。代理需要将消息转换为消费者能够理解的适当的旧格式(即,下转换消息)。在这种情况下,零拷贝优化不起作用,因为我们需要将消息从文件系统缓存读入JVM堆,将消息转换为适当的格式,然后通过网络套接字发送它们。我们最终可能会遇到这种下转换过程导致内存不足的情况,因为我们最终会将大量数据复制到JVM堆中。
减少下转换过程的总体占用空间,包括内存使用情况和所需内存的保存时间。
当我们限制内存使用时,我们会无意中影响吞吐量和延迟特性。可用于下转换的内存量较少,可以在对消费者的单个回复中将较少的消息一起批处理。由于可以将更少的消息一起批处理,消费者将需要更多的往返以消耗相同数量的消息。我们需要一种能够最大限度地减少对吞吐量和延迟特性影响的设计。
监控指标的增强
KIP-223 - 向KafkaConsumer添加每个主题的最小负责人和每个分区的潜在客户指标
新增lead metrics,定义分区的起始偏移量(log-start-offset)与消费者在分区上的位置距离,当指标值接近0时,代表消费者有迭出可消费范围因而丢失数据的危险。
KIP-237:更多控制器健康指标
增加了包括控制器内部请求队列的长度,时间处理之前在此队列中等待所需的平均时间(请求处理效率)等的健康指标。
更全面的数据安全支持
KIP-255:通过SASL/OAUTHBEARER进行OAuth身份验证
使用OAuth2 bearer token作为kafka身份验证的框架。SASL/OAUTHBEARER实现是
可使用回调进行标记检索和验证。
KIP-277 - CreateTopics API的细粒度ACL
修改当前ACL检查从create on cluster基础上新增了create on topic。
请注意,检查是在两个执行路径上执行的:显式创建和自动创建主题。
KIP-290:支持前缀ACL
增加了对前缀ACL的支持,简化了访问控制大型安全部署中的管理。 批量访问主题,
现在可以授予具有前缀的使用者组或事务ID使用单一规则。 创建主题的访问控制也是如此
改进以允许授予访问权限以创建特定主题或带前缀的主题。
KIP-249:向KafkaAdminClient添加委派令牌操作
KIP-294 - 默认启用TLS主机名验证
现在,SSL连接默认启用主机名验证确保默认SSL配置不受影响中间人攻击。 您可以停用此验证
使用其他机制执行验证的部署。
默认值ssl.endpoint.identification.algorithm将更改为HTTPS。如果需要,可以通过将config设置为空字符串来禁用主机名验证。默认值将适用于客户端配置(生产者/消费者/管理客户端等)和代理间连接。配置可以在侦听器级别设置。
配置项为:
功能上的优化增强
K303:在Streams Sink中添加动态路由.
目前,必须事先知道所有使用的输出topic,而无法动态的将输出记录发送到对应的topic.
假如存在这样一个需求,需要根据用户的某个字段信息将记录输出到指定的topic中,或许最开始我们知道某一部分固定的字段值,但是字段存在增加的可能,而前期我们所指定的topic就无法满足后续的需求了。
kafka 通过允许用户根据每个记录的键值对动态选择所要发送到哪个topic,可以消除streams在路由决策更改的时候必须更新和重启kstreams应用程序的负担。
KIP-244:为Kafka Streams Processor API添加Record Header支持
所有Kafka组件(代理,生产者API,消费者API,连接API)都引入了标头。
标题可以用于不同的场景,用户可根据头部信息对数据信息进行不同的处理操作。(例如,在不同组件之间传播跟踪上下文,可以用于过滤的操作信息等)。
标题必须向下传播以使它们在Sink上可用,并且可以在处理器上使用它们(例如,在分布式跟踪的情况下,它将用于创建Spans并为后续节点注入上下文),使用Headers API。
KIP-188:删除对java7的支持
Oracle最后一次公开发布Java 7包含大量已知的安全漏洞,如果底层运行时本身不安全,Kafka安全功能的有效性会降低。出于对kafka安全功能的考虑以及java8许多引人入目的功能吸引,kafka决定启用对java7的支持。
java8新能能:
赞赏
如果你觉得到深广大数据Club对你有帮助,欢迎赞赏,有你的支持,我们一定会越来越好!
领取专属 10元无门槛券
私享最新 技术干货