公司 京东 地点 中国北京 行业 电子商务

挑战

京东拥有超过 3 亿活跃用户,2017 年总收入超过 550 亿美元,是中国最大的零售商,其运营是超大规模的缩影。例如,京东的产品数据库中有超过 1 万亿张图片(每天新增 1 亿张),并且需要即时访问这些海量数据。2014 年,京东将其应用程序迁移到使用 OpenStack 和 Docker 在裸机上运行的容器中,以“加快计算资源的交付速度,并使操作更加简单”,京东首席架构师刘海峰说。但是,到 2015 年底,随着数万个节点在多个数据中心运行,“我们遇到了很多问题,因为我们的平台不够强大,并且遇到了瓶颈和可扩展性问题,”刘说。“我们现在需要未来五年发展的 инфраструктура。”

解决方案

京东转向 Kubernetes 以适应其集群。2016 年初,该公司开始从 OpenStack 过渡到 Kubernetes,如今,京东运行着世界上最大的 Kubernetes 集群。“Kubernetes 提供了一个强大的基础,在此基础上,我们定制了解决方案,以满足我们作为中国最大零售商的需求。”

影响

刘说:“借助 Kubernetes 平台,我们提高了数据中心的效率,更好地管理了资源,并实现了更智能的部署。”部署时间从几个小时缩短到几十秒。以 IT 成本衡量,效率提高了 20-30%。随着团队正在进行的进一步优化,刘认为每年有可能节省数亿美元。但也许最好的成功迹象是 2018 年首次在 Kubernetes 平台上运行的年度双十一购物节。在 11 天的时间里,京东的交易额达到 230 亿美元,“我们的电子商务平台表现出色”,刘说。“基础设施为 11.11 做好了准备。我们采取了预测交易量的方法,模拟客户的行为提前做好准备,并进行故障演练。由于 Kubernetes 的可扩展性,我们能够处理极高的需求。”

京东拥有超过 3 亿活跃用户,去年年收入为 557 亿美元,是中国最大的零售商,其运营是超大规模的缩影。

例如,京东的客户产品数据库中有超过 1 万亿张图片,每天新增 1 亿张。而且,需要即时访问这些海量数据,以实现流畅的在线客户体验。

2014 年,京东将其应用程序迁移到使用 OpenStack 和 Docker 在裸机上运行的容器中,以“加快计算资源的交付速度,并使操作更加简单”,京东首席架构师刘海峰说。但是,到 2015 年底,随着数十万个节点在多个数据中心运行,“我们遇到了很多问题,因为我们的平台不够强大,并且遇到了瓶颈和可扩展性问题,”刘补充道。“我们现在需要未来五年发展的 инфраструктура。”

在考虑了多种编排技术之后,京东决定采用 Kubernetes 来适应其不断增长的集群。刘说:“主要原因是 Kubernetes 可以为我们提供更高效、可扩展且更简单的应用程序部署,而且我们可以利用它来进行灵活的平台调度。”

Kubernetes 基于谷歌的 Borg 的事实也给了该公司信心。该团队喜欢 Kubernetes 具有清晰简洁的架构,并且主要用 Go 开发,Go 是京东内部一种流行的语言。尽管他认为当时的 Kubernetes“还不够成熟”,但刘说,“我们还是采用了它。”

该团队花费了一年时间开发基于 Kubernetes 的新容器引擎平台,并在 2016 年底开始在公司内部推广。“我们希望集群成为创建服务的默认方式,这样可扩展性更容易,”刘说。“我们与开发人员进行了交流,兴趣逐渐增长,我们一起解决了问题。” 其中一些问题包括网络性能和 etcd 可扩展性。“但在过去两年里,Kubernetes 变得更加成熟,非常稳定,”他补充道。

如今,该公司运行着世界上最大的 Kubernetes 集群。刘说:“我们定制了 Kubernetes,并在其基础上构建了一个现代系统。整个 Kubernetes 生态系统加上我们自己的优化,帮助我们节省了成本和时间。借助 Kubernetes 平台,我们提高了数据中心的效率,更好地管理了资源,并实现了更智能的部署。”

结果显而易见:部署时间从几个小时缩短到几十秒。以 IT 成本衡量,效率提高了 20-30%。但也许最好的成功迹象是 2018 年首次在 Kubernetes 平台上运行的年度双十一购物节。在 11 天的时间里,京东的交易额达到 230 亿美元,“我们的电子商务平台表现出色”,刘说。“基础设施为 11.11 做好了准备。我们采取了预测交易量的方法,模拟客户的行为提前做好准备,并进行故障演练。由于 Kubernetes 的可扩展性,我们能够处理极高的需求。”

京东现在处于 Kubernetes 的第二阶段:该平台已经稳定、可扩展且灵活,因此重点是如何更有效地运行事物以进一步降低成本。通过团队正在进行的资源管理优化,刘认为每年有可能节省数亿美元。

他说:“我们在大约数万个物理裸机节点上运行 Kubernetes 和容器集群。“利用 Kubernetes 并利用我们自己的机器学习管道来预测我们每个应用程序需要多少资源,以及我们自己的智能扩展算法,我们可以提高我们的资源使用率。例如,如果我们将资源使用率提高几个百分点,那就意味着我们可以降低巨大的硬件成本。那么我们就不需要那么多服务器来完成相同的工作量。这可以为我们节省大量资源。”

京东获得了 CNCF 2018 年度最终用户奖,它还在其平台上使用 HelmCNIHarborVitess。京东开发人员为 Vitess 做了相当大的贡献,Vitess 是用于可扩展 MySQL 集群管理的 CNCF 项目,该公司希望在不久的将来将其自己的项目捐赠给 CNCF。参与社区是京东的首要任务。“我们与这个社区建立了良好的合作伙伴关系,”刘说。“我们可以与社区分享我们的成功经验,我们也会收到其他人的良好反馈。所以这是互惠互利的。”

为此,刘为其他考虑采用云原生技术的公司提供了以下建议。“首先你需要将这项技术与你自己的业务结合起来,其次你需要明确的目标,”他说。“你不能仅仅因为别人在使用这项技术而使用它。你需要考虑自己的目标。”

对于京东的目标而言,这些云原生技术非常适合该公司自己的本土创新。“Kubernetes 帮助我们降低了运营的复杂性,使分布式系统稳定且可扩展,”刘说。“最重要的是,我们可以利用 Kubernetes 调度资源来降低硬件成本。这是最大的胜利。”