- 1. ArchSummit2014全球架构师峰会京东商城交易系统双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. (本页无文本内容)