Confluent:在 Kafka 上飞驰的数据交换者

  • 徐飞

2018 年 1 月 16 日

话题:语言 & 开发架构AI

看新闻很累?看技术新闻更累?试试下载 InfoQ 手机客户端,每天上下班路上听新闻,有趣还有料!

今天我们要讲的大数据公司叫作 Confluent,这个公司是前 LinkedIn 员工出来后联合创办的,而创业的基础是一款叫作 Apache Kafka 的开源软件。

Confluen 联合创始人 Jun Rao 即将在QCon 北京 2018分享 Apache Kafka 的前世今生和未来的相关话题。

在整个 Hadoop 的生态圈里,Kafka 是一款非常特殊的软件。它由 LinkedIn 于 2011 年开源,并在 2012 年底从阿帕奇孵化器里面毕业,正式成为阿帕奇的顶级项目。

Kafka 和其他的大数据平台都不同,它的主要目的不是数据的存储或者处理,而是用来做数据交换的。要更好地理解它是干什么的,我先谈一下数据库的日志文件。

数据库系统需要保证数据的稳定性,为了确保修改的数据能够写入库,通常会在更改数据之前先在磁盘里写一条日志文件,大致上的格式是“时间戳:做了什么操作”。如果此后因为故障导致数据本身没有被更改,系统可以根据日志文件一条一条地重新执行操作,让数据恢复到应该恢复的状态。

后来有人意识到,这个日志的恢复功能还可以充当数据复制。简单来说,如果两个数据库的初始状态相同,又按照同样的? 顺序执行了一系列操作,那么最后的状态也相同。所以在数据库进行数据复制的时候,系统可以把日志文件从一个系统传输到另外一个系统,另外一边只要照着日志同样地执行一遍就好。

这个想法构成了大部分数据库的主从备份机制的核心,而 Kafka 则把这个机制充分发扬光大了。Kafka 允许消费者和生产者注册进 Kafka,其中生产者会产生日志,而消费者则消费产生的日志。整个系统允许多个消费者和多个生产者的注册,这就实现了公司内部不同数据源之间的数据交换。

Kafka 作为开源产品是如此之成功,在整个 Hadoop 生态圈,乃至不用 Hadoop,而是用其他数据源的产品里,它都可以用来进行数据的备份和交换。所以,我们可以看到几乎所有的互联网公司里都部署了 Kafka。

2014 年的时候,Kafka 的三个主要开发人员从 LinkedIn 出来创业,开了一家叫? 作 Confluent 的公司。和其他大数据公司类似,Confluent 的产品叫作 Confluent Platform。这个产品的核心是 Kafka,分为三个版本:Confluent Open Source、Confluent Enterprise 和 Confluent Cloud。

Confluent Open Source 是 Confluent 公司在 Kafka 上的一个增强版本,其主要增强的地方是:增加了一个 REST 代理,以便客户端可以使用 HTTP 连接;增加了对 Java 以外的语言的支持,比如 C++、Python 和.NET;增加了对 Hadoop 文件系统、亚马逊 S3 存储、JDBC 等的连接的支持;最重要的是一个 Schema Registry,这是对 Kafka 一个比较大的增强,它使得 Kafka 的数据流必须符合注册的 Schema,从而增强了可用性。所有这些东西本身也都是开源的,这使得其他第三方在这个上面继续开发新功能成为了可能。

Confluent Enterprise 是 Confluent 面向企业级应用的产品,里面增加了一个叫作 Confluent Control Center 的非开源产品。Confluent Control Center 是一个对整个产品进行管理的控制中心,最主要的功能对这个 Kafka 里面各个生产者和消费者的性能监控。

Kafka 作为一个非常重要的产品,已经在很多互联网企业里被作为关键组件部署了。而 Kafka 的性能监控也早就是一个非常重要的问题,Kafka 本身并不自带性能监控平台,很多公司比如雅虎自己内部开发了这样的系统。但是 Confluent 开发的控制平台无疑应该是最可靠的,毕竟没有人比 Kafka 的开发者更了解自己的产品。可惜这个是收费产品,而且不开源。Confluent Enterprise 同时还自带了数据自动负载平衡和跨数据中心数据复制的能力。

Confluent Cloud 是 Confluent Enterprise 的云端托管服务,它增加了一个叫作云端管理控制台的组件。除此之外,按照 Confluent 的说法,其实没有什么差别。但是对于想要省心的用户来说,这个产品无疑是更好的选择。

Confluent 的基本做法和 Cloudera 很像,主要的产品开源,但是控制中心这样的东西不开源,只有买了企业版才能够享受到。而两者不同的地方主要在于,Confluent 同时提供了云端服务的版本。加上 Confluent 有基于 S3 的连接,这使得从亚马逊 AWS 读写数据都非常方便。

和 Cloudera 是 Hadoop 的集成商不同,Confluent 主要还是围绕着不同数据源之间数据的交换这个任务而生的服务。Kafka 在整个开源产品里面是一个非常特殊的存在,它没有什么竞争对手,又是各大企业的刚需,它在脱离了整个 Hadoop 生态圈以后依然非常有价值。

从这个角度来讲,Confluent 毫无疑问有很多客户会买单。大部分企业都不可能只有一个数据源,当然谷歌这样的企业? 除外。而 Kafka 给数据源之间的数据交换提供了统一的平台,而 Confluent 的企业级服务则让这个平台不但更好用了,而且更好管理了。

虽然说是同样的生意模式,用在不同的产品里,产生的结果却可能很不一样。Confluent 作为一家公司,是否能够从 Kafka 这个数据交换平台里面跳出来继续扩张,这很难说。但是仅仅是把这一摊生意做好,也足以支撑 Confluent 成为一个估值不低的公司,养活自己应该是绰绰有余了。

Confluent 最近拿到了 5000 万美元的融资,其 CEO 在接受采访的时候表示公司还将继续扩张。像 Confluent 这样的平台,在未来物联网的架构上,还有足够多的空间,这大概表示了 Confluent 未来将重点发展的方向。

我们能看到的辉煌是目前有超过 30% 的世界 500 强公司在使用 Kafka,怎样做一个非常受欢迎的发布订阅消息系统,未来又如何把 Kafka 建成实时流数据处理平台,我想由 Confluent 的联合创始人,也是 Apache Kafka 项目委员会主席Jun Rao来讲再合适不过了,在 4 月份举办的QCon 全球软件开发大会北京站上,他将带来相关内容的演讲。无论是想采用这一技术,还是希望做出自己的软件的技术人,应该都会有所收获和感悟。

除此之外,还有 100+ 国内外技术大咖的实战经验分享,可以点击阅读原文 8 折购票,或者咨询购票经理Hanna,电话:15110019061,微信:qcon-0410

作者介绍

徐飞,计算机博士,资深架构师,大数据基础架构专家,极客时间 App 专栏《技术与商业案例解读》作者。现居美国,对全球计算机行业和前沿技术的发展有深刻而独到的见解。

语言 & 开发架构AI