在临近今年双十一还有两个周的时间点,京东团队从技术角度,详解了如何打好618、准备双十一的攻坚战。
技术加持大促
京东商城首席架构师刘海峰表示,每年的“大促”,不属于研发系统,不用设计或重新开发,更多的是一种保障性工作,确保系统安全性。他将“大促”具体分为四个方面——故障、流量、扩展、成本。
第一,让京东技术系统能够“容忍”故障,即在硬件、软件、人为、机器、服务等方面发生故障的时候,系统仍能够保证比较高的可用性,支持线上服务。
刘海峰表示,为了检验技术系统的容错能力,确保系统在硬件与服务出问题时不影响用户体验,京东研发团队开发出一套名叫chaosmonkey的系统,专门应用于京东做大规模的故障演练。可以说,故障演练是京东过去几年大促中的例行工作。
根据故障类型从网络层面、系统层面、数据库和中间件,甚至到应用服务的层面,去做各种各样的故障模拟和验证,以确保出现任何问题,应用都能够高可用地运行。同时,京东app与前端pc页面均能够实现优雅降级,不至于出空白。跟过去几年里我们大促的例行工作就是故障演练。
第二,所谓流量,即是确保有较强的技术能力能够扛住大促峰值十几秒的巨量流量冲击。
每年双11与618当夜零点,流量是最大的,为了应对此间流量高潮,京东技术团队需要提前做很多压测工作。最早期,京东技术团队采用单体压测,比如专门负责购物车的团队,就用一些脚本或工具来压购物车线上服务,以达到压测目的。
三年前,京东技术团队开始实施憋单压测——订单在某一点憋住,然后再释放。憋单的压测可以有效监测订单后的系统环境,模拟订单后的ofc以及库发生产系统的瓶颈。
但是,刘海峰表示,憋单压测有个缺陷,它不能很好地检验到订单之前的系统,尤其是黄金链路、浏览购物车下单支付等,这些对大促来讲都是最关键的。
2016年10月左右,京东集团团队开始设计一个新一套的系统经验压测机器人,模拟一千万个用户在全国各地同时部署于京东节点,在真实流量的情况下,通过写程序模拟人的行为——浏览、选商品、加购物车、提交。
于是,从2016年双11开始,单机房的军演压测成为大促之前最关键的工作。刘海峰表示,今年618备战期间,团队进行了四次全链路的军演压测,通过单机房的军演压测成为系统优化以及资源评估、分配的重要依据。
第三,所谓扩展,即在公司规模不断扩展、消费者流量不断增加的情况下,增加机器、新建机房,同时保证公司业务实现没有上限地增长下去。
京东的技术架构经历了从java到同城单机房到同城双机房、最后到广域分布式的过程。国内的各个地域,包括华北、华南、华东均有不同的idc,整体形成大数据中心,同时让用户流量就近接入,解决整体可扩展性问题,无论哪个区域出现问题,都能实现灵活流量调度。刘海峰表示,这套过程名叫“异地多活”,不同公司、团队对它均有不同理解,京东的特殊性在于经历了完整的历程。
第四,有效控制成本,在合理阈值内搞大促。
随着每年618与双11业务增加、访问流量增大、投入资源增加,购入的机器越来越多,机器成本已然非常高,怎样既做好大促、同时合理控制成本,京东技术团队提出名为“阿基米德”的技术方法,具体来讲是——
第一,做海量资源池的统一调度,特别是在线业务是京东主要大促的备战服务,此外还有离线处理。技术团队将两个资源池打通,做抢占式调度,然后做大规模超卖,进一步提升资源利用率。
第二,做混合云,京东技术团队在大促期间租用一部分机器,比如京东云,也有可能是其他云服务合作伙伴,扛住大促流量。
ai的融入
在京东商城中台研发高级总监王晓钟印象中,ai技术融入到京东每年618与双11,并不是发生在某个具体节点,而是一种自发性的、百花齐放状的。包括客服机器人、智能补货、销量预测、供应链体系的优化这些都是通过人工智能的技术来实现的。
具体来讲,ai技术对大促的技术保障有哪些方面呢,王晓忠从两点向雷锋网介绍:
第一个,京东技术团队研发经验机器人,进行全链路故障演练,某种程度上来说也是程序模拟人的行为,去模拟一个大的流量场景。
第二,大促期间,京东技术团队利用ai技术去更智能地服务一些客服任务。
今年京东双十一较以往最大的不同,可以说就是ai技术的运用了。王晓忠对雷锋网解释称,以线上流量监控为例,做方案、降级、分流等任务,均是人工完成,今年已实现在监控数据详实基础上的半人工智能化,王晓忠称,预计明年618与双十一可以实现在很大程度上的全人工智能化。
容器系统上,京东做了四年之久:2014年8月第一代名为jdos的容器平台,最初定位不仅仅做容器,还做整个数据中心的os,系一套大的集群管理系统。从2014年至2016年初,京东容器一直都是openstack的1.0系统;从2016年初开始,启动openstack 2.0系统,将线上几十万核实现异地迁移,以实现更简单的运维。
其次,刘海峰表示,团队在做更统一、更动态的资源调度,不再是固定多少核,而是根据负载做大规模的统一调整。这个资源池不不仅限于在心业务的资源池,还有离线业务的资源池,让它更有弹性。
具体而言,从经济效应来说,如果想让集群管理更有经济价值,无非是两方面的工作——超卖与强行调度。刘海峰表示,从2011年到现在,通过超卖技术节省了几千台机器。今年大促京东也会广泛地使用在线和离线的混合调度的方式,缓解大促时候的峰值的流量。
对于今年备战双十一,包括阿里、京东、苏宁等电商平台纷纷加码人工智能、无人机、无人店等宣传曝光,王晓钟对雷锋网表示,人工智能是在备战中很重要的卖点,同时更是看得见、摸得着的很实在的东西。