解析京东双11:10万级Docker、多交易中心与京东大脑

京东双十一

又是一年11.11将至,各大电商平台在新一轮技术大考中会交出怎样的答卷?近日,CSDN云计算采访了京东集团高级副总裁、研发体系负责人张晨,京东集团京东云平台首席架构师、系统技术部负责人刘海锋,京东集团商城研发部交易平台总监王晓钟,以及京东集团研发部研发总监杨光信,探秘云计算、大数据、人工智能等技术将如何支持本次京东11.11。

CSDN云计算了解到,与往年不同,京东技术研发体系在本次备战中提出了三大战役,包括换底计划、多交易中心和京东大脑,即将京东的整体业务系统迁移至云端,按买家地域分流到多个交易中心,以及基于大数据、人工智能的个性化服务、精准化营销。

张晨:1500+应急方案、150场应急演练保证60秒恢复能力

张晨介绍了本次备战11.11的整体情况:

整个团队做了将近1500多个应急方案,每一个应用都要有一级方案,以确保任何故障都能在60秒钟之内恢复。

整个团队进行了将近150场压力测试,包括各个团队的演练,以及两次各条线的联合演练,从整体和各个局部确保流量峰值压力之下能有良好、快速的用户体验。

压力测试的演练方式要求很真实,把流量压起来不放下去,例如一个小时的订单不释放给下级系统,再在一分钟内释放,这样可以模拟秒杀面临的压力,看每一个系统能否扛得主有巨大的冲击。实战演练的目标是要能应付平时流量的20倍。

虽然京东做了好多次618、11.11,团队越来越有信心,但张晨强调,再有信心还是要演练,因为能够承担多少流量的压力没有任何人可以拍脑袋决定,必须要用实际数字说话。

确保用户体验是京东11.11技术备战的着眼点,这是中国电商的特征决定的。张晨认为,技术上可能国外领先一步,但由于人口密度、竞争激烈等因素,通过现有技术实现优质电商体验,则是中国企业领先。譬如京东正在运行世界上最大规模的Docker集群(6万个),其快速扩容能力可以更从容应对突发流量,尤其适合商品秒杀、商品详情页的需求,减轻运维压力。已经投入使用的同城机房多交易中心可以增强灾备能力,也是确保用户体验。京东大脑则是要把体验进一步做到个性化。

运维和监控是演练的两个重点。双十一对运维的挑战非常非常大,开辟新机房扩建弹性云,按照诺亚方舟的计划,就是要打建现代化的机房,最新的自动化运营方式,并且为规避挖掘机,专线从两根变成四根专线甚至五根,这都离不开运维团队的工作。整个演练过程当中也都是跟运维团队在一起,根据压测数据,决定给每一个应用多少资源。因为大家都想多一些资源,由运维团队把关,什么地方该给什么地方不该给。

要想60秒之内完成问题的解决,如果只有好架构,没有很好的监控设施来及时发现问题和启动应急方案,同样是不可能做到的。京东有一个大屏的实时显示,包括所有系统的一张完整的架构监控系统,有一综合的表都看到任何系统任何时候的状况。此外还支持移动端的监控。

保证用户体验,技术驱动业务,张晨强调的核心是数据,因为京东有中国电商领域最长的数据链,而且数据非常真实,分析出来,精准性非常高、市场价值特别大。京东在2014年全年的GMV是2602亿,通过数据和算法提高就算是1%,也是26亿,多个1%综合起来就更加可观。

京东大脑就是借助大数据分析挖掘做个性化用户体验、精准营销和智能库存,实现运营最高效率的一个例子。利用大数据,京东大脑做了用户画像、商品画像和小区画像,如何拆分订单,如何库存前置,分布到新开的区域,铺什么货,让库存最少、配送最快、成本最低、体验最好,都已经借助这些画像进行分析和决策。

在整个京东的生态链上,从库存管理到前端的用户体验,每一个应用,每一个场景,要用大数据来提高,这是一个非常长线的项目,京东有很多想法。虽然京东大脑刚刚起步,但张晨对几个试验结果都很满意。

基于云平台和大数据,京东还在探索物流和仓储作为资源开放给第三方商家。张晨表示,将来的京东云是帮整个生态系统把电商做好,不仅仅局限于京东自身。

刘海锋:全面云化,10万级Dokcer强化扩容与运维

刘海锋目前负责京东公有云和私有云架构,支持京东自身业务的是私有云体系,今年年初开始启动,构建初衷是集中管理和调度资源以支持业务有更好的应用体验,包括存储、中间件和弹性计算云(狭义私有云)三部分。在今年的京东618技术开放日上,刘海锋分享了这三个方面的工作,本次11.11备战,他重点介绍了弹性计算云方面的新进展:618时候只承担部分流量的弹性计算云,在本次11.11中将承担100%的业务和流量,容灾能力、运维能力和紧急故障处理能力得到增强。

刘海锋透露,在今年的十月份,京东的新数据中心已经部署完成,海量的京东定制服务器,全部都能够为私有云服务,所有在线应用在新机房都将通过Docker技术进行发布,支持同时在线的Docker实例达到10万规模(618峰值为1.1万,彼时预估到11.11翻两番)。

完全基于Docker云,好处不仅仅是降低成本,优化资源利用率。对于研发和产品部门来说,最大的收益是极大地提高了生产效率,因为原有的审批、部署界面选择、打包、机器分配等流程全部取消,生产上线和申请资源的时间都大幅缩短。通过非常简单的运维操作,弹性计算云能够在10秒内快速扩展上千个容器,这种能力对于商品秒杀、商品详情页、图片展示产生的突发流量而言都是及时雨。而对于流量的变化是比较均匀、有规律的网页,弹性计算云也提供了自动扩容的方式。

弹性计算云也能够对业务进行非常灵活动态的调整。对业务不再需要严格的规划和使用,可以先粗放地提供,再根据使用的情况、流量、资源占用率进行扩容或收缩,包括实例数量不变而核心数量收缩,使得各个业务之间的资源分配能够更合理。

网络方面,物理层包括交换机、网卡都是纯万兆环境,软件层仍是618开放日介绍的VLAN+OVS,用OpenStack而不是Docker网络。尽管Docker 1.7已支持Multi-host,刘海锋认为,Docker网络还不够好,京东弹性计算云更看重的是Docker成熟的对资源控制的功能。上面的应用平台是京东自研的,做的是资源跟业务之间的桥梁,它更多的是集成很多基础的工具比如说部署、监管、报警方方面面,另外它做弹性和手工的集群调度。刘海锋表示,因为京东更了解自己的业务,自己写的框架才能对京东原来的流程、基础设施支持更好。

谈到基础设施建设,刘海锋表示“水很深”,因为懂机房、懂数据中心建设的人才比较匮乏,风火水电网络设备等等,很多经验需要自己摸索。

云化的另一个感受,是整个技术平台不管是私有云、存储还是数据库基础软件,为了迎接更大的业务规模需要提前做很多的工作。比如消息队列,每到一个新阶段就会遇见新的问题,因此基础架构项目都是长期的,需要有一个季度的前瞻性提前把做好,才不至于被动地在追在业务后面去配合。

第三个方面的经验,就是要紧扣业务的需求,跟业务合作做基础架构的改革,获得大家的认可形成口碑效应,而不是一成不变做一个东西,通过管理的手段去推。

由此来看,此次全面云化也并不是专门为11.11做准备,而是京东技术平台不断升级的一个重要节点,之前的机房支撑京东目前的业务已经有困难。事实上,已经投入生产环境的新数据中心,也只是一期项目,刘海锋透露,未来还有二期、三期的建设,会有华东、华南的新数据中心,以满足2016年的业务发展需求。

另一方面,京东应用虽然目前完全基于弹性计算云架构,底层老机房仍在服役,当然最终是要全部迁移到新机房的(预计老机房一个多季度之后完全淡出)。刘海锋表示,迁移到新的机房,基础架构的挑战只是一方面,建成新的基础架构、新的机房、新的软件架构,要把原来的业务系统都梳理一遍,要把原来好的十多年系统都要迁移到新的数据库里,然后最后新老机房都可以灵活的配比,挑战都比较大。

王晓钟:多交易中心+同城热备,目标20倍历史峰值

2015年10月成功通过验收投入使用的还有“多中心交易项目”(一期)。往年618和11.11的备战,基本上是靠某一个机房做起来,现在的流量和数据规模是以前的好几倍,所以今年在机房扩建和弹性云的基础上,交易平台系统和上下游多个系统协作做了多中心交易的重大技术改造,把整个交易的流量和数据分布到多个中心进行,以突破同城机房扩容的技术瓶颈,实现交易能力随业务的发展水平扩展,以及交易平台的异地容灾与备份。

在设计上,多中心交易系统类似实体商超,多个交易中心按用户分流,建在不同地区,用户访问本地区的交易中心。在具体架构上,多中心交易系统包括数个主中心和多个分中心,主中心与分中心之间完成实时交换数据。主数据(商品数据、商家数据、用户数据等)的流向从主中心通过数据总线实时同步到分中心,分中心只读;交易数据(订单数据)的流向从分中心实时同步到主中心;故障时,分中心转移到主中心。

项目一期启用的是廊坊数据中心,实现了同城热备,按照过去一年流量峰值的20倍做系统的流量规划,因为水平扩展也不可能做到无限扩展。异地热备预计明年11.11可以完成。

王晓钟表示,构建多交易中心,数据是最大的难点。整个交易数据可以分为用户的数据(如购物车、订单的数据)和商家的数据(如商品、促销、库存的数据)。京东目前已经在其中的部分中心把所有的商家数据做了热备,按照一定的比例和流量,按照运营商分配过去,这样机房之间可以承载流量。这样有两个好处:系统吞吐量提升了一倍;可用性提升,如果发生单边数据丢失或者短时间不可写,也能通过其他机房顶起来。

用户数据目前还是冷备的形式,用户访问机房A的数据,有可能流量会回到冷备机房B,主要是解决数据库的问题,以及线上系统的稳定性。

谈到为何热备和冷备并行,王晓钟表示,首先,现在线上系统特别复杂,包括本地缓存以及各种链接的管理等等,而冷备集群没有流量,一旦出了问题把线上的流量导到冷备集群上,无法确保资源是否够用,以及复杂系统是否可用。所以,未来至少京东交易平台都会采用热备技术。其次,热备比冷备集群更有利于成本的优化。

然而,热备对软件架构的挑战特别大。体现如下:

数据一致性。如果是热备,写数据的时候两边的数据怎么保证一致是一个很大的问题。

集群规模。冷备可以做小一点的规模,但是热备集群规模要很大。京东整个交易系统是一个慢慢发展的过程,最开始的适合软件架构还不成熟。

随着交易量的增大,对线上高可用的要求也不一样。随着京东交易规模的增大,订单量也在迅速增长,要求也巨增,架构就跟着不同的系统要求做不同的变化。

王晓钟以一个POP商家卖一件服装为例进行解析交易背后的数据与流程。商家想在京东实现卖衣服需要有衣服、价格和促销、库存的信息。用户通过整个商城交易系统和前面的网站系统来发现这件衣服,有可能在首页上发现,也可能通过搜索和频道页,用户起码用到这几个系统:单品页、购物车、结算页。在数据层面上来看,涉及到系统商品系统、促销系统、库存系统、用户系统、购物车系统和用户订单系统等。对于商品数据来说,京东现在在第二机房都是采用数据库加缓冲的方式,两边数据库都有数据。对于商品数据来说第二机房的商品数据都是全量。

POP商家在系统里建了商品,通过后台程序写入。数据写进来以后,后台有一个程序会把数据给分发到各个机房去。分发主数据节点,再向下面的子数据节点分布。这样商品数据、促销数据包括库存数据就是分发了。分发了以后,用户那边网站进来,因为网站和后台数据相通过,通过那几个集群不管是搜索还是交易,就能查询到这个数据,是在前面机房又对这些数据进行处理和分发,就保证这用户的流量不管是机房A还是机房B,看到的都是一样的数据,没有任何的差别。

多中心交易的另外一点,就是每个中心内部还要在做异常流量和正常流量的详细切分。正常流量就是正常用户的下单,不会影响单页和流量的巨大变化。异常分两种:恶意攻击和业务本身的特殊性带来突发性的高流量(如秒杀)。前者是通过技术和不断更新的策略来屏蔽。后者需要针对交易流程做大量的技术改造,因为普通的交易流程是前轻后重(前面流量入口就是流量一般,后面的计算量大),秒杀是前重后轻,在多中心的架构下做割裂,甚至物理的隔离,就保证两边的业务都能正常进行。

杨光信:“京东大脑”的一二三四

今年初启动的京东大脑项目,其诞生与刘强东“效率是订单的核心竞争力”的理念一脉相承,目前主要产品是个性化推荐,已经覆盖PC端和移动端(618的数据,京东APP+微信+手Q三个平台占到订单总量的60%)。杨光信用“一二三四”来概括京东大脑的全景。

一个目标,即用人工智能(AI)技术提高京东电商的运营效率。

解决连接用户和商品的两个主要问题:如何让用户最快地找到最合适的商品,如何让各种各样的商品最快地找到最合适的消费者。

服务对象为三类主体:为京东用户提供个性化的体验,为供应商实产品设计、精准营销的方案,以及提高京东平台的仓储、配送、售后等各方面的运营效率。

四个技术层面:数据、模型、系统和应用。

杨光信详解了四个技术层面。

第一个技术层面是高质量的电商数据。京东以自营为主,杜绝商家刷单等现象,数据真正代表用户意图或者消费习惯各个方面。京东大脑基于十几年积累下来的用户数据,做很多的数据挖掘、分析,针对用户、对产品、商家、小区分别进行画像。用户的群体能够得到非常准确的描述,然后可以在上面实现个性化体验和营销等功能。基于用户数据可以生成的比较准确的用户画像,能够描述用户各种自然属性,如性别、年龄、购买的偏好、购买力等。京东大脑经过细致的分析还发现,不同的用户群体,也能够表现出共同的特征,比如说一个范围一个小区或者一个写字楼里,可以把所有的用户做一个整体来看,表现出来的特征跟其他的地区有非常高的区分。所以,基于小区画像,也可实现个性化的一些效果。

第二个层次是机器学习的模型。电商产品推荐的本质是呈现的排序,特别屏幕有限的移动端,需要从海量商品中精挑细选出一些商品,然后根据各种不同的因素进行排序,这与大而全的通用搜索完全不同。杨光信表示,京东大脑目前用到的排序因素有好几百种。为了实现各种排序的功能,京东做了大量的机器学习建模工作,利用用户在京东网站上留下的数据,包括他自己或者网上其他的数据构建相应的模型,对单个的模型进行预测、评估,并综合运用。京东还预测某个具体的商品随着季节、天气、热点事件、区域等不同因素的销量变化情况,借助这些模型可以优化采销、配送方面的流程。

第三个层面是系统。有了数据和模型,京东希望用机器而不是人工的方法来寻找一个最优解。杨光信认为,人看到的范围是毕竟有限,机器能把各种不同的因素综合起来找到最优解,系统能够提供所需要的高性能。他透露,截至目前,京东每秒钟要做的预测请求是好几万的量级,将来随着京东的发展,业务规模越来越大,对系统性能、底层计算平台的要求也会越来越高。希望系统能够智能,通过数据、模型来完成业务,并且性能是可扩展的。

第四个层面是基于数据、模型、系统搭出来的各种各样的应用,解决用户的痛点和平台运营的痛点。比如供货商开发出一个新的产品,他希望能够在京东上找可能会对该产品感兴趣的用户,发放一些试用品或者优惠券去吸引这些用户,基于京东大脑的数据、模型和系统的基础,商家可以找这些潜在用户,有针对性地做好进一步的筛选、转化。

京东大脑并非大而全的战略投资,亦非由DNN实验室牵头做,而是京东有十几年的数据,在业务需求方面有积累,在技术存储备上有一定的基础,可谓顺势而为。正如张晨所说,京东大脑不是想来玩一个技术游戏,而是在针对业务的需求和挑战。

根据用户行为历史记录进行召回、排序,获得最佳的推荐结果必须要避免重复推荐,还需要模型能够随着用户情况的变化而更新。京东大脑根据商品的不同属性分别做相似、相关的召回,这也需要用户画像技术有新的提升。单纯的用户画像按照年龄、性别等属性区分用户是有局限的,比如同一个账户为多个消费者购买商品,每次购买都会涉及不同消费类型的概率和分布。京东利用用户画像,结果随着用户画像动态的特征,和一些相关联的东西出来。杨光信认为,现在京东有大量的数据分布在各个系统里面,随着时间的推移,有针对性给用户推送东西是可以做到更准确的。

另外一个问题是冷启动用户。杨光信介绍,以前的做法,是看别的用户在看什么或者买什么就给他推荐,或者干脆编辑选好的东西。这能解决一部分的问题,但是没有对冷启动用户做好服务。小区画像能够部分解决这个问题。在移动客户端可以很容易获得地理位置,根据该位置周围的情况去猜用户可能感兴趣的东西。PC端因为国内IP到实际地理位置的转换不那么准确,精确度要低一些。之后京东大脑可以实时捕捉到用户行为信息,然后调整推荐结果,随着用户和系统交互增多,就会达到老用户同样的体验。

用机器代替人力是大势所趋,但目前机器的智能程度还不能完全承担大脑的工作。比如机器模型训练工作中,特征工程极为重要。如何从用户的交易数据或者浏览数据中提取特征,人工团队根据不同的数据采用不同的工具和手段,根据过去销量从有用户留下来的数据去做一些分析、挖掘,这些特征能达到的效果比机器单纯用原始数据的效果好很多。杨光信表示,京东现在的特征是百分之百人工设置的,未来会尝试通过深度学习的方法从原始数据挖掘一部分特征出来,以解决人工在选择的特征方面有可能带来的一些局限。

关于系统性能,京东大脑要怎么考虑的不是发挥一台机器的作用,而是让更多的机器并行的能力充分发挥出来。这涉及到如何把一个问题把它分解成多个机器上,让多个机器协同执行,最后产生一个单个机器所生成不了结果出来。以决策树的过程为例,要用训练样本一层一层往下分解,每一层往下分解的时候,把训练样本以及每一个特征的熵或者递减的值计算出来,计算量非常非常大,对于并行计算化有非常多的挑战。目前在开源领域以及很多大公司都有这方面的尝试,但是京东也做了很多的努力。另外一个例子是用随机森林的方法,用很多树共同投票的结果,最后相当于综合性的结果,每一个树不需要那么多样品,一颗树在一个比较小的机器规模上可以训练出来,所以把森林里很多的树分配到大的集群上,训练出成百上千的规模预测模型出来。这样相对单个决策树模型在精度方面能够有非常大的提高,同时对计算系统和数据的要求能够降低。

如前所述,张晨表示,数据是京东的核心竞争力,而发挥数据价值的京东大脑才刚刚起步,未来还会有更多的应用。例如,京东目前还在试验一种机器巡视的方法,基于后台的监控,对流量或者用户特定行为进行分析,检测一些不正常的交易(如羊毛党)。

欢迎扫描中云网 官方微信公众号