kafka各版本差异

kafka各版本差异。

kafka-0.8.2 新特性

producer不再区分同步(sync)和异步方式(async),所有的请求以异步方式发送,这样提升了客户端效率。producer请求会返回一个应答对象,包括偏移量或者错误信。这种异步方地批量的发送消息到kafka broker节点,因而可以减少server端资源的开销。新的producer和所有的服务器网络通信都是异步地,在ack=-1模式下需要等待所有的replica副本完成复制时,可以大幅减少等待时间。

在0.8.2之前,kafka删除topic的功能存在bug。

在0.8.2之前,comsumer定期提交已经消费的kafka消息的offset位置到zookeeper中保存。对zookeeper而言,每次写操作代价是很昂贵的,而且zookeeper集群是不能扩展写能力的。在0.8.2开始,可以把comsumer提交的offset记录在compacted topic(__comsumer_offsets)中,该topic设置最高级别的持久化保证,即ack=-1。__consumer_offsets由一个三元组< comsumer group, topic, partiotion> 组成的key和offset值组成,在内存也维持一个最新的视图view,所以读取很快。

kafka可以频繁的对offset做检查点checkpoint,即使每消费一条消息提交一次offset。

在0.8.1中,已经实验性的加入这个功能,0.8.2中可以广泛使用。auto rebalancing的功能主要解决broker节点重启后,leader partition在broker节点上分布不均匀,比如会导致部分节点网卡流量过高,负载比其他节点高出很多。auto rebalancing主要配置如下,

controlled.shutdown.enable ,是否在在关闭broker时主动迁移leader partition。基本思想是每次kafka接收到关闭broker进程请求时,主动把leader partition迁移到其存活节点上,即follow replica提升为新的leader partition。如果没有开启这个参数,集群等到replica会话超时,controller节点才会重现选择新的leader partition,这些leader partition在这段时间内也不可读写。如果集群非常大或者partition 很多,partition不可用的时间将会比较长。

1)可以关闭unclean leader election,也就是不在ISR(IN-Sync Replica)列表中的replica,不会被提升为新的leader partition。unclean.leader.election=false时,kafka集群的持久化力大于可用性,如果ISR中没有其它的replica,会导致这个partition不能读写。

2)设置min.isr(默认值1)和 producer使用ack=-1,提高数据写入的持久性。当producer设置了ack=-1,如果broker发现ISR中的replica个数小于min.isr的值,broker将会拒绝producer的写入请求。max.connections.per.ip限制每个客户端ip发起的连接数,避免broker节点文件句柄被耗光。

kafka-0.9 新特性

一、安全特性

在0.9之前,Kafka安全方面的考虑几乎为0,在进行外网传输时,只好通过Linux的防火墙、或其他网络安全方面进行配置。相信这一点,让很多用户在考虑使用Kafka进行外网消息交互时有些担心。

客户端连接borker使用SSL或SASL进行验证

borker连接ZooKeeper进行权限管理

数据传输进行加密(需要考虑性能方面的影响)

客户端读、写操作可以进行授权管理

可以对外部的可插拔模块的进行授权管理

当然,安全配置方面是可选的,可以混合使用。如:做过安全配置的的borkers和没有进行安全配置的borkers放在同一集群,授权的客户端和没有授权的客户端,也可以在同一个集群等等。具体配置详见官方文档。

二、Kafka Connect

这个功能模块,也是之前版本没有的。可以从名称看出,它可以和外部系统、数据集建立一个数据流的连接,实现数据的输入、输出。有以下特性:

使用了一个通用的框架,可以在这个框架上非常方面的开发、管理Kafka Connect接口

支持分布式模式或单机模式进行运行

支持REST接口,可以通过REST API提交、管理 Kafka Connect集群

offset自动管理

同时,官方文档中,也给出了例子。通过配置,往一个文本文件中输入数据,数据可以实时的传输到Topic中。在进行数据流或者批量传输时,是一个可选的解决方案。

三、新的Comsumer API

新的Comsumer API不再有high-level、low-level之分了,而是自己维护offset。这样做的好处是避免应用出现异常时,数据未消费成功,但Position已经提交,导致消息未消费的情况发生。通过查看API,新的Comsumer API有以下功能:

Kafka可以自行维护Offset、消费者的Position。也可以开发者自己来维护Offset,实现相关的业务需求。

消费时,可以只消费指定的Partitions

可以使用外部存储记录Offset,如数据库之类的。

自行控制Consumer消费消息的位置。

可以使用多线程进行消费

kafka-0.10 新特性

Kafka已经内置了机架感知以便隔离副本,这使得Kafka保证副本可以跨越到多个机架或者是可用区域,显著提高了Kafka的弹性和可用性。这个功能是由Netflix提供的

所有Kafka中的消息都包含了时间戳字段,这个时间就是这条消息产生的时间。这使得Kafka Streams能够处理基于事件时间的流处理;而且那些通过时间寻找消息以及那些基于事件时间戳的垃圾回收特性能为可能。

Apache Kafka 0.9.0.0版本引入了新的安全特性,包括通过SASL支持Kerberos。Apache Kafka 0.10.0.0现在支持更多的SASL特性,包括外部授权服务器,在一台服务器上支持多种类型的SASL认证以及其他的改进。

Kafka Connect得到了持续提升。在此之前,用户需要监控日志以便看到各个connectors以及他们task的状态,现在Kafka已经支持了获取的状态API这样使得监控变得更简单。同时也添加了控制相关的API,这使得用户可以在进行维护的时候停止一个connector;或者手动地重启那些失败的task。这些能够直观的在用户界面展示和管理connector目前可以在控制中心(Control Center)看到。

Kafka Consumer Max Records,在Kafka 0.9.0.0,开发者们在新consumer上使用poll()函数的时候是几乎无法控制返回消息的条数。不过值得高兴的是,此版本的Kafka引入了max.poll.records参数,允许开发者控制返回消息的条数。

协议版本改进,Kafka brokers现在支持返回所有支持的协议版本的请求API,这个特点的好处就是以后将允许一个客户端支持多个broker版本。

时间: 2024-10-29 03:17:32

kafka各版本差异的相关文章

AsyncTask的版本差异及其与Thread的使用场景

/** * AsyncTask相关总结 * * 1 异步任务AsyncTask在不同Android版本的差异. * 该差异主要是Android2.3和Android3.0及其之后的差异 * * 差异内容: * 在Android2.3中AsyncTask的调用可以并发执行. * 因为它在一个线程池中被调用.该线程池有5个核心线程,且最大线程数为128个. * 比如:同时启动10个任务,有5个任务能够立刻执行,另外5个任务则需等待;当有一个任务执行完毕后,第6个任务才会启动,以此类推. * 因为线程

BootStrap Validator 版本差异问题导致的submitHandler失效问题的解决方法_javascript技巧

我用过的两个版本: v0.5.2-dev,0.4.5 这里针对于提交方法进行说明一下,如下代码: <script> $(function () { $("#addUserForm").bootstrapValidator({ submitHandler: function(validator, form, submitButton) { // 版本号0.4.5支持 // 版本号v0.5.2-dev不再支持submitHandler配置 } }).on("succe

阿里云播放器SDK的正确打开方式 | 版本差异与三大典型应用场景(二)

阿里云播放器SDK(ApsaraVideo for Player SDK)是阿里视频云端到云到端服务的重要一环,除了支持点播和直播的基础播放功能外,还深度融合视频云业务,支持视频的加密播放.安全下载.首屏秒开.低延时等业务场景,为用户提供简单.快速.安全.稳定的视频播放服务.本文衔接上文,从版本.功能和典型应用场景等几个方面来介绍阿里云播放器SDK. 不同版本的播放器SDK 阿里云播放器SDK提供基础播放器.高级播放器和UI播放器三层框架满足不同用户.不同业务场景需求,开发者可根据自己的业务需求

[MySQL 版本差异] 丢失frm文件之后drop database的不同结果分析

背景  今天在讨论frm丢失后drop database失败的问题.简单复现如下.假设test库中有两个表t1, t2,执行如下脚本: bin/mysql -uroot –socket=run/mysql.sock   -e " drop database if exists test2; create database test2; use test2; create table t1 like test.t1; create table t2 like test.t2; " rm

内核版本差异-LSM在linux内核版本2.6.22之后如何注册安全模块

问题描述 LSM在linux内核版本2.6.22之后如何注册安全模块 在2.6.22之前我们可以通过register_security(ops)注册安全模块,加载成功后就可以进行访问控制,而在版本较高的内核中,例如我用的3.4.70 调用register_security(ops)是不能成功的,而unregister_security()函数在security.c中是不存在的,请问这种情况下,如何注册安全模块以及如何撤销该模块? 最后还想问Linux内核这样改的原因是什么? 求高手讲解下,多谢

Red Hat Enterprise Linux 6 “桌面”、“工作站”、“服务器” 版本差异比较

Red Hat Enterprise Linux 6,共有三个版本.通过安装发现,所谓的"桌面"."工作站"."服务器"这三个版本的区别就在于它们默认安装软件库不一样.桌面版本默认安装的软件库主要面向一般的办公与娱乐:工作站版本默认安装集成了一些开发程序:服务器版默认情况下没有GUI(图形界面). 如果要定制安装,要选择下图中的"现在自定义".   上图,在这个选项中,如果选择"服务器",默认则不会安装X

微软Excel的种种限制和差异详细介绍

  1 自定义格式的条件不能超过3个,但可以通过自定义单元格格式增加到6种颜色(边框等无法改).其他的限制有:不能输入常量数组.不能复制粘贴.不能更改条件顺序 2 没有办法添加"自动套用格式". 3 函数的嵌套不能超过7层(但可以用"定义名称"的方法解除嵌套函数的限制. 4 名称的长度不能超过255个字符,在单元格的公式的字符限制是1024个字符. 5 EXCEL 自动填充,字符型位数超过11位就不能自动填充. 6 没有办法插入GIF动画图片. 7 对工作簿间的引用

LinkedIn详细介绍了由他们开源的Kafka Monitor

Kafka Monitor项目的动机有三个: 需要监控和测试Kafka部署并跟踪主干稳定性,以便他们能够尽早捕获正在开发的变更集中的问题: 需要不间断地在生产集群上监控SLA,并不断地在测试集群上运行回归测试: 现有的监控框架无法满足其用例的扩展性.模块化需求,他们需要一个自定义的客户端库. 网站可靠性工程部门过去已经监控了输入速率.离线分区数和正在复制的分区数等指标,以确定Kafka集群的可用性和系统整体的健康状况.然而,问题在于,这类原始的值本身无法表明集群在终端用户体验方面是否真的可用.

如何查询Android.jar中HttpClient的版本?

问题描述 如题,如何查询Android.jar中HttpClient的版本?在使用Httpclient的时候,发现不同的Httpclient版本差异很大.因此想知道Android4.2和Android4.4上Httpclient的版本号.哪位知道?