京东刘海锋:Chaos Monkey、全链路压测和容器技术 智解双11技术难题

“面对双11的压力挑战,我们京东技术团队将夯实基础、增强智能视为己任。一方面,继续加强基础架构建设,有力保障业务;另一方面,广泛应用机器学习等AI技术实现智慧网站、智慧生态、智慧营销、智慧供应链、智慧客服、智慧物流。”——京东商城总架构师刘海锋

双11刚刚过去,伴随着狂欢之外,还有令消费者感到痛苦的物流、黄牛、刷单甚至诈骗等问题。在新的消费形式下,京东技术团队今年将如何做好技术保障?CSDN记者在双11后第一时间采访到了京东商城总架构师刘海锋,就京东双11技术备战内容进行了深入的讨论:

CSDN:现在的京东基础平台部门备战双11的技术指导思想是什么?

刘海锋:我所在的部门是京东商城基础平台部门,统一负责分布式存储与图片服务、中间件、弹性计算、数据库技术、系统保障、应用架构、机器学习等基础技术方向。我们备战双11的技术指导思想是:故障演练、全链路压测、夯实基础、增强智能。

故障演练

在大规模故障演练方面,京东引入一个新的方法Chaos Monkey,机器、网络、模块、服务、中间件、数据库,来针对性的演练,所有设想的故障,全部工程师的团队来模拟。任何一个业务,我们都会两组,由一组做故障的制造者,另外一组团队作为故障的解决者和响应者,来考察各级力度发生的时候,我们整个基础团队的检测、响应、处理还有恢复的时间。我们要求小的故障不需要人介入,大故障人工介入可以快速完成。通过整个这样的工作,在大促之前的两个月期间密集的来开展,提高我们对大规模故障的容错能力。

全链路的压测

大促时候考量最大的是我们对峰值的控制能力。11月1号和11月11号的凌晨有大规模的抢购和促销,一瞬间和几秒钟流量是很大的,怎么样用有效技术的手段来应对大流量,怎么样很好的规划系统这是比较难的问题。这个难点在于我们可以对下面的某个服务某个系统来做大流量的压测,但是所有压测都局限某一个系统或者某一个链条里面。今年我们创新性引入新的技术,ForceBot,也称军演机器人来模拟人的行为,机器人通过程序发起大的流量进行全链的压测,发起上亿的浏览、搜索、加购物车、下单等等并发任务。我们不光读压测,还有写压测,支付订单这些环节。通过机器人模拟用户的行为,整个全链路联动的压测对我们的整个大促是非常重要的环节,也是今年第一次呈现。

夯实基础

经过这么多年的积累,京东商城形成完全自主研发的技术的对战。多数据中心的架构已经稳定运行近两年,Docker容器技术、中间件都充分容器利用自主资源,自主研发中间件的技术,我们的服务框架等等。存储架构方面,过去几年里,我们积累了沉淀自己以内存为中心的存储体系,也就是最核心的系统,就是半结构和结构的存储系统,几乎应用在京东所有的动态内容的数据存储里面,因为以内存为中心极低的延迟极高的存储量,很适合电商的场景。基础建设方面,通过京东安全防护化解大流量、链接的攻击,我们的机器学习技术对抗刷各个接口的机器人。

增强智能

广泛的机器学习人工智能的技术应用到京东商城各个业务环节。我们把机器学习用到商城很多业务环节里面,简单几个层面来形容,就是说让网站更智能,智慧网站,让我们的生态管理更智能,我们的采销更智能,物流更智能。

CSDN:能否从架构、语言的角度,详细介绍下京东Chaos Monkey和全链路压力测试。这是否可以看作今年京东技术创新的一个重要表现?

刘海锋:局部硬件故障总是会发生,但不允许影响系统可用性。为此我们通过“Chaos Monkey”演练逆向推动业务的高可用架构设计,促使将类似机器故障、网络故障等在软件层面进行冗余设计,进而避免因硬件故障而影响用户体验。

京东刘海锋:Chaos Monkey、全链路压测和容器技术 智解双11技术难题_第1张图片

包括CPU负载过高、磁盘写满、内存溢出、服务器宕机、进程被杀死、DNS/VIP配置错误、连接DB失败等在生产环境中可能遇到的故障,都在其模拟的范围内。

京东在“Chaos Monkey”演练时,将分出一部分人员做“Chaos Monkey”,另一部分人员故障恢复。两部分人员将做物理隔离,完全屏蔽双方的沟通交流。在演练开始后,“Chaos Monkey”人员将通过响尾蛇系统不定时、不定种类、不定范围的向各生产系统生成真实的故障;故障恢复人员在不知道具体故障发生时间点、故障类型及范围的情况下,通过各种监控系统、报警信息,确定故障产生点,并根据相应的应急响应预案进行流量的转移、切换操作,此时并不进行故障的排查工作;在用户流量被切换到可用集群后,在不影响用户体验的情况下查找故障具体原因并进行修复。“Chaos Monkey”人员会实时监控各系统流量,一旦发现演练对流量、可用性有明显影响,即刻通过响尾蛇系统修复故障。

演练完后,部门会进行演练的总结工作,对演练中出现的问题进行总结分析,对应急响应预案不合理的地方进行修整,对人员操作不合理的情况做流程制定以及培训,并针对软件架构设计不合理的情况,进行架构升级。

今年双11备战期间,“Chaos Monkey”演练覆盖了登录、购物车、下单、单品页、供应链、POP平台、中间件等大部分系统。

京东开发ForceBot即军演压测机器人来进行全链路压测。FoceBot分布式部署到全国各地CDN节点,编写全流程的用户行为脚本,一般在凌晨后半夜,通过控制中心下发任务和调度全国agent,各节点的agent收到任何后负责发起模拟用户行为大流量请求并上报任务执行情况,比如模拟真实用户操作:首页->注册->登陆->搜索->浏览各种页面->加入购物车->结算->支付等关键流程等。为了配合全链路压测系统,需要对用户、商品、库存、订单、支付、风控等在线系统进行改造,来支持压测过程中的写请求,并对产生的脏数据进行后期清理。

京东刘海锋:Chaos Monkey、全链路压测和容器技术 智解双11技术难题_第2张图片

全链路压测使得技术团队能够发现上下游系统各个环节中的性能瓶颈与潜在风险。这项技术对大中型电商企业都有参考意义。

CSDN:从2014年至今,京东尝试Docker已有两年的时间。去年618、双11的时候,我们聊过京东基于Docker容器的弹性云项目。关于容器管理,您觉得最大的挑战是什么?请对比去年,介绍下今年Docker在平台层的规模、应用以及调整?

刘海锋:京东商城在容器管理最大的挑战在2方面:

第一,大规模带来的规模性挑战,京东有多个单集群达到近万台物理机的规模,为运营好这些Docker集群,务必确保容器管理要与底层的机架,交换机,物理机等硬件配合,并且要向上对业务层提供更灵活有效的调度支持。

第二,近20W个容器中的任何一个容器实例都是一份坚实的承诺,确保性能&稳定性,所以在容器隔离和底层Linux kernel的性能优化均投入极大的人力&物力保障。

CSDN:对比往年,今年Docker在平台规模,应用做了哪些变化和调整?

刘海锋:我们全新建设2个新Docker集群,应用除一如既往支持全部业务在容器上运行,在今年有2方面变化。应用自动+手动弹性比重增加到60%,特别是京东根据电商业务流量突发,历时短暂的特点,研发“scale up”弹性方案获得业务认可。除支持应用业务外,今年在数据库方向,经过过去1年的实践目前规模扩张迅速达到Docker比例90%

CSDN:关于容器监控,京东近20w容器,通过什么方案做到的整体监控?

刘海锋:容器的规模已经不是最重要的问题,如何能够让研发人员的上线和部署更加的便捷,让机器资源充分得到利用,这才是最主要的。

整体部署架构如下图:

京东刘海锋:Chaos Monkey、全链路压测和容器技术 智解双11技术难题_第3张图片

京东的容器监控全部采取自研,各方面收益明显:

  • 监控成本 有效节约,比如:4C8G容器负责监控1000台目标容器和物理机
  • 支持分布式多IDC部署
  • 监控指标&告警等任务化,方便按指标调度,避免单点失效而丢失监控指标
  • 深度进程级监控指标
  • 全容器镜像部署
  • 监控能力开放
  • 事实监控2秒一个采集点,有效帮助业务在新上线或优化,压测等期间更细粒度观察业务系统运行状况

本月18日(周五),在CSDN主办的2016中国软件开发者大会上,京东商城总架构师刘海锋在大会keynote环节,还将带来《京东双11创新技术实践》的干活分享。18日下午,大会特别设置的电商架构专题也备受瞩目,届时京东、阿里、唯品会等电商的顶级架构师到现场为大家讲述电商架构背后的故事,关注架构的你,千万、千万不要错过。

你可能感兴趣的:(京东刘海锋:Chaos Monkey、全链路压测和容器技术 智解双11技术难题)