存储 频道

京东618大促的背后:高并发交易系统技术

  【IT168 现场报道】2014年9月17日-19日,2014 中国系统架构师大会(SACC 2014)在北京五洲皇冠国际酒店盛大开幕。作为中国规模最大的架构师豪门盛会,本届中国系统架构师大会以“发现架构之美”为主题,探讨最具前瞻性的行业趋势与技术热点,分享架构在企业中的非常好的实践,共同领略架构之美。

  据了解,大会邀请了来自百度、腾讯、阿里巴巴、京东等知名互联网企业与传统行业的资深架构师,分享云架构实践与解析、大数据架构及应用、自动化运维、高性能高可用网络架构设计、互联网存储架构优化、构建全新数据中心、互联网金融及风险防范、移动平台架构设计、高效电商系统构建、全栈工程师实践等主题的最新技术实践。


京东商城交易平台副总监 王晓钟

  在大会第二天的主会场上,京东商城交易平台副总监王晓钟先生为大家带来了题为《京东高性能、高并发的交易系统技术探讨》的主题演讲。

  他介绍说,交易系统共有10大原则,分别为:

  原则一:拆分系统

  原则二:灾备切换

  原则三:水平扩展-分流

  原则四:超预期流量-限流

  原则五:保护系统-降级

  原则六:提高性能-读写分离

  原则七:唯快不破-异步化

  原则八:动态,静态流量分离

  原则九:线上压力测试-发现瓶颈

  原则十:预案


▲交易系统概述

  其中,按照业务逻辑切分系统的原则有:

  1.网站系统:首页,列表,频道,单品,搜索

  2.交易系统:价格,购物车,结算,支付,订单中心

  3.基础服务:促销,库存,商品,用户

  4.订单系统:管道,OFW,订单中间件,生产系统

  而在灾备切换方面,则包括了4大原则:

  一、多机房部署

  机房内部出现大面积故障和机房入口流量故障

  1 入口流量切换策略

  1)DNS域名:较慢,机房入口处问题+机房内部,有地域性

  2)LVS+HAProxy 直接路由:较快,机房内部大面积故障

  二、机房内部切换

  调用者客户端切换

  1 Java应用切换策略:底层服务框架,VIP,内部DNS

  2 缓存切换策略

  3 数据库切换策略:客户端,DB自身

  三、数据一致性保证:

  1 程序双写:灵活,集群间相互切换快。

  a 同步双写

  数据一致性高,影响性能,不适合多个集群。

  b 异步双写

  数据一致性差,性能高,适合多个集群。

  举例:购物车系统。

  2 底层存储数据复制

  优点:数据一致性高

  缺点:主从切换不灵活,复制节点出问题后,恢复慢。

  四、灾备集群

  1 空闲灾备集群

  热点缓存,管理成本

  2 小流量灾备集群

  增加事故风险

  3 全部切换-部分切换


▲系统举例-实时价格

  王晓钟以实时价格为例,介绍了京东的交易系统:

  一、业务逻辑概述

  京东的实时价格由采销人员后台设置,京东价+促销信息(类型,开始,结束时间)。用户在前台商品详情页访问。京东价由采销设置的京东价+促销规则(直降等)计算而出。

  二、写逻辑流程

  1 采销后台更新价格,写关系型DB,通过异步任务通知发布程序。

  2 发布程序更新促销信息主redis数据,更新价格主redis的过期时间戳。

  三、读逻辑流程

  1 Nginx直接读取本地redis中的价格数据,无过期则直接返回用户。

  2 过期或没有命中则回源访问价格服务,取最新数据返回用户。

  四、回源写逻辑

  1 Java价格服务读取促销信息主redis,计算价格返回用户,同时异步写价格主redis集群。

  2 价格主redis集群同步数据到前置Nginx节点的从redis

  水平扩展-分流原则:

  前置Nginx+Redis的架构是无状态的,Redis中几乎存放了全部商品价格信息。 可以水平扩展,瓶颈在于主redis的数据复制能力。

  超预期流量-限流原则:

  前置Nginx增加了限流规则:规则+限流数据。

  保护系统-降级原则:通过开关控制回源,降级为不回源,业务影响为价格不更新,但交易系统的价格为最新价格。

  提高性能-读写分离原则:

  读写逻辑分成几个闭环,完全互不干扰。

  唯快不破-异步化原则:

  采销后台异步调用发布,发布异步写价格主redis,回源异步写价格主redis。

迈向平民化 百度云数据库Palo闪耀SACC
▲点击进入2014中国系统架构师大会(SACC 2014)报道专题

1
相关文章