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