标签:资料 rod 生产者消费者 ssl sdk 现在 actor idt author
目前我们部分系统还在使用Kafka0.8.2.2 的版本。
0.8.2.2版本发行于2014年10月28号,距今已经过去4年多的时间。
三年的时间,Kafka截至到(2018-02-28),已经累计发布了14个版本,最新版本为1.0.0,由此,0.8.2已经远远落后于Kafka的最新版本14个版本,很多新特性和功能比新版本有较大差距。
0.8.2.2到1.0.0版本中间有0.9.x,0.10.x,0.11.x,1.0.0等四个大本版本的更迭,集中讨论0.8存在的问题以及0.9.x,0.10.x、0.11.x、1.0.0四大版本的新特性做分析说明。
l 节点ID没有自动分配,需要在配置文件中设置Broker.ID=1,在0.9.x版本增加了节点自动分配的特性。
l ZkClient重新连接后发生UnknownHostException异常,ZkClient异常死掉。
l Broker-Topic数据未与Zookeeper同步。
l Kafka生产者和消费者存在资源泄漏的风险。
l 【Kafka-2147】复制因子之间负载不均衡,导致某一个分区数据突发增长(常见于重做Broker节点或添加删除Broken节点,增加分区)。
l 【Kafka-2163】偏移量管理器处理过期偏移量清理时,丢失了当前消费者正常的偏移量(Offset值为负数或者无效值)
l Flink的SDK组件有问题,Kafka宕机,容易导致Flink无限重启。
l Kafka的0.8版本的sdk支持有限,大部分都不支持了。(SDK不再同步更新)
l 更多详情可查看连接
https://archive.apache.org/dist/kafka/0.9.0.0/RELEASE_NOTES.html
经过统计,0.8.x版本大大小小的Bug共计289个,其中大部分问题和Bug都在0.9以及更高版本中得到修复。
截至目前版本,Kafka0.8.2中没有提供任何安全机制,但是从0.9版本开始,Kafka开始提供了可选的安全机制,主要包括认证和授权。
一、安全特性:
0.9之前,Kafka的安全方面几乎为零,Kafka集群提供了安全性。其中主要包括:
1、 Broker使用SSL或者SASL(Kerberos),验证客户端(生产者消费者)、其他Broker或工具的连接。
2、 从Broker连接到Zookeeper的身份认证
3、 Broker和Client之间做数据传输时,Broker之间或使用SSL的Broker和Client之间的数据加密。(使用SSL时,性能会降低)
4、 Client的Read和Write操作有验证。
二、KafkaConnect
全新的功能模块,主要用于与外部系统、数据集建立连接,实现数据的流入流出。
例如,可以通过KafkConect实现:
往一个文本文件输入数据,数据可以实时传输到Topic中。
三、新的ConsumerAPI
新的Consumer中,取消了High-level、Low-Level之分,都是自己维护Offset。
这样做的好处就是避免应用出现异常时,数据为消费成功,但是Offset已经提交,导致消息丢失。
Kafka可以自己维护Offset消费者的Position,也可以开发这自己维护Offset。
消费时,可以执行Partition消费
可以使用外部存储记录Offset(业务数据库)。
自行控制Consumer的消费位置。
可以多线程消费。
目前0.10.x发行了一下几个版本
版本号 |
发行时间 |
0.10.0.0 |
2016-05-22 |
0.10.0.1 |
2016-08-10 |
0.10.1.0 |
2016-10-20 |
0.10.1.1 |
2016-12-20 |
0.10.2.0 |
2017-02-21 |
0.10.2.1 |
2017-04-26 |
支持Scala2.10、2.11、2.12版本
目前0.11.x发行了以下几个版本
版本号 |
发行时间 |
0.11.0.0 |
2017-06-28 |
0.11.0.1 |
2017-09-13 |
0.11.0.2 |
2017-11-13 |
支持Scala2.11和2.12版本,不再支持2.10版本
0.11版本,是个里程碑式的大版本。每一个改动都值的详细的研究。
Kafka将该参数的默认值改为False,不再允许Unclean leader选举的情况。在正确性和高可用性之间选择了正确性,如果要保证高可用性,需要将该参数显示的声明为true
之前的版本中,都是取最小者,在0.11版本中,强制使用该参数值,如果不满足,则会抛出GROUP_COORDINATOR_NOT_AVAILABLE 异常,
假如指定的复制因子与该值不一致,则创建Topic不成功。
Record增加了Header,每一个Header时KV存储,具体的Header设计可以参见KIP-82
为了缩短多Consumer首次Relalance的时间,增加了Group.initial.relance.delay.ms的设置,用于开启Relance延时,延时过程中可以有更多的Conumer加入组,提升了性能,同时也带来了消费延时。
经常遇见消费者分配不均匀的情况,增加了partion.assignment.strategy=
Org.apach.kafka.clients.consumer.stickassignore的设置。
1、 Contrller重新设计
a) 采用了单线程+基于消息队列的方式,一定程度上应该会提升性能。
2、 支持EOS
EOS流式处理。
1.0.0版本发布于2017年11月1日
支持Scala2.11和2.12两个版本。
Kafka1.0.0也是一个里程碑是的大版本。
但是我们使用Flink的版本最高支持到Kafka0.11.x,所以,关于1.0.0只简单了解,不进行深入分析。
我们对各个版本做了新特性的了解之后,结合现有的各大平台组件(Flink等),做以下表格对比:
特性/Kafka版本 |
0.8.x |
0.9.x |
0.10.x |
0.11.x |
1.0.0 |
StreamAPI (流式计算支持) |
不支持 |
支持 |
增强 |
增强 |
增强 |
安全性 (数据传输,连接等) |
无 |
SSL/SASL 验证连接 授权客户端 |
优化支持 SASL/PLAN |
优化 |
优化 |
平滑升级 (不停机升级) |
不支持 |
不支持 |
0.10.2 |
支持 |
支持 |
KafkaConnact (数据导入导出) |
不支持 |
支持 |
优化 |
优化 |
优化 |
当前Fink (支持的Kafka版本) |
支持 |
支持 |
支持 |
支持 |
不支持 |
Flume1.5.2 |
支持 |
支持 |
有类似对接 |
不确定 |
不确定 |
SDK (.net-confluent) |
支持 |
支持 |
支持 |
支持 |
不支持 |
Zookeeper版本 |
3.4.6 |
3.4.6 |
3.4.8-3.4.9 |
3.4.10 |
3.4.10 |
JDK |
JDK1.7-U51 |
JDK1.8U5 |
JDK1.8U5 |
JDK1.8U5 |
JDK1.8U5 |
KafkaManager |
支持 |
支持 |
支持 |
支持 |
不支持 |
Scala |
2.9.1/2.9.2 2.10/2.11 |
2.10/2.11 |
2.10/2.11 |
2.11/2.12 |
2.11/2.12 |
以上分析,结合Fink和Flume的版本支持,我们目前选定0.10.2版本作为Kafka0.8.2的替换版本。
A fully featured .NET client for Apache Kafka based on librdkafka (a fork of rdkafka-dotnet).
Kafka Version: 0.8.x, 0.9.x, 0.10.x, 0.11.x
Maintainer: Confluent Inc. (original author Andreas Heider)
License: Apache 2.0
https://github.com/confluentinc/confluent-kafka-dotnet
官方指定的SDK,为ConfluentPlatform中的一部分,目前支持版本较多,各方面支持都做得很到位,用户基数也比较大。
在0.9.0.0版中,Kafka社区添加了一些特性,通过单独使用或者一起使用这些特性,提高了Kafka集群的安全性。目前支持下列安全措施:
值得注意的是,安全是可选的 - 支持非安全集群,也支持需要认证,不需要认证,加密和未加密clients的混合集群。 以下指南介绍了如何在clients和brokers中配置和使用安全功能。
标签:资料 rod 生产者消费者 ssl sdk 现在 actor idt author
原文地址:https://www.cnblogs.com/likethis/p/12001494.html