作者 | 胡喆
对云计算市场而言,IDC日前发布的《中国云运营服务市场(2021上半年)跟踪》报告显示,京东云在中国云运营服务市场份额居于第四位。京东云已经连续五年稳居第一阵营,也是京东提出“技术、技术、技术”的第五年。
对京东的业务支撑而言,2021年京东11.11、618的订单,百分之百是在云上完成的,包括京东零售、京东物流等。受益于云原生架构,京东技术团队对业务支撑能力非常强,已经连续数次大促零技术事故。
仅仅在十年前,人们还在争论云计算是否有未来,而十年后,云计算的未来已来。
今年11.11的技术备战期间,京东不仅要求技术质量,还减少1/4的备战时间、备战人力,同时还有降低能耗实施绿色低碳备战指标,技术团队都很从容的完成了。
这就是技术进步的力量,至少,说明京东的云计算团队在应对超大规模并发场景时,已经游刃有余。
曾经很多人都把京东当做一家零售公司,从某种意义上说,这也并没有错。不过,即使是零售公司,京东也是一家跑在互联网上、云上的零售公司,而今天所有人都知道,京东这样C端属性的新型实体企业,其实是AI、云计算、大数据等技术最好的培育土壤。
规模决定了需求的高度,实践密度决定了进步的速度,而业务的复杂性则决定了所发展出来的云计算体系的承载力。
京东具备一切孕育先进云计算技术和应用的场景和条件,但在实践中,这一切来的并不容易。
不同的公司有不同的发展路径,京东最早以零售起家,后来因为2003年的“非典”的倒逼,把全部业务搬到了网上。这个权宜之举,后来成就了京东。
很长一段时间以来,京东都是典型的“研发跟着业务走”的发展路径,先有业务,再招人做研发,以至于成立后很长一段时间里,都将研发定位于业务的支持体系。而据《决战618—探秘京东技术取胜之道》一书,2008年京东618正式推出的第一年,京东备战的技术人员仍少之又少。
后来,天极网的副总裁李大学被京东以20万元的高薪聘请来当了技术总监。据说,他带着十几个年轻人连打了三个月的地铺,每天只睡三四个小时,重新给京东设计了一套系统。
这套系统设计容量是日均十万单,而当时京东日均单量是5000单,2008年11月1日,新系统上线,当天的日均单量达到了一万单。
然而,2011年京东日单量的峰值达到了50万单,远超过这套系统的容量。
《彭博商业周刊》记载了这样一件事,2011年11月1日图书限时3小时促销期间,很多用户在大促开始之前就将要买的书放进了购物车,结果到了活动时间提交订单的时候,发现订单怎么都下不了了。因为高并发容量超过了当时系统所能承载的极限,系统分辨不出图书库存情况,用户不断刷库存,系统就瘫痪了。
其实,这也怪不得技术人员,谁也无法预期,随着移动互联网的渗透率暴增,京东的业务从起家到上市,翻了一万倍。年初设计的目标,年底无论如何也赶不上增长的需求。
老京东都知道,京东内部有两种错误不能犯,第一是贪腐,第二是大促宕机。
这时候就遇到了棘手的问题,大促销的时候容易出现宕机之类的问题,当时在电商领域非常普遍,不但是京东,别家也是。谁也没有万应灵药,保障一定不会宕机。
其实,很多老牌的互联网公司,包括BAT都有这个问题——公司发展早期,技术不成熟,请不来一流的人才,写的代码有很多bug,被戏称为“垃圾山”,此后,又反反复复的扩容,这就让系统的问题更多。然而,因为业务不能停,也没有人能担保迁移业务到新的平台上的风险,“垃圾山”就会一直存在,靠修修补补运转着。
但事实证明,当问题开始聚焦的时候,解决之路就出现曙光了。
京东有计划的引入云计算的高级人才,始于何刚,何是亚马逊早期云存储项目S3的开发人员,那时候国内公司还没有云计算的概念。后来,盛大成立创新院,云计算是一个新项目,陈天桥从西雅图把何刚带回了国,加上现在Ucloud的创始人季昕华和七牛云的创始人许世伟,创办了盛大云,但盛大的局面很快急转直下,何刚来了京东。
不过,事实上,在京东真正上云之前,就已经有许多京东的基层在应用云原生的很多重要内容了,包括Docker(容器)、Kubernetes(K8S)、微服务。
2012年,在开源服务框架基础上,京东基于Zookeeper注册中心上线了第一代微服务平台。同时,在容器化方面,为提升应用部署效率,开发了诸如编译打包、自动部署、日志收集、资源监控等多个配套工具系统。
有早期的京东员工回忆,京东那时候的云计算项目名还不叫JDOS,有人叫CAP、有人叫J1,后来大家觉得这么大的项目没有个正式名称也不好,于是有了正式引入Docker容器,自研容器引擎平台JDOS1.0。
从容器入手,是11.11这类购物节倒逼使然,也是京东复杂业务发展的必然。在中国电商发展的黄金时期,京东订单量每年暴增。从2013年开始,京东用容器来改造IT系统。
其中很具体的原因,就是京东当时的技术基础架构太杂,而容器的好处,简单说就是,所有的服务都被无差别地封装在“容器”里,容器可以被无差别地管理和维护,这就大大提升了运维效率。而且,由于有处理特别复杂的架构容器化的经验,京东后来的“云舰”的一个特点就是兼容性好,此乃后话。
同时起步的,还有微服务,从早期上线的微服务平台,到JSF1.0以及后续升级版本,都是伴随着11.11、618一起发展的。
微服务的本质,是一种软件开发技术。简单的说,以前开发的软件,是一个整体,提供一组功能,而微服务是一组服务,在这个结构中,服务是细粒度的,协议是轻量级的。
如果一定要打个比方,那微服务就好像是一盒乐高玩具,你可以拿它们盖起一座城堡,也可以只修一座小屋。更为重要的是,如果其中某个结构出了问题,你只需要拿出一块新的换上,而不用拆掉整个房子。
更重要的是,它改变了软件的开发模式,以前,一组程序员围绕一个主体建筑组成一支施工队,但现在很多跨职能的团队可以聚合在一起,一起用“搭积木”的方式来构建服务,这不仅提升了开发效率,也让开发者对微服务的开发一开始就基于对业务的需求和洞察而开始。
如果说容器化解决了基础架构的问题,微服务解决了开发模式的问题,那海外业务的临门一脚,则推动了云原生在京东体系的全面应用。
2014年为了扩展国际化业务,京东对底层云平台做彻底的容器化。当重新为海外站点准备“粮草”的时候,京东发现国内现有的系统最重要的问题是“拆不开”,产品、应用都是紧耦合。
所谓的紧耦合,就是应用和跑应用的架构之间的开发的专用度高,通用度低,一旦研发环境和生产环境之间很难做到完全一致地复制,部署资源成本就会很高。也可以通俗的理解为,从A系统上拆下的模块,很难完好的装到B系统上并且马上跑起来。
然而,国内的环境再难,也有大批的技术人员可以随时修修补补,但国际业务不可能这么做,也不可能有那么多的技术人员驻留海外,这就倒逼京东云必须加强标准化的建设。
在这种背景下,京东第一代容器引擎平台JDOS1.0就必须升级,技术人员发现,第一代容器引擎的调度方式较为单一,只能简单根据物理机的剩余资源是否满足要求来进行筛选调度,在提升应用的性能和平台的使用率方面无法做更进一步提升。
于是,京东引入Kubernetes,将JDOS1.0升级到JDOS2.0,逐步完善了容器的监控、网络、存储,镜像中心等容器生态建设。
这给京东云带来的变化是,一方面支持了业务——如京东云总裁高礼强形容当时的成果是:“晚上修改的东西明天就能发布;今天在国内新上线的东西,明天印尼在另外的场景下也能重新把功能组合起来”。
而另一个变化是,解耦合也成为京东云的另一个特色,在未来攻掠公有云市场后,这成为一大竞争力。
京东是国内电商行业业务规模保持快速增长的佼佼者,这是京东云进化的一个始终的动力。
如果说第一代容器云引擎的开发,解决了京东系统跑在过去的“垃圾山”上的问题,2015年后的京东,业务多元化成为新的需求牵引点,京东引入Kubernetes,升级JDOS2.0,研发云原生的阿基米德调度系统,基本都是在这个背景下展开的。
而由于这些技术的应用,提升了整个京东数据中心的资源调度的效率。在保证业务的正常运行下,集群的平均资源利用率提升3倍。仅在11.11备战期间,节省了数亿元的服务器采购成本。
但是,以2015年为一个分水岭,京东的业务面临更大的挑战。
这一年,被称为移动互联网的下半场,从网民人数来看,截至2015年6月,互联网普及率为48.8%,我国网民总数已达6.68亿人。
值得注意的是,这一年,中国手机网民规模达5.94亿,网民中使用手机上网人群占比升至88.9%。
而在笔者撰文的当下,中国手机网民将将到10亿,由于智能手机的普及,人们使用互联网的方式从几个人共用一台PC,变成了人人一部手机,而低线城市、农村的新增网民超过90%的第一台上网设备就是智能手机,这为电商的渗透率提升搭好了基础建设,电商继续呈井喷态势,庞大的用户规模和集中的需求响应,仍然对京东的基础设施提出巨大挑战。
京东云的内部也感觉到,移动互联网全面开启,使得面向多个场景的服务指数级增长,一方面,同一个应用在不同场景中的重复开发,开发成本高而效率低;另一方面,应用的持续增加,给运维工作带来了挑战,服务治理势在必行,驱动敏捷开发与运维。
此刻,早在2014年就开始内部自主研发的的新一代服务平台JSF1.0开发作用,早期由于代码切换的问题,京东云不具备服务治理能力。而JSF的突出特性,就是具备服务治理功能,包括常见的分组、上下线、黑白名单、路由等,也做到了具备动态分组、同机房优先、配置下发、调用限流、授权调用等等功能。
事实证明,JSF经受住了多次大促、大流量的考验,日常调用在千亿规模,而大促期间会调用会翻2-5倍,但都能应付裕如。而在至关重要的容器化方面,能力也大幅度提升。
最好的检验还是大促,可能,全世界也不会有中国的电商节这样检验云服务能力的大关口了,这可能也是京东自上而下都重视大促的原因,大促不仅是一个收入节点,也间接展示了企业的技术能力,能够平稳的扛过大促,没有消费者会点赞,人们认为是自然;而一旦大促宕机,消费者就会对平台的技术能力产生质疑,而这是任何平台也不愿意遇到的情况。
事实证明,2015年618大促,京东运行了近万个Docker容器以及几百个KVM虚拟机,经受住了大流量的考验。京东主要的一些核心应用比如商品详情页、图片展现、秒杀、配送员订单详情等,以及全球购和O2O新业务都部署在容器云中,有超过1000个应用接入,涵盖京东各个业务线。而作为当年618大促的扩容和资源池,其Docker应用数是国内甚至世界上最大规模之一。
而经受了2015年618/11.11的考验,京东云团队不仅积累了大量的容器运营经验,对Linux内核、网络、存储等深度定制的能力也不断提升,实现了容器秒级分配,可能也就是从这一刻起,京东云不再是“支持系统”,而是代表京东探索云计算、大数据前沿的一支尖兵。
经过大促反复考验后,京东内部做了一个重要决定,2016年,在基础架构细节梳理的比较清晰、底层的基础设施服务和中间件服务都逐渐成熟、内部的使用和运营非常顺畅之后,4月1号正式对外开放公有云服务,正式加入中国云计算赛道。
京东云近年来持续为政府、金融、交通、制造业、医疗等多个行业打造上云以及云持续运营解决方案。来自京东云的数据也显示,京东云目前已在全国70个城市开展产业数智化实践,助力政务创新和产业经济发展。
京东云有哪些独特的技术特性呢?要了解这个问题,还是要研究京东云的成长。
首先是京东云的弹性云特性。
京东弹性云是京东标志性的战略研发项目,而它的“地基”,就是基于Docker(容器)简化了应用的部署和扩容,提高了系统的伸缩能力;京东目前拥有容器数量超过200万,已经成为全球最大规模Docker集群之一,有力的保障了整个运维系统的平稳运行。
据统计,中国有将近100个“电商节”,京东系则有数十个,可以说,电商节已经常态化,而在一个个电商节掀起的大小高潮里,最好的锻炼了京东云的弹性能力。
简单说,京东弹性云通过云计算将用户的流量均匀分散到弹性云的高性能节点,优化微服务来驱动订单的生产。京东弹性云会根据历史数据的计算进行资源预估和储备,实现自动化运维和精细化管理。
比如,像618大促这样的流量高峰期,弹性云会自动补充资源,做到弹性扩展,在流量低谷期,又可以进行资源回收,从而将资源灵活地调度起来,在提升资源利用率的同时确保了运维系统的稳定性。
其次,是拥抱云原生Kubernetes,构建阿基米德调度系统。
数智化时代开启后,跨场景精细化运营管理对资源管理提出新的要求,需要形成数据中台能力,全面服务多个场景运营管理,也对敏捷、高效提出了更高要求。
云原生这三个字,其实准确的读法应该是 云-原生。
其中,云(Cloud)是和本地对应的,传统的软件跑在本地服务器上,如果要把它们迁移到云端,就需要进行不小的改动,这往往会造成很多问题。
而原生,我们可以理解为“土生土长”的,换句话说,就是云原生的应用,在设计之初,就是考虑到为了云环境而设计的,比如云服务的弹性、分布式优势等等,京东云完整经历了从物理机、虚拟机再到云原生的全过程,使得其具有某种战略级的视野。
容器化并不能解决所有的问题,京东有大量的服务器资源,而资源使用不够充分,其实,这在每个互联网业务平台都存在。
也就是说,在平台的波峰期,需要靠新增服务器来应对高峰瞬时流量,但在低谷,这些资源就会浪费;同时,不同批次、型号的机器的资源使用率差距较大,资源碎片导致的资源浪费严重。
因此,随着业务的持续发展,简单的调度分配资源算法已经无法满足复杂的调度需求,急需找到解题之道。
那就是一套更具有智能属性的中央调度系统,京东的阿基米德应运而生。作为 JDOS 的核心调度组件,阿基米德是撬动整个数据中心的支点,负责整个京东数据中心的资源调度与驱逐。京东同年引入开源的Kubernetes 技术来重构相关技术栈,全面对技术进行升级。
对于资源碎片和时空不均的情况,阿基米德用批处理任务进行统一填充式调度,以达到资源碎片的充分利用和资源的时空复用的效果。不仅可以对当前的资源和任务进行调度,还可以综合应用画像和批处理任务的描述,对未来一段时间的任务调度进行提前规划,使得业务能够正常运行的同时,资源得到充分的利用,有效防止了批处理任务与长期服务的资源竞争。
作为支撑京东万亿 GMV 的技术基础设施,阿基米德由大规模容器集群调度、数据库与存储技术平台、组件化微服务平台、商品图片技术平台、异地多活与智能运维、边缘计算平台构成。其中容器技术是所有平台服务的基石。
2018年京东加入 CNCF 云原生计算基金会,成为白金会员。经CNCF基金会官方确认,京东目前运营着全世界最大规模的Docker集群、Kubernetes集群,以及最复杂的Vitess集群之一,全量100%实现了“All in Containers”,是目前全球容器化最彻底的互联网企业之一,也是CNCF开源项目最大的使用者与贡献者之一。
在2016年以前,基本是内部需求在拉着京东云跑,而2016年以后,内外部的业务增长,使得京东云面临打造行业最复杂的混合数字基础设施的任务。
例如,2019年,京东物流系统国际化。但是,京东云的基础设施没有在欧洲落地,而是通过IaaS层的适配,将技术中台快速部署在AWS/Google,这使得当地的业务研发不用关心PaaS运行在哪朵云上,而随着物流国际化进一步加速,京东物流经常性在全世界范围内开仓,京东云的混合云架构则很好的适应了接下来的快速开仓过程。
同样,在2020年,经过一年多的产品打磨,重构了公有云托管K8S集群的网络模型,适配更多的应用场景,为集团业务上公有云托管K8S集群打下坚实基础;外部支持百家云、三维家、科大讯飞等多个大客户将业务运行在京东托管k8上;内部支持AI,物流等多个部门逐步将业务迁移到托管k8产品上。
在2021年,京东云发力混合云、多云,进一步开发云舰平台,支持多平台的k8s集群的全生命周期管理以及上层的PAAS、SAAS应用接入和整合。
但雷峰网(公众号:雷峰网)认为,京东云不仅仅是技术上有自己的特色和先进性,更重要的是其战略思想具有开放、兼容、利他的属性,而如果脱离了这个属性去理解京东云,得到的只是对技术片段的理解,只有了解云舰的核心思想,才能从更高层面理解京东云的行业价值和内在竞争力。
京东云进入赛道的时候,中国公有云市场已经发展了一段时间,而这段时间里,很多企业为了增强业务黏性,都或多或少的加强了云的三层架构的耦合,进而引导用户使用“全家桶”式的服务。
然而,云用户天然具有分散风险的需求,多云、混合云是必然的发展方向,这就要求京东云能在游戏规则以内,解决客户被单云锁定的问题,以云原生应用的开发、部署和运维为核心,提供跨云(不同云形态和云厂商)的技术平台与运维管理工具,让客户无需操心底层各类IaaS的差异,可完全专注于应用业务的开发。
从技术角度来看,笔者认为,能对抗强耦合,京东云首先做到了全面兼容基础设施,并通过增强的云原生容器内核和开放的技术中台来作为技术保障。
前面说过,京东云发展早期,也有强耦合的问题。但京东业务的复杂性,使京东云很早就着手解决这个问题,从业务的复杂性来说,京东的业务生态复杂程度,可能是行业中数一数二的。
也正是基于京东多年大规模业务场景的历练与沉淀,才使得其对于混合IT系统有着不懈的追求。也就是说,仅仅就内部而言,京东云也必须战胜“复杂”,才能“简单”的极致生存。
这是京东云发布行业首个混合云操作系统——云舰的历史背景。
笔者认为,云舰的一个最强底蕴,就是基于京东多年复杂场景的大规模实践,以及近7年在容器化、云原生领域的实践和多个行业客户的成功部署。
加上强烈的可调度、可管理属性,可以说,云舰将混合云的管理推向了操作系统级别。当然,这里的“操作系统”是一个比喻,但很贴切的体现了云舰的特点。
很多平台的强耦合,都是在PaaS实现的,方法则是增加用户的迁移复杂性。而对此,云舰敢于承诺——开放PaaS平台,支持运行在所有主流公/私有云的IaaS。
也就是说,京东云不仅自己不搞强耦合,还为用户提供了一定的解耦能力,可以任由用户根据自己的需求选择来去。
这种依靠平台的核心价值,而不是设置耦合障碍的做法,笔者认为符合云计算发展的长期利益,当然,京东云也必须为希望迁移的用户,或者是希望建立更复杂的混合云的用户,能够提供全栈式的解决方案,这才是用户不仅能自由迁徙,还特别愿意在京东云落户的前提。
这种承诺赋予用户的自由度,和对行业现实的冲击力,都是史无前例的。如京东科技京东云事业群总裁高礼强所说的那样:“京东云永远不做产品捆绑,不让合作伙伴做选择题。”
当然,我们不能因为一些企业发展有自身特色的PaaS就一味指斥为“捆绑”,毕竟,PaaS层的很多耦合,也有为了提升效率的考虑。
这就要求京东云不仅在解耦上,更要在PaaS的竞争力上超过对手,而对于IaaS的竞争红利逐渐消耗的当下,云舰通过京东自研PaaS来增强差异化竞争力,方是正道。
比较了不起的,是京东云还同时承诺,引进第三方生态PaaS来丰富应用市场。
这在行业里,不能说绝无仅有,但也相当罕见。
如果你熟悉京东的历史,也就不会大惊小怪,比如,按照京东经典的“甘蔗理论”,在更多节的甘蔗上开放自己的优势,和伙伴组成生态,才是争取更多利益的关键。换言之,京东可能放弃了给自有产品差别待遇,但这样才能吸引更多的“甘蔗节”,用丰富的生态和更多的选择来吸引用户。
必须强调的是,京东云的开放姿态,除了价值观层面的因素外,本身也是提供一种差异化的竞争力。特别是面向客户构建混合云场景时,可以有效兼顾原有政企客户的自有云计算设施,最大程度降低复杂性和迁移成本,还能提供更多的SaaS选择,那它一定可以吸引更多的用户。
目前云计算的市场竞争已经白热化,BATJH悉数入场,在这种背景下,京东云一方面从简化跨云迁移,让客户真正做到“上得去,下得来”等方面入手,另一方面又帮助用户更好的驾驭混合IT系统,同时帮助整个应用服务层的创新,这才是真正有利于构建公平、合理的竞争秩序的得人心的做法。
京东是一家开放的企业,京东云也将赢在开放。
雷峰网雷峰网