保驾11.11 京东多中心交易系统技术解析

保驾11.11 京东多中心交易系统技术解析

2015-11-12 程序员的那些事

来源:IT168 ,作者:刘策

一年一度的“11.11”电商节购物狂欢季,各大电商平台也纷纷摩拳擦掌准备大干一场。但是网友消费热情的上涨不免对电商平台后端的数据中心提出更高的要求,许多消费者或许还记得几年前由于系统原因造成的卡单、丢单等事情,大大影响了用户体验。为此,近年来各家电商也都提前准备应对策略,积极的寻求瞬间大流量的解决办法。

日前,京东召开11.11技术备战大会,详细介绍了京东如何应对即将到来的“11.11”电商节流量高峰,并特别提到了已经成功通过验收并投入使用的“多中心交易项目”(一期)。

建设“多中心”咋就这么难?

许多人都有着这样的经历——节假日去大超市购物最烦心的就是结账台前漫长的排队与等待。为什么不能多开几个收银柜台?或者不同类别的商品分别结帐?我相信许多人在苦苦等待中都会有这样的想法。同样,对于网上购物来说,虽然不存在实际情况中的等待问题,但是建设多个中心的确能够起到缓解流量,提升效率的作用。更重要的是,不久前某电商的“光纤事件”给整个行业都敲起了警钟,实现异地容灾,保障数据可靠性已经刻不容缓。

正是基于效率、安全与冗余等多角度的考虑,京东集团正式提出了“多中心交易项目”,旨在通过优化交易系统的技术架构,提高系统的扩展能力和容灾水平,支撑业务的高速发展。正如我们分析的那样,虽然增加多中心可以切实解决问题,但也随之带来了后端数据层面的诸多问题。比如那个被众人诟病的12306网站,之所以春运期间买火车票难上加难,之所以明明看着有票登录之后却卖光了,其根本原因就是没能够解决数据一致性的问题,由此才引起网友们一遍遍的刷新,甚至许多网站也研发各种“刷票”软件推波助澜,最终引起12306网站瘫痪。

由此可见,多中心交易本质上是一个更大的分布式系统,交易流程中依赖和产生的数据和服务有不同的特点,必然涉及到数据分区、路由、复制、读写一致性、延迟等分布式领域的常见问题。其中,数据一致性是电商网站需要面临的首要问题,越是流量增大的时候越要保证数据更新的即时性和准确性。在多中心之间需要同步卖家数据和商品数据,如果同步的延时太长,买家、卖家都不可接受。比如,卖家改了价格或库存,用户不能过很久才看到。同样,数据正确性也是很大的挑战,卖掉的商品能够及时减少,退货的商品能够及时增加。这都时刻考验着后端系统和数据库平台的健壮性。

除了数据一致性之外,如何保证路由规则的一致性也是关键性的问题。从技术角度来说,要保障单一用户从登录到访问服务、到访问数据库,全链路的路由规则都是完全一致的。如果路由错误,看到的数据不正确,也会影响到最终用户的体验。

如何组建高效、便捷、安全的“多中心”

文章的最初我们提到,“多中心交易项目”(一期)已经成功通过验收并投入使用,也就是说京东已经在11.11之前解决了数据一致性与路由规则一致性的问题。那么它是如何解决这两大难题的?目前京东的“多中心”架构特点是什么呢?

按照规划,京东的多中心交易系统架构,包括若干个主中心和多个分中心,主中心与分中心之间通过数据总线交换数据。从数据流向的角度来说,主数据(商品数据、商家数据、用户数据等)的流向从主中心通过数据总线实时同步到分中心,分中心只读;交易数据(订单数据)的流向从分中心实时同步到主中心;故障时,分中心转移到主中心。换句话说,买家访问京东网站下单时,会按照地域优先分流到附近的交易中心,用户的下单操作是在分中心完成,相当于在超市独立的收银台完成;而主中心则负责把控用户看到的商品数据等信息是否准确,负责校验数据一致性。这样一来,两部分中心各司其职,有效的实现了流量的分配,化解了流量高峰问题。

以新注册的用户为例,在注册的时候系统会根据用户的IP定位其位置,分配一个机房标识。登录时将机房标识写入cookie供PC端web应用获取、更新对应机房的集中式session缓存,同时在用户基础读服务中提供用户机房标识供其他内部服务调用(比如移动的网关服务)。而对于之前的老用户来说,则是在切流量上线的过程中逐步更新这个标识,达到统一管理的目的。

从同城双机房的分布转变为异地多机房的分布,给数据同步带来了新的挑战,因此如何设计数据总线也是项目能否实现的关键因素。京东的多中心交易系统通过数据总线Jingobus进行快速数据交换,同步性能是mysql的3倍以上,而且可用性高,架构灵活。其中,全新的总线设计解决了多中心交易跨机房的数据库复制和多数据源间的数据异构同步等难题,实现了高性能、低延时、健壮的数据同步机制。

如图所示,数据总线主要分Relay、Snapshot和Replicator三部分构成,其中Relay从来源数据库抽取事务日志,并对Replicator提供日志订阅服务,角色上相当于Mysql Slave IO Thread。Snapshot从Relay订阅所有事务日志,写入持久存储作为快照,同时向Replicator提供批量日志订阅服务,角色上相当于Mysql Slave Relay Log。Replicator:事务日志的消费端,从Relay或Snapshot拉取事务日志将事务日志按配置的一致性应用到目标数据库,角色上相当于Mysql Slave SQL Thread。

正常情况下,Replicator直接连接Relay,消费Relay内存队列中的事务日志。但有些情况下,因为网络抖动、目标库的负载过高等因素,可能导致Replicator相对Relay落后很多。另外,当新的消费端加入同一数据源的订阅者时,新消费端有冷启动的问题。为了避免重新从数据源做全量快照,Snapshot作为Relay的一个特殊消费端,通过一种高吞吐的消费方式,从Relay源源不断的消费在线事务日志,通过对事务日志的有效处理,最终保存了数据源的一份一致快照(Consistent Snapshot),即包括了数据源库表中每一行的最新状态的快照,同时保留了一段比Relay buffer更旧的事务日志(Log Store)。由此看来,数据总线作为一个数据层的通用CDC组件,对于多中心交易项目以及异步复制场景提供了整体解决方案,奠定了项目的核心内容。

京东多中心交易系统的出现,一方面提升全国京东用户的访问速度,实现就近访问,另一方面也增强了京东的扩容能力、容灾备份能力,为京东11.11电商节带来更高的运营保障与更好用户体验。据京东集团高级副总裁、研发体系负责人张晨透露,目前京东相关团队的11.11电商节促销应急方案将近有1500个,每个团队的应急演练接近150场,还有两次各部门联合演练。如今,第一期的多中心交易项目已经正式投入使用,未来的二期项目将在2016年618促销之前完成,而最终的项目竣工将在2016年10月。

时间: 2024-10-01 13:51:17

保驾11.11 京东多中心交易系统技术解析的相关文章

蚂蚁金服11.11:支付宝和蚂蚁花呗的技术架构及实践读后感

架构的提出主要就是解决人的问题,在讨论此架构之前,先谈一下周二看完“梦想改造家”的感想. 在阅读此文章后,大概对架构有了浅浅的了解. 什么是架构? 1.根据要解决的问题,对目标系统的边界进行界定. 2.并对目标系统按某个原则进行切分.切分的原则,要便于不同的角色,对切分出来的部分,并行或串行开展工作,一般并行才能减少时间. 3.并对这些切分出来的部分,设立沟通机制. 4.根据3,使得这些部分之间能够进行有机的联系,合并组装成为一个整体,完成目标系统的所有工作. 这是通过阅读此篇博客,得出来的对“

(1-1)Java领域的相关技术

JAVA主要分为3类:JavaEE.JavaSE和JavaME.其中,JavaEE是网络编程,主要应用在与网络软件.如各类网站.ERP软件等等:JavaSE是企业级开发,如QQ.各种音乐视频播放器等:而JavaME是手机开发,如各类手机游戏.手机软件等! (1-1)Java领域的相关技术,布布扣,bubuko.com

第11天 NET 路由与交换技术

实验01:DHCP的应用 实验目标:为了减轻工作人员配置主机ip地址的负担,使主机自动获取ip地址和dns 实验环境: 打开cisco packet tracer软件,实验拓扑图如下: 实验步骤: 一. 打开cisco packet tracer软件,添加一台路由器和一台交换机.三台主机,并用直通线进行连接 二. 配置路由器 1. 配置端口ip地址: 全局:interface fastethernet 0/0 Ip address 192.168.1.254 255.255.255.0 No s

11.Cocos2dx2.2下使用JNI技术调用jar包里面的一些方法遇到的一些问题及解决方案。

<span style="font-family: Arial, Helvetica, sans-serif;">步骤一:导入JniHelper.h头文件.</span> #if (CC_TARGET_PLATFORM == CC_PLATFORM_ANDROID) #include "JniHelper.h" #endif: 此时会遇到JniHelper.h头文件无法找到的问题,需要添加附加包含目录即可解决问题.具体操作步骤如下:右击项目-

[转载] Google数据中心网络技术漫谈

原文: http://www.sdnlab.com/12700.html?from=timeline&isappinstalled=0#10006-weixin-1-52626-6b3bffd01fdde4900130bc5a2751b6d1&sukey=fc78a68049a14bb247c537e229e9301ea4dca80236df4f4e775535c08f0a24420a9ac4d726c99dad63a9f6e4c88271ed 真羡慕 google 强大的网络基础设施啊,

【11.11】你,为什么没有女朋友?

你,为什么没有女朋友? Long Long ago 当你看到1111这个数字,你会联想到什么? 一千一百一十一(万扫怎的安的万汉桌的依来温) 后来... 光棍节,秀恩爱,单身汪... 再然后一个马姓风之男子带着他的购物网站和一只黑喵横空出现在中国以后... 1111摇身一变成了女人们的狂欢节! 而男人们,无论单身与否那天的表情都如何这1111数字一般... 泪流满面... 在这"大喜"的日子里... 而你,单身猿有没有想过,为什么你没有女朋友? 对了,那天隔壁百度在凌晨时分,忽然科技园

区块链去中心化技术开发场外OTC法币点对点系统开发有限公司

区块链去中心化技术开发场外OTC法币点对点系统开发法币交易所允许用户将法币转换为数字资产,由于涉及当地的银监法规,一般法币交易所可以交易的法币种类比较有限,目前全球共有23家数字交易所开通法币交易且有交易额产生.法币交易所可分为两种: 一种是场内交易所如Coinbase, K网等,场内交易所是指可以直接通过或者银行转账从交易所购买数字资产的交易方式.数字资产交易所开发公司,数字资产点对点交易系统定制开发 第二种被称为场外交易所,包括火币网,OTCBTC, Gate等.场外交易所是用户通过交易所撮

区块链数字货币交易系统开发技术解析

区块链数字货币交易系统开发技术解析功能成熟.应用广泛的数字资产现货交易系统,强大的内存撮合引擎保证高并发量交易支持,包含完善的前后台系统,提供配套中心化钱包,系统安全稳定,可保障平台和用户双方的隐私安全.系统安全和资产安全.支持策略委托,支持国际化.提供自定义和第三方两种K线,技术分析和划线工具,支持策略委托,支持API下单三重用户KYC认证,多种身份校验,机器防刷,权限隔离配套财务系统和风控体系,配套中心化钱包,支持所有主流币种及其代币,配套后台审核和运营CMS系统,国际化语言包,快速稳定支持

Error: Package: 1:nodejs-6.11.1-1.el7.x86_64 (epel)

failed: [456] (item=[u'git', u'nodejs']) => {"changed": true, "failed": true, "item": ["git", "nodejs"], "msg": "Error: Package: 1:nodejs-6.11.1-1.el7.x86_64 (epel)\n           Requires: