05 猫眼选座交易系统高可用架构实践

Razor

2019/07/04 发布于 技术 分类

安卓绿色联盟 

文字内容
1. 猫眼选座交易易系统⾼高可⽤用架构实践
2. 个⼈人简介 * 唐超,猫眼技术专家 * 14年年8⽉月加⼊入猫眼电影,参与猫眼选座业务的后端 研发。 * 亲历猫眼选座业务的快速增⻓长,参与和带领了了后 端技术架构的重构升级
3. ⽬目录 01 选座交易易系统介绍 02 ⾼高可⽤用架构经验 03 ⾼高可⽤用架构实战
4. 1 选座交易易系统介绍
5. 什什么是选座交易易 体验 差!
6. 什什么是选座交易易 ⾼高效的垂直电商!流畅的应⽤用体验!
7. 什什么是选座交易易 多样的优惠!便便捷的⽀支付!
8. 什什么是选座交易易 在线查看订单! 影院现场取票! 线上线下闭环!
9. ⽤用户,影院,猫眼关系 结算 影院 猫眼 共赢 观影 体验 ⽤户
10. 当前技术架构
11. 问题和挑战 电商系统,节假⽇峰值⽐平时⾼⼗倍 不可⽤,公司损失交易额,⽤户⽆法购票 挑战: ⾼高可⽤用!
12. 2 ⾼高可⽤用架构经验
13. 什什么是可⽤用性 业务衡量量 可⽤性 = ⽤户不受系统故障影响,完成核⼼业务流程的⽐例。 业务⽬目标 保障核⼼业务流程通畅可⽤。在最极端的情况下也要通畅可⽤。
14. 什什么是可⽤用性 技术衡量量 MTBF = 平均故障间隔时间 MTTR = 平均故障恢复时间 可⽤性 = MTBF / (MTBF + MTTR) 技术⽬目标 提⾼ MTBF,降低 MTTR
15. 设计原则 Murphy`s law: Anything that can go wrong will go wrong; SO, ⾼高可⽤用架构设计就是⾯面向故障的架构设计
16. 设计原则 冗余原则 单点故障 提⾼ MTBF 隔离原则 池⻥鱼故障 提⾼ MTBF 监控原则 盲区故障 降低 MTTR
17. 冗余原则-解决单点故障 全链路路筛查,线上服务杜绝单点 基础运维 同城三机房,BGP接⼊。专线互联。 服务应⽤ ⽆状态服务,三机房对等部署,⽀持极速拓展 分布式任务调度,配置中⼼,⽀持⽆损拓展 数据中间件 缓存中间件,数据分⽚,⼀主多从,三机房部署 数据库中间件,⼀主多从,三机房部署 消息中间件,Broker三机房部署
18. 隔离原则-解决池⻥鱼故障 服务拆分,资源独享 拆分对象:核⼼链路的核⼼服务 拆分作⽤:核⼼服务不因其他服务过度使⽤资源导致性能或可⽤性受到影响
19. 隔离原则 柔性可⽤用-降级 RPC客户端 RPC服务端 降级 降级对象:客户端对服务端的RPC⽅法调⽤ 降级⽅法:使⽤统⼀降级平台操作 降级场景:⾮关键服务RPC服务端故障,⽆法正常提供服务 降级作⽤:保障业务核⼼链路功能可⽤,隔离有故障的服务
20. 隔离原则 柔性可⽤用-降级 只要有影院信息,场次信息,⽤户就可以 继续购票⾏为,其他服务都可以降级。
21. 隔离原则-降级 降级通知示例例 总结 降级,保护核⼼流程 ⼀键操作,分钟级完成 实时⽣效,秒级下发
22. 隔离原则 柔性可⽤用-限流 APP客户端 应⽤服务端 RPC客户端 限流 RPC服务端 限流 限流对象:APP客户端发起的请求, RPC客户端发起的请求 限流⽅法:在流量控制平台设置限流规则和⺫标,线上⾃动⽣效 限流场景:核⼼服务故障,导致⽤户疯狂重试;服务端故障,导致调⽤失败 限流作⽤:故障期间保护核⼼服务,避免雪崩发⽣,隔离⽆效流量。
23. 隔离原则 柔性可⽤用-限流 限流期间,客户端限制⽤户发起请 求的频次,其中间隔时间,⽂案等 参数可配置 流量数据使⽤ 收集-分析-决策的模型, 规则抽象可配置,决策结果实时下 发⽣效 避免⽤户重试流量对系统的冲击
24. 隔离原则-限流 流量量平台规则示例例
25. 监控原则 分层监控,追根溯源 客户端,端到端监控,端请求成功率,劫持监控 基础运维,⺴络链路监控,专线链路监控 应⽤层,JVM监控,业务监控,接⼝成功率,接⼝响应时间监控 VM层,CPU监控,内存监控,磁盘监控,句柄监控 ⺴络层,⺴卡流量监控,TCP队列监控,TCP链接监控
26. 监控内容
27. 监控内容
28. 监控原则 天⽹网恢恢,迅速定位根因,避免报警洪⽔水
29. 3 ⾼高可⽤用架构实战
30. 背景 背景:2018年春节档期 数据: 中国影史单⽇最⾼票房 选座交易系统单⽇最⾼浏览量,最⾼出票量
31. 实战 容量量管理理 服务稳定 01 • 业务数据预估 • 全链路路压测 • 技术指标预估 • 故障演练 • 预估效果优化 • 柔性可⽤用系统 质量量运营 • 规范建设 • 故障处理理预案 03 02
32. 容量量管理理 ⽬目标 * 准确预估出线上各系统在业务⾼高峰期间需要承担的流量量压⼒力力,作为 各系统准备容量量和性能优化的基准数据。 * 彻底杜绝因容量量准备不不⾜足⽽而造成的线上严重故障。 模型
33. 容量量管理理 措施 应⽤扩展,增加应⽤服务器部署;提前采购,规划位置 硬件升级,数据库服务器升级SSD硬盘,增加服务器内存 隔离升级,核⼼数据分库分表,缓存增加分⽚
34. 服务稳定 ⽬目标 * 保障线上核⼼心服务稳定可⽤用。 * 采⽤用服务稳定性建设⽅方案,从 全链路路压测,故障演习,两个 ⽅方⾯面保障线上服务的绝对稳定 和可⽤用。 系统建设 全链路路压测 故障演习 • 提前发现潜在业务异常与 • 主动发现在极端场景下系 性能瓶颈。 • 模拟贴近真实业务压⼒力力, 有效暴暴露露系统⻛风险。 • 对系统容量量做出有效规划。 统潜在的问题,如ddos攻 击,⽤用户流量量陡升。 • 在故障模拟中,验证各项 线上故障预案可执⾏行行,可 切实解决线上问题
35. 服务稳定-全链路路压测 压测施压⽅方案 取真实⽤户数据,模拟⽤户真实⾏为 内⺴施压,聚焦服务端压⼒ 使⽤ quake 平台执⾏压测 使⽤猫眼压测平台⽣成报告
36. 服务稳定-全链路路压测 写压测流量量和数据⽅方案 流量染⾊,标记压测流浪,数据染⾊,标 记压测数据。 全链路中间件⽀持,传递压测标记。 异步线程池改造。 压测数据隔离,数据层⽀持压测数据写⼊ 影⼦表,压测不影响线上数据。
37. 质量量运营 预案管理理 关注 -> 整理理 -> 标准化 通过故障演练,沉淀故障处理预案 定义标准动作,整理出SOP 线下到线上,管理SOP,线上 集成⼀键执⾏SOP
38. Q&A