今天继续和大家聊一下,kafka
的各种发行版。kafka
历经数年的发展,从最初纯粹的消息引擎,到近几年开始在流处理平台生态圈发力,衍生出了各种不同特性的版本。
你了解几种kafka
kafka
的确有好几种,这里我不是指他的版本,是指存在多个组织或公司发布不同特性的kafka
。你应该听说过Linux
发行版,比如我们熟知的CentOS
、RedHat
、Ubuntu
等,它们都是Linux
系统,其实就是因为它们是不同公司发布的Linux
系统,即不同的发行版。kafka
也同样有多个发行版。
Apache Kafka
Apache Kafka
是最“正统”的kafka
,也应该是你最熟悉的发行版了。自kafka
开源之初,它便在Apache
基金会孵化并最终毕业成为顶级项目,也被称为社区版kafka
。重要的是,它是后面其他所有发行版的基础。也就是说,后面提到的其他发行版,要么是原封不动地继承了Apache Kafka
,要么是在此之上扩展了新功能,总之Apache Kafka
是我们学习和使用kafka
的基础。
Cloudera/Hortonworks Kafka
Cloudera
提供的CDH
和Hortonworks
提供的HDP
是最常见的大数据平台,里面集成了目前主流的大数据框架,能够帮助用户实现从分布式存储、集群调度、流处理到机器学习、实时数据库等全方位的数据处理。我了解到很多创业公司在搭建数据平台时首选就是这两个产品。不管是CDH
还是HDP
里面都集成了Apache Kafka
,因此我把这两款产品中的Kafka
称为CDH Kafka
和HDP Kafka
。
当然在2018年10月两家公司宣布合并,共同打造世界领先的数据平台,合并成CDP
一款产品,但能肯定的是Apache Kafka
依然会包含其中,并作为新数据平台的一部分对外提供服务。
Confluent Kafka
Confluent
公司,2014年,Kafka
的3个创始人Jay Kreps
、Naha Narkhede
和饶军离开LinkedIn
创办了Confluent
公司,专注于提供基于Kafka
的企业级流处理解决方案。2019年1月,Confluent
公司成功融资D轮1.25亿美元,估值也到了25亿美元,足见资本市场的青睐。
这里说点题外话, 饶军是我们中国人,清华毕业的大神级人物。我们已经看到越来越多的Apache
顶级项目创始人中出现了中国人的身影,另一个例子就是Apache Pulsar
,它是一个以打败Kafka
为目标的新一代消息引擎系统。至于在开源社区中活跃的国人更是数不胜数,这种现象实在令人振奋。
Confluent
公司,主要从事商业化Kafka
工具开发,并在此基础上发布了Confluent Kafka
。Confluent Kafka
提供了一些Apache Kafka
没有的高级特性,比如跨数据中心备份、Schema
注册中心以及集群监控工具等。
特性对比
说完世面上常见的kafka
,我们来比较一下他们的特性
Apache Kafka
Apache Kafka
,它现在依然是开发人数最多、版本迭代速度最快的kafka
。如果你使用Apache Kafka
碰到任何问题并提交问题到社区,社区都会比较及时地响应你。这对于我们kafka
普通使用者来说还是比较友好的。
但是Apache Kafka
的劣势在于它仅提供最最基础的组件,对于像Kafka Connect
额外的数据工具,社区版kafka
只提供了一种连接器,即读写磁盘文件的连接器,而没有与其他外部系统交互的连接器,在实际使用过程中需要自行编写代码实现。另外Apache Kafka
没有提供任何监控框架或工具,你需要借助第三方的监控框架实现对kafka
的监控。目前有一些开源的监控框架可以帮助我们用于监控Kafka
(比如Kafka manager
,Kafka Eagle
等)
总而言之,如果仅仅是需要一个消息引擎系统或是简单的流处理应用场景,同时需要对系统有较大把控,那么推荐你使用Apache Kafka
。
CDH/HDP Kafka
再说说大数据云平台公司发布的Kafka
(CDH/HDP Kafka)。这些大数据平台已经集成了Apache Kafka
,通过便捷化的界面操作将·Kafka·的安装、运维、管理、监控全部统一在控制台中。如果你是这些平台的用户一定觉得非常方便,因为所有的操作都可以在前端界面上完成,而不必去执行复杂的Kafka
命令。另外这些平台提供的监控界面也非常友好,通常不需要进行任何配置就能有效地监控 Kafka
。
这样做的结果是直接降低了你对Kafka
集群的掌控程度。毕竟你对底层的Kafka
集群一无所知,难以做到心中有数。这种Kafka
的另一个弊端在于它的滞后性。由于它有自己的发布周期,因此是否能及时地包含最新版本的Kafka
就成为了一个问题。比如CDH 6.1.0
版本发布时Apache Kafka
已经演进到了 2.1.0 版本,但CDH
中的Kafka
依然是 2.0.0 版本,显然那些在Kafka
2.1.0 中修复的Bug
只能等到CDH
下次版本更新时才有可能被真正修复,而整个CDH
升级还是略显繁重的。
简单来说,如果你需要快速地搭建消息引擎系统,或者你需要搭建的是多框架构成的数据平台且Kafka
只是其中一个组件,那么我推荐你使用这些大数据云平台公司提供的Kafka
。
Confluent Kafka
Confluent Kafka
目前分为免费版和企业版两种。前者和Apache Kafka
非常相像,除了常规的组件之外,免费版还包含 Schema
注册中心和REST proxy
两大功能。前者是帮助你集中管理Kafka
消息格式以实现数据前后兼容;后者用开放HTTP
接口的方式允许你通过网络访问Kafka
的各种功能,这两个都是Apache Kafka
所没有的。
除此之外,免费版包含了更多的连接器,都是Confluent
公司开发并认证过的,可以免费使用。至于企业版,则提供更多功能。最有用的当属跨数据中心备份和集群监控两大功能了。多个数据中心之间数据的同步以及对集群的监控历来是Kafka
的痛点,Confluent Kafka
企业版提供了强大的解决方案。
不过Confluent
公司暂时没有发展国内业务的计划,相关的资料以及技术支持都很欠缺,很多国内Confluent Kafka
使用者甚至无法找到对应的中文文档,因此目前Confluent Kafka
在国内的普及率比较低。
如果你需要用到Kafka
的一些高级特性,且没有预算成本压力,那么推荐使用Confluent Kafka
。