kafka的类型
目前 有 3 种 Kafka 可供选择:
- Apache Kafka 一般日常提到的 Kafka 都指的是 Apache Kafka,这是最“正宗”的 Kafka,也称为 社区版 Kafka。
- Confluent Kafka,Confluent 公司是 Kafka 的 3 个创始人 Jay Kreps、Naha Narkhede 和饶军离开 LinkedIn 创办的,它主要从事商业化 Kafka 工具开发,并在此基础上发布了 Confluent Kafka。Confluent Kafka 提供了一些 Apache Kafka 没有的高级特性,比如跨数据中心备份、Schema 注册中心以及集群监控工具等。
- Cloudera/Hortonworks Kafka:Cloudera 提供的 CDH 和 Hortonworks 提供的 HDP 是非常著名的大数据平台,里面集成了目前主流的大数据框架,当然也包括 Apache Kafka,因此我把这两款产品中的 Kafka 称为 CDH Kafka 和 HDP Kafka。
特点比较
- Apache Kafka
- 优势是开发人数最多、版本迭代速度最快的 Kafka,且社区比较活跃,对开发者友好。劣势在于它仅仅提供最最基础的组件,没有提供任何监控框架或工具。
- 如果你仅仅需要一个消息引擎系统亦或是简单的流处理应用场景,同时需要对系统有较大把控度,那么我推荐你使用 Apache Kafka。
- Confluent Kafka 目前分为免费版和企业版两种。前者和 Apache Kafka 非常相像,除了常规的组件之外,免费版还包含 Schema 注册中心和 REST proxy 两大功能。后者用开放 HTTP 接口的方式允许你通过网络访问 Kafka 的各种功能,这两个都是 Apache Kafka 所没有的。
- 优势在于集成了很多高级特性且由 Kafka 原班人马打造,质量上有保证;缺陷在于相关文档资料不全,普及率较低,没有太多可供参考的范例。
- 如果你需要用到 Kafka 的一些高级特性,那么推荐你使用 Confluent Kafka。
- CDH/HDP Kafka,这些大数据平台天然集成了 Apache Kafka,通过便捷化的界面操作将 Kafka 的安装、运维、管理、监控全部统一在控制台中。使用起来非常方便,不过这样做的结果是直接降低了你对 Kafka 集群的掌控程度。
- 优势在于操作简单,节省运维成本;缺陷在于把控度低,演进速度较慢。
- 如果你需要快速地搭建消息引擎系统,或者你需要搭建的是多框架构成的数据平台且 Kafka 只是其中一个组件,那么我推荐你使用这些大数据云公司提供的 Kafka。
kafka的版本
目前 Kafka 已经迭代到了 2.8.0 版本。再下载 Kafka 时会发现 Kafka 的版本号大概是这样的:
Scala 2.12 - kafka_2.12-2.8.0.gz
Scala 2.13 - kafka_2.13-2.8.0.gz
前面的版本号是编译 Kafka 源代码的 Scala 编译器版本,如 2.12 或者 2.13。
Kafka 服务器端的代码完全由 Scala 语言编写,后面 2.8.0 才是 Kafka 的版本号。由 3 个部分构成,即“大版本号 - 小版本号 - Patch 号“。
不论你用的是哪个版本,都请尽量保持服务器端版本和客户端版本一致,否则你将损失很多 Kafka 为你提供的性能优化收益。还有就是在生产环境不要贸然升级到最新版本,新版本多多少少都存在一些小问题,至少要在测试环境确认没问题后再升级。