应该选择哪种kafka

我们上一节谈了kafka当前的定位问题,kafka不再是一个单纯的消息引擎系统,而是能够实现精确一次(exactly-once)语义处理的实时流平台。我们到目前为止所说的kafka都是Apache kafka。kafka是Apache社区的一个顶级项目,如果我们把视角从流处理平台扩展到流处理生态圈,kafka其实还有很长的路要走,毕竟是半路出家转型成流处理平台的。前面我们提到过kafka streams组件,正是它提供了kafka实时处理流数据的能力。但是其实还有一个重要的组件没有提及,那就是kafka connect。

我们在评估流处理平台的时候,框架本身的性能、所提供操作算子(operator)的丰富程度固然是重要的评判指标,但是框架与上下游交互的能力也是非常重要的。能够与之进行数据传输的外部系统越多,围绕它打造的生态圈就越牢固,因而也就有更多的人愿意去使用它,从而形成正向反馈,不断地促进该生态圈的发展。就kafka而言,kafka connect通过一个个具体的连接器(connector),串联起上下游的外部系统。

整个kafka生态圈如下图所示,值得注意的是,这张图的外部系统只是kafka connect组件支持的一部分而已。目前还有一个可喜的趋势是使用kafka connect组件的用户越来越多,相信在未来会有越来越多的人开发自己的连接器。

在这里插入图片描述

说了这么多,可能会有人好奇这跟这一节的主题有什么关系呢?其实清晰地了解kafka的发展脉络和生态圈现状,对于我们选择合适的kafka版本大有裨益。下面我们就进入今天的主题—如何选择kafka版本。

你知道几种kafka

咦?kafka不是一个开源框架吗?什么叫有几种kafka,实际上,kafka的确有好几种kafka啊?实际上,kafka的确有好几种,这里我不是指它的版本,而是指存在多个组织或者公司发布的不同kafka。就像linux的发行版,有Ubuntu、centos等等,虽说kafka没有发行版的概念,但姑且可以这样的近似的认为市面上的确存在着多个kafka"发行版"。当然用发行版这个词只是为了这里方便解释,但是发行版这个词在kafka生态圈非常陌生,以后聊天时不要用发行版这个词。下面我们就看看kafka都有哪些"发行版"

  • Apache kafka:

    Apache kafka是最"正宗"的kafka,也应该是最熟悉的发行版了。自kafka开源伊始,它便在Apache基金会孵化并最终毕业成为顶级项目,也被称之为社区版kafka。目前我也是以这个版本的kafka进行介绍的。更重要的是,它是后面其他所有发行版的基础。也就是说,其他的发行版要么是原封不动的继承了Apache kafka,要么是在其基础之上进行了扩展、添加了新功能,总之Apache kafka是我们学习和使用kafka的基础。

  • Confluent kafka:

    我先说说Confluent公司吧。2014年,kafka的3个创始人Jay Kreps、Naha Narkhede 和饶军离开 LinkedIn创办了Confluent公司,专注于提供基于kafka的企业级流处理解决方案。2019年1月,Confluent公司成功融资1.25亿美元,估值也到了25亿美元,足见资本市场的青睐。这里说点题外话,饶军是我们中国人,清华大学毕业的大神级人物。我们已经看到越来越多的Apache顶级项目创始人中出现了中国人的身影。另一个例子就是,Apache pulsar,它是一个以打败kafka为目标的新一代消息引擎系统,在开源社区中活跃的中国人数不胜数,这种现象实在令人振奋。还说回Confluent公司,它主要从事商业化的kafka工具开发,并在此基础上发布了Confluent kafka。Confluent kafka提供了Apache kafka没有的高级特性,比如跨数据中心备份、schema注册中心以及集群监控工具等等。

  • Cloudera/Hortonworks Kafka

    Cloudera提供的CDH和Hortonworks提供的HDP是非常著名的大数据平台,里面集成了目前主流的大数据框架,能够帮助用户实现从分布式存储、集群调度、流处理到机器学习、实时数据库等全方位的数据处理。很多创业公司在搭建数据平台时首选就是这两个产品。不管是CDH还是HDP,里面都集成了Apache kafka,因此就把这款产品中的kafka称之为CDH kafka和HDP kafka

    当然在2018年10月两家公司宣布合并,共同打造世界领先的数据平台,也许以后CDH和HDP也会合并成一款产品,但能肯定的是Apache kafka依然会包含其中,并作为新数据平台的一部分对外提供服务。

特点比较

okay,说完了目前市面上的这些kafka,我们来对比一下它们的优势和劣势

  • Apache kafka

    对Apache kafka而言,它现在依旧是开发人数最多,版本迭代速度最快的kafka。在2018年度Apache基金会邮件列表中开发者数量最多的top5排行榜中,kafka社区邮件组排名第二位。如果你使用Apache kafka碰到任何问题并将问题提交到社区,社区都会比较及时的响应你。这对于我们kafka普通使用者来说无疑是非常友好的。

    但是Apache kafka的劣势在于它仅仅提供最最基础的主组件,特别是对于前面提到的kafka connect而言,社区版kafka只提供一种连接器,即读写磁盘文件的连接器,而没有与其他外部系统交互的连接器,在实际使用过程中需要自行编写代码实现,这是它的一个劣势。另外Apache kafka没有提供任何监控框架或工具,而在线上环境不加监控肯定是不行的,你必然需要借助第三方的监控框架来对kafka进行监控。好消息是目前有一些开源的监控框架可以帮助用于监控kafka(比如kafka manager)

    总而言之,如果仅仅需要一个消息引擎系统亦或是简单的流处理应用场景,同时需要对系统有较大把控度,那么我推荐你使用Apache kafka

  • Confluent kafka

    下面来看看Confluent kafka。Confluent kafka目前分为免费版和企业版两种。前者和Apache kafka非常相像,除了常规的组件之外,免费版还包含schema注册中心和rest proxy两大功能。前者是帮助你集中管理kafka消息格式以实现数据向前/向后兼容;后者用开放的HTTP接口的方式允许你通过网络访问kafka的各种功能,这两个都是Apache kafka所没有的。除此之外,免费版还包含了更多的连接器,它们都是Confluent公司开发并认证过的,你可以免费使用它们。至于企业版,它提供的功能就更多了,最有用的当属跨数据中心备份和集群监控两大功能了。多个数据中心之间数据的同步以及对集群的监控历来是kafka的痛点,Confluent kafka企业版提供了强大的解决方案来帮助你干掉它们。不过Confluent kafka没有发展国内业务的计划,相关资料以及技术支持都很欠缺,很多国内的使用者都无法找到对应的中文文档,因此目前Confluent kafka在国内的普及率是比较低的。

    一言以蔽之,如果你需要使用kafka的一些高级特性,那么推荐你使用Confluent kafka。

  • CDH/HDP kafka

    最后说说大数据云公司发布的kafka,这些大数据平台天然继承了Apache kafka,通过便捷化的界面操作将kafka的安装、运维、管理、监控全部统一在控制台中。如果你是这些平台的用户一定觉得非常方便,因为所有的操作都可以在前段UI界面上完成,而不必执行复杂的kafka命令。另外这些平台的监控界面也非常友好,你通常不需要进行任何配置就能有效的监控kafka。

    但是凡事有利就有弊,这样做的结果就是直接降低了你对kafka集群的掌握程度。毕竟你对下层的kafka集群一无所知,你怎么能够做到心中有数呢?这种kafka的另一个弊端在于它的滞后性,由于它有自己的发布周期,因此是否能及时地包含最新版本的kafka就成为了一个问题。比如CDH6.1.0版本发布时Apache kafka已经演进到了2.1.0版本,但CDH中的kafka仍然是2.0.0版本,显然那些在kafka2.1.0中修复的bug只能等到CDH下次版本更新时才有可能被真正修复。

    简单来说,如果你需要快速的搭建消息引擎系统,或者你需要搭建的是多框架构成的数据平台且kafka只是其中的一个组件,那么建议使用这些大数据云公司提供的kafka。

小结:

总结一下,我们今天讨论了不同的kafka"发行版"以及它们的优缺点,根据这些优缺点,我们可以有针对性地根据实际看需求选择合适的kafka。最后我们回顾一下今天的内容:

  • Apache kafka,也称为社区办kafka。优势在于迭代速度快,社区响应度高,使用它可以让你有更高的把控度;缺陷在于仅提供最基础的核心组件,缺失一些高级的特性。

  • Confluent kafka,Confluent公司提供的kafka。优势在于集成了很多高级特性且由kafka原版人马打造,质量上有保证;缺陷在于相关资料不全,普及率较低,没有太多可供参考的范例。

  • CDH/HPD kafka,大数据云公司提供的kafka,内嵌Apache kafka。优势在于操作简单,节省运维成本;缺陷在于把控度低,演进速度较慢。

转自:
https://www.cnblogs.com/yuhan-Hanny/p/11685555.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值