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

挑战

京东是中国最大的零售商,拥有超过 3 亿活跃用户,2017 年总营收超过 550 亿美元,其运营是超大规模的典范。例如,京东的产品数据库中有超过万亿张图片——每天新增 1 亿张——并且如此巨大的数据量需要即时访问。京东首席架构师刘海峰表示,2014 年,京东将其应用迁移到使用 OpenStack 和 Docker 在裸金属服务器上运行的容器中,以“加快计算资源的交付,并简化运营”。但到 2015 年底,随着数万个节点在多个数据中心运行,“我们遇到了很多问题,因为我们的平台不够强大,并且遭遇了瓶颈和可伸缩性问题,”刘说。“我们现在就需要未来五年发展所需的基础设施。”

解决方案

京东转向使用 Kubernetes 来支持其集群。2016 年初,公司开始从 OpenStack 向 Kubernetes 转型,如今,京东运行着世界上最大的 Kubernetes 集群。刘海峰表示:“Kubernetes 提供了强大的基础,在此基础上,我们定制化了解决方案,以满足我们作为中国最大零售商的需求。”

影响

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

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

例如,京东为客户提供的产品数据库中有超过万亿张图片,每天新增 1 亿张。如此巨大的数据量需要即时访问,以确保顺畅的在线客户体验。

京东首席架构师刘海峰表示,2014 年,京东将其应用迁移到使用 OpenStack 和 Docker 在裸金属服务器上运行的容器中,以“加快计算资源的交付,并简化运营”。但刘补充道,到 2015 年底,随着数十万个节点在多个数据中心运行,“我们遇到了很多问题,因为我们的平台不够强大,并且遭遇了瓶颈和可伸缩性问题。”他说:“我们现在就需要未来五年发展所需的基础设施。”

在考虑了多种编排技术后,京东决定采用 Kubernetes 来支持其不断增长的集群。刘表示:“主要原因是 Kubernetes 可以为我们提供更高效、可伸缩且更简单的应用部署,此外,我们还可以利用它来进行灵活的平台调度。”

Kubernetes 基于 Google 的 Borg,这也增强了公司的信心。团队喜欢 Kubernetes 清晰简单的架构,以及它主要用 Go 开发的事实,Go 在京东内部是很流行的语言。刘说,虽然他觉得当时 Kubernetes“还不够成熟”,“但我们无论如何还是采用了它。”

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

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

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

京东目前正处于与 Kubernetes 合作的第二阶段:平台已经稳定、可伸缩且灵活,因此重点是如何更高效地运行,以进一步降低成本。通过团队在资源管理方面正在进行的优化,刘相信每年有可能节省数亿美元。

他说:“我们在大约数万个物理裸金属节点上运行 Kubernetes 和容器集群。”“使用 Kubernetes 并利用我们自己的机器学习流水线来预测我们每个应用需要多少资源,以及我们自己的智能伸缩算法,我们可以提高资源利用率。例如,如果我们将资源利用率提升百分之几,这意味着我们可以大幅降低硬件成本。这样我们就不需要那么多服务器来处理同样的负载。这可以为我们节省大量资源。”

京东荣获了 CNCF 2018 年度终端用户奖,其平台也在使用 HelmCNIHarborVitess。京东的开发者们为 Vitess(CNCF 用于可伸缩 MySQL 集群管理的项目)做出了巨大贡献,公司希望在不久的将来向 CNCF 捐赠自己的项目。社区参与是京东的优先事项。刘说:“我们与这个社区有着良好的合作关系。”“我们可以与社区分享我们的成功经验,也从其他人那里获得了很好的反馈。因此,这是互惠互利的。”

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

对于京东的目标而言,这些云原生技术与公司自己的本土创新完美契合。刘表示:“Kubernetes 帮助我们降低了运维的复杂性,使分布式系统稳定且可伸缩。”“最重要的是,我们可以利用 Kubernetes 进行资源调度,从而降低硬件成本。这是巨大的成功。”