为了双十一,你知道京东都做了什么吗?

beebe0 2014-11-11

无论是广大消费者还是京东,6.18与双十一都是一个让人难以忘却的日子,虽然不能说是普天同庆,但注定着这两天并非普通的日子。双十一对于大多数用户而言唯一的信念便是购物、下单与秒杀,为了这个日子,我们熬夜到凌晨,为了这个日子,我们不惜花费超出平时预算的成本来进行购物。

而看似和平常没有太多异样的界面,但在内部却有着天翻地覆的变化。面临这个用户流量暴增的日子,京东可谓做足了功夫,而这一切均是为了保证给予用户一个良好的线上体验。对于京东而言,你知道他们内部做了哪些工作吗?我们一点一点的来了解一下。

线上交易是电商网站的重要组成部分

线上交易是电商网站的重要组成部分,在采访京东商城技术研发体系交易平台副总监——王晓钟时他介绍到:“线上交易依赖的分支特别多,第一需要知道用户的信息,第二要知道商品的信息,第三计算价格,第四对于交易来说最重要的是库存,第五还有虚拟资产的使用。导致整个交易的逻辑特别复杂。每次交易系统都靠前期大量的内部压力测试,来先找出可能的瓶颈点,同时会有工程师实时监控着线上系统,发现哪些地方存在热点,并针对热点做预案。其次京东准备了很多台机器,新加的机器用于分担流量,此外有些地方开启了细微的降级增加一些缓存。例如对于库存来说,并不太敏感,但对于用户显示的依旧正常。”

为了双十一,你知道京东都做了什么吗?

京东商城技术研发体系交易平台副总监——王晓钟

线上性能测试保证秒杀系统

对于用户而言,整点秒杀算得上是一个“福音”,而又会有不少用户担心能否成功参与到秒杀活动中来,担心由于流量过大而导致服务器会瘫痪导致无法秒杀。而京东在线上的集群非常之多,虽然没有明确透露,但是却给出了我们一个例子,假设线上为两组,如果要做线上的性能压测,会把用户导到其中的一组当中,物理上和与做压测的那组隔绝。对交易来说,现今已做到分布式交易,各个组之间的数据都做了隔绝,其中一组压力过大,哪怕整组宕机,能够快速把流量入口切换到其他组,保证用户体验,同是能够用于在线上的压测,并保证信息反馈的真实性。

而这几组没有透露的集群非常独立,后台发布系统保证数据移植性,秒杀系统和组交易系统已经剥离,对于电商来说,不是担心正常用户访问下单,怕的是突发峰值(如秒杀),虽然外表看起来一样,但后面的数据和服务有着天然之别,在今年,京东将其进行了完全隔离,秒杀系统本身也做了优化,将用户与机器人区分开来,故而机器人抢到的概率很低,并不会影响用户交易。此外秒杀系统的服务器、服务、数据均是单独部署,秒杀用的库存和商品信息都是单独推送到秒杀系统中,秒杀系统对主站没有一丝影响。截止目前,秒杀系统一次没有失败过。万一失败,也会将秒杀在一段时间后从新开启一轮,将用户的影响降到最低。

规则限制和监控“杀”恶意流量

在这个特别的日子,恶意流量也会暴增,这些恶意的流量无法预测,不是正常的用户行为,当然京东也做了大量的规则限制和监控。截止11.11日上午十点京东给出的数据是能够杀掉70%的恶意流量,不过在后面京东还有着自己的后招,经过前期测试,能够杀掉99%恶意流量,但目前后招还没开,目前的量消费系统还能顶住。虽然今天的流量有些恐怖,但京东依旧信心满满。

通过日志来进行实时监控,对于京东来说,监控平台有很多。监控又分为软件维度和硬件维度。硬件维度需要看机器的CPU,软件需要看接口的响应时间或者某个异常抛的次数,但大体还是基于日志。监控系统本身,京东做了很多方案与备灾,例如重要系统的数据隔离与新机器的加入。

实时监控系统全由京东自己开发,京东发展到现今,可以说所有的底层技术都是由自己开发的,其很难接受第三方平台的东西。举个例子,所有的第三方东西都是造了一个通用的轮子,京东以前可能还是一个卡车,用通用的轮子便可,而现今以目前的业务量来看,京东已经成为了一辆跑车,对‘轮胎’的要求格外之高。所以自己开发的技术适合自己的业务、系统、软件、硬件、员工和管理。所以监控这种关键的系统只能由自己进行定制。

负载均衡交易系统分流机器人

上面也提到了恶意流量,除了监控与查杀之外,京东还有这一套自己的负载均衡交易系统,这套系统分为两层一层是运营团队负责入口流量到机房内部的负载均衡,具体的技术选型也是业界常见的几类。第二层当流量进来后,交易系统单独做了一层对流量的清洗分流层(京东自主研发),这层更加贴近业务。

而清洗分流层的作用便在于外部的恶意流量,例如一个用户在一分钟之内访问了一万次购物车,基本属于机器人恶意刷流量,这种用户会被降低使用体验,一些请求直接被拒绝,并将其移到一个较慢的机器上去。

交易数据移植保证用户权益

对于用户而言,除了商品质量问题之外,多扣费用也是一个无法容忍的问题。而交易依赖的是用户、商品、促销、库存这几方面,这些接口无法做异步,只能同步的来做。但是提起同步,业界分布式事物是很难绕过去的一个话题,不管是天猫、淘宝还是京东都能称得上是一个技术上的噩梦。目前京东集中的做法便是提交时做强移植性检查,提交完后在强移植性检查的基础上在做异步的移植性检查。例如一个订单没有提交成功,没有移植性问题,一旦成功,肯定保证数据移植性。这也就让用户权利得到了保障,不会发生多扣等现象。

京东如何考虑自己网站的发展

电商一定要考虑好网站的发展问题,一旦发现网站的流量和用户增长了,就要立刻升级空间,或者将空间变成服务器。京东从软硬件两个维度进行了规划,对于软件维度就是架构升级,比较好把控,开发人员、测试人员与架构师一起想方案便能想出来,对代码进行改动,谨慎一些便可。

较难的是硬件方面的规划,也可以说是机房的规划,京东在这方面也走了一段漫长的道路,最早的时候没有太多规划,只有一个机房,从这个机房(B28)中不断吸取教训,每年对机房的规划(机房申请、内部带宽布置、机顶交换机、外围流量)流量入口分为世纪互联、移动、联通、电信这些运营商都是打通的,对各个运营商都做了不同的规划,外部流量一旦接入,内部流量就容易规划了。

用户的误区

对于用户而言,一些常见的故障类型包括DNS无法解析、连接超时、响应超时、重定向次数过多、服务器无响应等此类问题被用户所厌烦,他们首先想到的便是这个电商网站本身的问题,但是这里存在一个误区。对于电商网站来说,响应时间的瓶颈其实是在公网互联网之上,响应时间过慢只能怪自家网络环境不太优越。

相关推荐