• 1. ArchSummit 2014全球架构师峰会 京东商城交易系统双11总结
  • 2. 十大原则原则一:流量隔离 原则二:灾备切换 原则三:水平扩展-分流 原则四:超预期流量-限流 原则五:保护系统-降级 原则六:提高性能-读写分离 原则七:唯快不破-异步化 原则八:动态,静态流量分离 原则九:线上压力测试-发现瓶颈 原则十:预案
  • 3. 流量隔离原则前提:按照业务拆分系统 网站系统:首页,列表,频道,单品,搜索 交易系统:价格,购物车,结算,支付,订单中心 基础服务:促销,库存,商品,用户 订单系统:管道,OFW,订单中间件,生产系统
  • 4. 流量隔离原则二 流量隔离 1 机房入口流量隔离 1)按照运营商维度隔离机房入口流量 2)按照业务的重要等级隔离机房入口流量 2 机房间专线的流量隔离 不同业务,不同系统分配不同的网络带宽。 渣土车和运钞车不同路。 3 机房内部流量隔离 按照机柜分配机器。
  • 5. 灾备切换原则前提条件:多机房部署 1 无状态应用N机房部署 2 有状态应用双机房部署 数据一致性保证: 1) 程序双写:灵活,集群间相互切换快。 a 同步双写 数据一致性高,影响性能,不适合多个集群。 b 异步双写 数据一致性差,性能高,适合多个集群。 举例:购物车系统。
  • 6. 灾备切换原则2 底层存储数据复制 优点:数据一致性高 缺点:主从切换不灵活,复制节点出问题后,恢复慢。 二 机房入口流量切换 机房内部出现大面积故障和机房入口流量故障 1 入口流量切换策略 1)DNS域名:较慢,机房入口处问题+机房内部,有地域性 2)LVS+HAProxy 直接路由:较快,机房内部大面积故障
  • 7. 灾备切换原则三 机房内部切换 调用者客户端切换 1 Java应用切换策略:底层服务框架,VIP,内部DNS 2 缓存切换策略 3 数据库切换策略:客户端,DB自身 四 灾备集群 1 空闲灾备集群 热点缓存,管理成本 2 小流量灾备集群 增加事故风险 3 全部切换-部分切换
  • 8. 灾备切换原则第一步:交易流量切换 第二步:数据库停写 第三步:数据库停复制 第四步:Redis停复制 第五步:逆向恢复
  • 9. 分流原则一 水平扩展 无状态应用简单,有状态难 二 系统峰值引流,秒杀系统: 1数据完全独立的部署 热点数据少 2应用独立部署 3定制化的策略 三 非重要业务分流到单独集群 购物车的库存状态,地址 结算页的运费险,Promise标志
  • 10. 降级原则一 系统级降级 1 结算页-成功页-订单中心-订单详情 2 下游系统降级 一次拆分暂停 二 业务功能模块降级: 1 业务逻辑 实时价格更新不及时 2 页面降级 我的京东首页 动态降级到静态 3 非关键业务屏蔽 购物车库存状态 4 远程服务降级到本地缓存 运费
  • 11. 动静分离原则一 静态流量 流量大入口带宽占用高,机房间无流量 1 CDN 2 单独部署 二 动态流量 流量小,系统依赖复杂,机房间有流量
  • 12. 异步化原则一 页面异步化 购物车,结算页 二 写逻辑异步化 促销,库存
  • 13. 线上压测原则压测驱动架构 一 读逻辑 二 写逻辑 三 覆盖范围 四 性能指标 1 硬件:cpu,内存,硬盘,网络 2 软件:吞吐量,并发数,服务响应时长(客户端/服务端 ) 五工具 1 tcpcopy 2 压测工具 3 恶意流量
  • 14. 系统举例-实时价格
  • 15. 系统举例-实时价格特点1: 纯动态,无法进行CDN缓存 特点2:读写调用量大 特点3:读写比高
  • 16. 系统举例-实时价格一 业务逻辑概述 京东的实时价格由采销人员后台设置,京东价+促销信息(类型,开始,结束时间)。用户在前台商品详情页访问。京东价由采销设置的京东价+促销规则(直降等)计算而出。 二 写逻辑流程 1 采销后台更新价格,写关系型DB,通过异步任务通知发布程序。 2 发布程序更新促销信息主redis数据,更新价格主redis的过期时间戳。 三 读逻辑流程 1 Nginx直接读取本地redis中的价格数据,无过期则直接返回用户。 2 过期或没有命中则回源访问价格服务,取最新数据返回用户。 四 回源写逻辑 1 Java价格服务读取促销信息主redis,计算价格返回用户,同时异步写价格主redis集群。 2 价格主redis集群同步数据到前置Nginx节点的从redis
  • 17. 系统举例-实时价格水平扩展-分流原则: 前置Nginx+Redis的架构是无状态的,Redis中几乎存放了全部商品价格信息。 可以水平扩展,瓶颈在于主redis的数据复制能力。 超预期流量-限流原则: 前置Nginx增加了限流规则:规则+限流数据。 保护系统-降级原则:通过开关控制回源,降级为不回源,业务影响为价格不更新,但交易系统的价格为最新价格。 提高性能-读写分离原则: 读写逻辑分成几个闭环,完全互不干扰。 唯快不破-异步化原则: 采销后台异步调用发布,发布异步写价格主redis,回源异步写价格主redis。
  • 18. 系统举例-实时价格线上压力测试和系统瓶颈 1 回源是个瓶颈: 回源原因: 1)促销生效时会触发回源,为保证数据一致性必须重新计算价格。 2)商品没有命中,redis的内存容量有限。 应对措施:1)降级业务逻辑,不回源。 2)使用其他存储代替redis。 2 线上前置负载曾经是瓶颈
  • 19. 预案原则一 预案准备: 共1000+预案,执行100+个。 二 预案执行:时间,人 1 发现问题 软件,硬件,人肉监控 2 定位问题 监控数据,日志 3 解决问题 二 预案演练 1 线上演练 2 压力测试 3 平日积累
  • 20. 招聘广告招聘广告: 1 定制轮子-技术攻关 2种架构师 2 提供大流量,高并发的平台 3 良好的技术氛围 联系方式: 王晓钟 新浪微博 xiaohuook@gmail.com 邮箱:wangxiaozhong@jd.com
  • 21. (本页无文本内容)