kafka入门
文章目录
kafka与消息引擎关系
Apache kafka 并不仅仅是消息引擎,同时也是一个分布式流处理平台
kafka设计之初旨在提供三个方面的特性:
- 提供一套API实现生产者和消费者
- 降低网络传输和磁盘存储开销
- 实现高伸缩性架构
Kafka 社区于 0.10.0.0 版本正式推出了流处理组件 Kafka Streams,也正是从这个版本开始,Kafka 正式“变身”为分布式的流处理平台,而不仅仅是消息引擎系统了。今天 Apache Kafka 是和 Apache Storm、Apache Spark 和 Apache Flink 同等级的实时流处理平台
kafka与其他主流发数据流式计算框架相比优点
-
更容易实现端到端的正确性(Correctness),流处理要最终替代它的“兄弟”批处理需要具备两点核心优势:要实现正确性和提供能够推导时间的具。实现正确性是流处理能够匹敌批处理的基石。所有的数据流转和计算都在 Kafka内部完成,故 Kafka 可以实现端到端的精确一次处理语义。
-
对自己流式计算的定位。kafka将自己定位就是用于搭建实时流处理的客户端库,而非一个完整的功能系统。Apache kafka需要自己选择合适的工具灵活实现自己需要的各种功能,比如:集群调度,弹性部署
kafka的不同版本
-
Apache Kafka
优点:
- 开发人数多,版本迭代快,社区活跃
- 仅提供最基础的组件,对于简单场景足够,对系统有较大的的把控度
缺点:
- 仅提供基础核心组件,缺乏一些高级特性。如果需要与其他外部系统交互连接,需要自己编写代码
- 没有提供任何监控框架或工具,需要借助第三方监控框架
**总结:**仅仅需要一个消息引擎系统亦或是简单的流处理应用场景,同时需要对系
统有较大把控度,那么我推荐你使用 Apache Kafka
-
Confluent Kafka
优点:
- 提供免费版和企业版。免费版中相对Apache Kafka除了常规组件外,还有Schema注册中心(帮助集中管理 Kafka 消息格式以实现数据前向 / 后向兼容)和REST proxy(用开放 HTTP 接口的方式允许你通过网络访问 Kafka 的各种功能 )两大功能。
- 免费版中提供了更多的连接器
- 企业版除了免费版的功能外,还提供了跨数据中心备份和集群监控两大功能,这些都是Apache Kafka没有的
缺点:
- Confluent Kafka国内相关资料、技术支持比较少,在国内普及率比较低,可参考范例少
**总结:**如果你需要用到 Kafka 的一些高级特性,那么推荐你使用 Confluent
Kafka
-
CDH/HDP Kafka
优点:
- 天然集成Apache Kafka,通过便捷化UI界面将Kafka的安装、运维、管理、监控全部统一在控制台。
- 不需要复杂的命令即可操作Kafka。操作简单,节省运维成本
缺点:
- 对Apache Kafka的封装降低自己对Kafka集群的掌握程度
- 滞后性。因为内部集成的是Apache Kafka,所以可能当Apache Kafka新版本发布时,CDH/HDP Kafka仍使用之前版本Apache Kafka。
**总结:**如果你需要快速地搭建消息引擎系统,或者你需要搭建的是多框架构成的数据平 台且 Kafka 只是其中一个组件,那么我推荐你使用这些大数据云公司提供的 Kafka
Kafka版本号
不同版本号之间的Kafka还是有不少差异区别,在实际开发过程中并不总是选择最新版本即为最佳选择。所以需要了解下不同版本号之间的差异
Kafka版本命名规则
在下载的时候可以看到
Scala 2.11 - kafka_2.11-2.2.1.tgz(asc,sha512)
- Scala 2.11:是指编译Kafka源代码的Scala编译器版本。
- kafka_2.11-2.2.1.tgz:真正版本号时2.2.1.
- 第一个2表示大版本号(Major Version)
- 中间的2表示小版本号或次版本号(Minor Version)
- 最后一个1表示修改版本号(Patch),即打了几次布丁
需要注意的是,Kafka版本号在1.0.0版本之后,宣布版本命名规则从原来的4位演进成为3位,但命名规则仍是:“大版本号-小版本号-Patch号”
Kafka版本演进
Kafka总共7个大版本,分别为:0.7、0.8、0.9、0.10、0.11、1.0和2.0,里面还包括许多次小版本和Patch版本。
0.7
最开始版本,只提供最基础的消息队列,没有副本机制,所以并不推荐使用
0.8
- 引入了副本机制,比较好的可以保证消息无丢失
- 但是是在使用老版本的客户端API,即在使用生产者消费者时需要制定Zookeeper地址而非Broker地址,默认使用的是同步发送,所以吞吐量并不高。虽然可以设置为异步发送,但可能会造成消息丢失
- 0.8.2.0引入了新版本的Producer API,需要制定Broker地址
- 如果要是用0.8版本,至少升到0.8.2.2版本。该版本中老版消费者API比较稳定,但不要使用新版Producer API,bug比较多
0.9
- 增加了基础的安全认证 / 权限功能,同时使用 Java 重写了新版本消费者 API,另外还引入了 Kafka Connect 组件用于实现高性能的数据抽取
- 新版本Producer API 在这个版本中算比较稳定了
- 使用0.9版本时注意不要使用新版本 Consumer API ,bug比较多
0.10.0.0
- 引入了 Kafka Streams。从这个版本起,Kafka 正式升级成分布式流处理平台
- 中自 0.10.2.2 版本起,新版本 Consumer API 算是比较稳定了
- 如果要是用0.10版本,你至少升级到 0.10.2.2 然后使用新版本 Consumer API。0.10.2.2 修复了一个可能导致 Producer 性能降低的 Bug。
0.11.0.0
- 一个是提供幂等性 Producer API 以及事务(Transaction) API;另一个是对Kafka 消息格式做了重构
- 如果要是用0.11版本,至少将你的环境升级到0.11.0.3,因为这个版本的消息引擎功能已经非常完善了
1.0、2.0
- 主要还是 Kafka Streams的各种改进,在消息引擎方面并未引入太多的重大功能特性