挑战
拥有超过 3 亿活跃用户,2017 年总收入超过 550 亿美元,京东 是中国最大的零售商,其运营是超大规模的缩影。例如,京东的产品数据库中拥有超过一万亿张图片,每天新增 1 亿张,这些海量数据需要即时访问。京东首席架构师刘海峰表示,2014 年,京东将应用程序迁移到使用 OpenStack 和 Docker 在裸机上运行的容器中,以“加快计算资源的交付,简化操作”。但到 2015 年底,随着数万个节点在多个数据中心运行,“我们遇到了很多问题,因为我们的平台不够强大,我们遇到了瓶颈和可扩展性问题”,刘海峰说。“我们现在需要未来五年发展的基础设施。”
解决方案
京东转向 Kubernetes 来适应其集群。2016 年初,该公司开始从 OpenStack 迁移到 Kubernetes,如今,京东运行着世界上最大的 Kubernetes 集群。“Kubernetes 为我们提供了一个坚实的基础,在此基础上,我们定制了适合我们作为中国最大零售商需求的解决方案。”
影响
刘海峰表示:“借助 Kubernetes 平台,我们拥有更高的数据中心效率、更好的资源管理和更智能的部署。”部署时间从数小时缩短到数十秒。效率提高了 20-30%,以 IT 成本衡量。随着团队正在进行的进一步优化,刘海峰相信每年有节省数亿美元的潜力。但也许最成功的迹象是年度双十一购物节,该活动于 2018 年首次在 Kubernetes 平台上运行。在 11 天的时间里,京东的交易额达到 230 亿美元,“我们的电子商务平台表现出色”,刘海峰说。“基础设施引领了为双十一做准备的道路。我们采取了预测销量、模拟客户行为提前准备并演练故障的方法。由于 Kubernetes 的可扩展性,我们能够处理极高的需求。”
例如,京东为客户提供产品数据库,其中包含超过一万亿张图片,每天新增 1 亿张。这些海量数据需要即时访问,才能为客户提供流畅的在线体验。
2014 年,京东将应用程序迁移到使用 OpenStack 和 Docker 在裸机上运行的容器中,以“加快计算资源的交付,简化操作”,京东首席架构师刘海峰表示。但到 2015 年底,随着数十万个节点在多个数据中心运行,“我们遇到了很多问题,因为我们的平台不够强大,我们遇到了瓶颈和可扩展性问题”,刘海峰补充道。“我们现在需要未来五年发展的基础设施。”
在考虑了许多编排技术之后,京东决定采用 Kubernetes 来适应其不断增长的集群。“主要原因是 Kubernetes 可以为我们提供更高效、可扩展和更简单的应用程序部署,此外我们还可以利用它进行灵活的平台调度”,刘海峰说。
Kubernetes 基于 Google 的 Borg,这也让该公司充满信心。团队喜欢 Kubernetes 的清晰简单的架构,以及它主要用 Go 语言开发,而 Go 语言是京东内部的流行语言。虽然他当时认为 Kubernetes“还不够成熟”,刘海峰说,“但我们还是采用了它。”
团队花了整整一年时间开发基于 Kubernetes 的新容器引擎平台,并在 2016 年底开始在公司内部推广。“我们希望集群成为创建服务的默认方式,这样可扩展性就更容易”,刘海峰说。“我们与开发人员交谈,兴趣越来越浓,我们共同解决了问题。”其中一些问题包括网络性能和 etcd 可扩展性。“但在过去两年里,Kubernetes 已经变得更加成熟,非常稳定”,他补充道。
如今,该公司运行着世界上最大的 Kubernetes 集群。“我们对 Kubernetes 进行了定制,并在其之上构建了一个现代系统”,刘海峰说。“Kubernetes 与我们自己的优化相结合,帮助我们节省了成本和时间。借助 Kubernetes 平台,我们拥有更高的数据中心效率、更好的资源管理和更智能的部署。”
结果显而易见:部署时间从数小时缩短到数十秒。效率提高了 20-30%,以 IT 成本衡量。但也许最成功的迹象是年度双十一购物节,该活动于 2018 年首次在 Kubernetes 平台上运行。在 11 天的时间里,京东的交易额达到 230 亿美元,“我们的电子商务平台表现出色”,刘海峰说。“基础设施引领了为双十一做准备的道路。我们采取了预测销量、模拟客户行为提前准备并演练故障的方法。由于 Kubernetes 的可扩展性,我们能够处理极高的需求。”
京东现在正处于使用 Kubernetes 的第二阶段:平台已经稳定、可扩展且灵活,因此重点是如何以更高效的方式运行事物,以进一步降低成本。凭借团队在资源管理方面正在进行的优化,刘海峰相信每年有节省数亿美元的潜力。
“我们在大约数万个物理裸机节点上运行 Kubernetes 和容器集群”,他说。“使用 Kubernetes 并利用我们自己的机器学习管道来预测每个应用程序所需多少资源,以及我们自己的智能扩展算法,我们可以提高资源利用率。例如,如果我们将资源利用率提高几个百分点,这意味着我们可以降低巨大的硬件成本。这样我们就无需那么多的服务器来获得相同的工作负载。这可以为我们节省大量资源。”
京东获得了 CNCF 2018 年最终用户奖,该公司还在其平台上使用Helm、CNI、Harbor 和 Vitess。京东的开发人员为 Vitess 做出了巨大贡献,Vitess 是 CNCF 项目,用于可扩展的 MySQL 集群管理,该公司希望在不久的将来将自己的项目捐赠给 CNCF。社区参与是京东的重中之重。“我们与这个社区建立了良好的合作伙伴关系”,刘海峰说。“我们可以与社区分享我们的成功经验,我们也从其他人那里获得良好的反馈。所以这是互利共赢的。”
为此,刘海峰为其他正在考虑采用云原生技术的公司提供了以下建议。“首先你需要将这项技术与你自己的业务结合起来,其次你需要明确的目标”,他说。“你不能仅仅因为别人在使用这项技术就使用它。你需要考虑你自己的目标。”
对于京东的目标,这些云原生技术非常适合该公司的自主创新。“Kubernetes 帮助我们降低了运营复杂性,使分布式系统稳定且可扩展”,刘海峰说。“最重要的是,我们可以利用 Kubernetes 来调度资源以降低硬件成本。这是最大的胜利。”