中国科技公司是典型的早期采用者——不是因为赶时髦,而是确实有必要这么做。“中国式规模”让中国的互联网经济成为了高质量软件(特别是基础设施软件)工程的成长沃土,这在开源技术上得到了充分体现。国内开发者和企业向各大开源基金会贡献了越来越多的开源项目,而我们对国外的开源项目也产生了越来越大的影响。本文来自 PingCAP 全球战略和运营总经理 Kevin Xu,AI 前线经授权翻译。
我的 87 岁的祖母住在沈阳郊区的一所老房子里。虽然她年岁已高,但却很有技术悟性。平常她会用三个 App 进行网购:在京东上买书,在拼多多上买水果,在淘宝上买其他东西(衬衫、围巾、洗涤剂、数独板)。
这三个 App 刚好是由中国电商市场的三巨头开发的,其规模远远超出了千禧一代(1980 至 1994 年出生的人群)和 Z 世代(1995 至 2009 年出生的人群)的受众总和。
正是这种“中国式规模”让中国的互联网经济成为高质量软件(特别是基础设施软件)工程的成长沃土。
购物节狂欢
电子商务是中国互联网经济增长最快的垂直领域之一,同时也带动了数字支付和物流配送的发展。基础设施技术在这一领域经受了最为残酷的考验。“双十一”是最为典型的案例,这是由阿里巴巴提出的一个网购节日,每年的 11 月 11 日,淘宝和天猫都会如期庆祝这个节日。2017 年双十一总销售额为 253 亿美元,2018 年增长到了 308 亿美元。
中国第二大电子商务平台京东也有自己的年中购物节,即“618”,这是一个为期 18 天的促销活动,截止 6 月 18 日,这天刚好是京东的成立纪念日。2017 年,618 的总销售额为 176 亿美元,2018 年增长到了 284 亿美元。
美国亚马逊的年中购物节 Prime Day 在 2018 年和 2017 年分别创造了 41.9 亿美元和 24.1 亿美元的销售额。美国感恩节购物季在 2018 年和 2017 年的销售额分别为 178 亿美元和 196.2 亿美元。
对于工程师来说,有趣的不是令人瞠目结舌的销售数据,而是如何构建可以应对这些工作负载的基础设施。2017 年,阿里巴巴公布了双十一期间系统的高峰吞吐量:每秒 25.6 万笔交易和每秒 4200 万次查询。
不难想象,在这些促销活动期间,肯定会不可避免地出现大量的事务、查询、数据一致性问题、实时分析容量和其他难以想象的边缘情况。
除了这些公司,所有其他想要搭上这些促销活动顺风车的电子商务公司、所有为用户在线购物提供电子支付解决方案的银行,以及所有的物流中心和仓储中心——他们都需要有好的基础设施技术来应对新的工作负载和流量增长。
由于这种增长速度,以及由此产生的竞争压力,中国科技公司在采用新技术方面具有相当强的风险承受能力。
一家公司找到合适的产品市场,然后在不到两个月的时间内采用未经证实但很有前景的新技术为高速增长的流量提供服务,这种事情并非闻所未闻。京东在 2016 年初开始采用 Kubernetes,当时离谷歌开源 Kubernetes 还不到一年的时间,因为他们必须解决可伸缩性问题,而 OpenStack 没能帮他们实现这一目标。(京东现在拥有全球最大的 Kubernetes 集群,运行在 2 万台裸机上)
更大的规模,更大的责任
中国科技公司是典型的早期采用者——不是因为赶时髦,而是确实有必要这么做。中国拥有世界上最多的互联网用户(8 亿,并且还在增加当中),他们的规模(以及规模所带来的不可预知的行为)足够大,大到足以促使这些科技公司认真对待每一项技术。从这些公司生存下来的技术会变得更强大、更有弹性,也更值得被用在其他地方。
很多行为是不可能在构建模式下进行预测或测试的。
你该如何通过 Paxos 或 Raft 来模拟系统达到 100 倍查询峰值时的网络流量?当一件商品、一首歌或一段视频突然变得像病毒一样迅速传播,而所有用户都在试图访问它们,而更糟糕的是,有价值的广告收入取决于系统不能崩溃,在这种情况下,你该如何处理数据热点问题?当数据增长率为每天数 TB 时,应该如何扩展存储容量?
所有这些情况,在很多中国科技公司中时有发生。他们正在迅速地寻找新的解决方案,以迎接这些挑战——这为考验这些创新技术提供了一片沃土。
“中国式规模”已经催生了一些由中国原创的基础设施技术。去年,云原生计算基金会(CNCF)接受了其中的三个项目:Harbor、TiKV 和 DragonFly。它们的架构和用例都在之前的一篇文章中做了很好的介绍。在 CNCF 生态系统之外,还有其他一些值得关注的项目。
OceanBase
由蚂蚁金服开发的分布式关系数据库,最初用于支持支付宝。支付宝在中国已经无处不在。此后,OceanBase 逐渐成为阿里巴巴所有关键电子商务平台(如淘宝和天猫)的核心交易数据库。它也是一个独立的产品,南京银行就是它的用户之一。
2014 年以来,它经历了五次双十一的考验。可惜的是,它是一个闭源产品,在中国以外没有得到广泛采用,所以与其架构、设计或工程方面相关的英文信息并不多。
TiDB
一个开源的、兼容 MySQL 的 NewSQL 分布式数据库,由 PingCAP 于 2015 年创建。
它采用了分层架构,SQL 处理层(左边的 TiDB 集群)和可水平伸缩的存储层(中间的 TiKV 集群)被分隔开来。(注:TiKV 也由 PingCAP 发起,但现在由 CNCF 托管)。这个设计灵感来自于谷歌的 Spanner 和基于 Spanner 构建的 F1 项目。PD(Placement Driver)集群保存元数据,提供一些负载均衡支持,并提供时间戳(作为系统事务模型的一部分)。TiSpark 集群是一个可选组件,用户可以直接基于保存在 TiKV 中的数据运行 Spark 作业。
目前,中国已经有几百家公司在生产环境中部署了 TiDB,如摩拜、北京银行和爱奇艺。国外也有一些大型互联网公司使用了 TiDB,如 Shopee 和 BookMyShow。
注:PingCAP 现已提供 TiDB 的企业版和云服务,同时也在维护开源社区版本。
Apache Kylin
一个快速的 OLAP(在线分析处理)引擎,最初由 eBay 中国团队开发,在 2014 年贡献给 Apache 基金会,并在 2015 年底成为顶级项目。
Kylin 主要被用在 Hadoop 生态系统中,为数百亿行数据的分析查询带来可观的速度提升。用户先定义数据模型,然后利用 Hadoop 的分布式特性并行运行多个 MapReduce 作业,用以预构建必要的多维模型(也称为“MOLAP”)。最后,Kylin 将预先计算的模型存储在 HBase 中,供用户查询。它还使用 Zookeeper 来协调和管理这个过程的不同部分。
作为大数据分析引擎,Kylin 集成了 Tableau、MicroStrategy、Excel 等流行的 BI 工具。它还提供了一个 RESTful API,方便与第三方应用程序连接。除了 eBay,它还在 OPPO、百度、中国太平洋保险等公司经受过实战考验,三星和摩根大通也是它的用户。
Apache Skywalking
一个相对较新的开源应用程序性能监监控(APM)工具,用于在基于容器的环境中监控微服务。2017 年底,它成为 Apache 基金会的孵化器项目。
Skywalking 通过服务网格从微服务中提取指标,并利用 Jaeger 等流行工具来跟踪信息,并可以查询和分析这些指标和信息,还可以使用团队开发的 UI 进行可视化。它还提供了一个可插拔的存储接口,借助这个接口,可以将信息保存在一些流行的数据库中,比如 Elasticsearch、MySQL 和 TiDB。
尽管这个项目成立还不到两年,但中国的一些大型公司已经在使用它,如华为、小米和贝壳。
中国之外
除了本土技术,国外的一些技术也有了“中国式规模”的味道。京东是 Prometheus、Vitesse、Jenkins 和 GitLab 等技术的用户,百度是 CockroachDB(另一个受 Spanner 启发的开源数据库,类似于 TiDB)的用户。Alluxio,一个分布式文件系统统一层,可以以内存速度运行(源自加州大学伯克利分校 AMPLab 的一个名为 Tachyon 的研究项目),也在百度、中国联通和滴滴出行等企业中得到采用。
中国公司不仅在大规模采用这些技术,有时候甚至直接收购它们。开源数据流平台 Apache Flink 由柏林技术大学于 2009 年创建,作为 Stratosphere 研究项目的一部分。阿里巴巴最终收购了由 Flink 创始人创办的 dataArtisan(该公司的目的是商业化 Flink)。
有价值的权衡?
作为工程师,我们知道没有什么技术是绝对的,它们总是存在权衡。我们总是在吞吐量和延迟、数据一致性和响应时间、新特性和系统稳定性之间做出权衡。我们很少能鱼与熊掌兼得,我们也不相信把自己标榜得太高的技术。
市场的选择也是如此。在中国互联网经济大环境中,有一些问题一定要考虑到,特别是信息审查方面的问题。比如,对侵犯知识产权行为的法律追索仍然不太可靠,有关企业使用个人数据的监管尚处于初级阶段。
但如果你是一名开发者,正在寻找一些稳定可靠的技术(已经“面面俱到”的技术),那么那些已经在中国互联网环境中经受过实战考验的技术将是安全的选择。
如果你的团队正在构建下一个大项目,尤其是在基础设施层面,那么把这个项目交给中国的几家科技巨头公司,将会为项目带来跨越式的发展。
另外,你们的努力很可能也会为我的祖母带来更快乐的生活!
英文原文:
作者介绍
Kevin Xu 是 PingCAP 全球战略和运营总经理。他在斯坦福大学完成计算机科学与法律专业的学习。主要关注分布式系统、云原生技术、自然语言处理和开源。
评论