美团外卖系统架构演进与系统稳定性经验谈_美团外卖

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
美团外卖系统 架构演进与系统稳定性经验谈
目录
ቤተ መጻሕፍቲ ባይዱ
• • • • •
个人简介 美团外卖业务发展历程 技术体系架构演进介绍 外卖业务稳定性的挑战 系统稳定性的处理原则
个人简介
北纬通信
移动增值服务
新美大
创新业务探索 美团外卖架构组
2006.7~2011.2
2011.3~2013.5
2013.5~
网易
网易视频库 网易应用 网易新闻
做好对自身的保护,对依赖的熔断。
SOP 保平安。
每一步均严谨可信赖,危机时不慌、不乱、不遗不漏。 工具化,自动化。
你所担心的一定会发生,可能马上发生。
例行巡检,DB,调用链。
离线任务
Databus Elasticsearch 分布式调度 Horae 一主多从 Atlas 降级
Crontab 一主 一从 基本功能 一主多从 LVS 分流 限流
quartz
DB
基础服务
目录
• • • • •
个人简介 美团外卖业务发展历程 技术体系架构演进介绍 外卖业务稳定性的挑战 系统稳定性的处理原则
外卖业务稳定性的挑战
业务特点:高峰集中在中午、晚上饭点,爆发快 系统挑战:高并发,一旦发生故障损失较大
外卖业务稳定性的挑战
业务特点:服务链条长 系统挑战:依赖复杂
用户浏览 下单 支付 商家接单 骑手配送中 已送达 用户评价 结算
外卖业务稳定性的挑战
业务特点:发展快 技术挑战:开发迭代快
发版频繁
频 道
定位
系统稳定性的处理原则
日常运行 >>全链路在线压测 线上引流压测
Nginx分组 ThriftRPC 分组 摘掉机器
Nginx WEB 第三 方服 务 Mock
全链路压测
读流量回放 写事务模拟 流量染色 异步阶梯加压 告警自动终止
流量录制
KV
MQ
DB
Thrift RPC 原始 流量 事务 模拟 染 色 异步 阶梯 加压 监控系统
事故处理
及时止损 保护用户体验 99.99% 力保关键路径
全链路在线压测
事前预警
性能大盘 业务大盘 健康分析
事后总结
根本原因分析 影响损失核算 重构系统
系统稳定性的处理原则
日常运行 >>稳定性架构设计
大系统小做
服务专一性 独立的功能拆分为独立的服务
WEB MQ
API JOB
WEB
API
MessageCenter
Task
依赖稳定性原则
只依赖稳定的服务 将易变的部分拆分 超时中断
读 写
Query
Manage
保障用户体验的容错设计
异常情况下客户端的呈现 客户端配合限流 客户端配合降级
失败! 服务器异常! null 别看了,啥也没
抱歉,您选的商 家运力不足,请 选择其他商家 下单。
系统稳定性的处理原则
• • • • • •
新业务上线 SOP 线上发布SOP 线上灰度SOP • 数据库线上操 • 作SOP 线上容量调整 SOP 验证业务效果
• • 业务指标监控 系统监控 Dashboard

第一时间想上 级反馈 及时周知业务 方:问题,影 响范围,解决 方案,预计恢 复时间 线上服务降级 SOP
系统稳定性的处理原则
项目开发
分支管理 代码交叉 Review 代码静态检查 代码规范 日志规范 引入第三方工 具、JAR包SOP 依赖外部服务 SOP 数据库迁移/ 拆分SOP
测试
发布上线
监控报警
故障处理
• • • • •
测试环境使用 规范 RD完成冒烟测 试 回归关键路径 及主要版本 项目提测流程 规范 线上压测流程
2013/11
2014/11
2015/05
2015/12
2016/05
?
目录
• • • • •
个人简介 美团外卖业务发展历程 技术体系架构演进介绍 外卖业务稳定性的挑战 系统稳定性的处理原则
技术体系架构演进介绍
业务起步:MVP阶段
美团外卖APP 验证需求 寻找产品和需求的切合点 电话点餐->网络点餐 移动后台 WEB后台 美团外卖WEB
损失核算
损失的订单
10:34 服务恢复
系统&流程改进 系统改进 流程改进 开发红线
Incident Reviews - Ask the key questions: • What went wrong? • How could we have detected it sooner? • How could we have prevented it? • How can we prevent this class of problem in the future? • How can we improve our behavior for next time?
日常运行 >>例行稳定性巡检 静态梳理
按场景Review 关键链路调用放大情况梳理 降低“高并发”,假高并发场景
banner 定 位
专项梳理
DB健康Reivew,大表,慢查询 读写QPS,出轨,绿帽子 降级方案演练
API
用户
Rank
POI
指标巡检
性能大盘:不要放过尖刺 业务大盘:定心丸 报错大盘:定位好帮手
API
MTThrift
订单
MQ
Atlas DB
技术架构:3.0
系统级容错 服务化重构 中间件 分库分表
美团App
Open
商品
KV Databus
点评App 外卖商家
Web
商家
ES 异构 DB
...
性能监控
统一配置中心
MHA
技术体系架构演进介绍
问题
系统架构
耦合 相互影响 容错差
目录
• • • • •
个人简介 美团外卖业务发展历程 技术体系架构演进介绍 外卖业务稳定性的挑战 系统稳定性的处理原则
美团外卖业务发展历程
扩展中
扩展中
外卖
配送
美团外卖业务发展历程
供给侧改革 1000w
日交易额过亿 新LOGO 400w 美团专送 全国启动 在线支付 APP占90% WEB上线 业务MVP 200w 100w 300w
将流程自动化进行到底。
1
2
3
4 影响预估
对下游的影响评估
5 回滚措施
回滚的版本号
基本信息
发布内容 发布者 发布时间
发布前验证
关键业务流程测试 新功能测试 SQL Review 代码Review
发布步骤
多系统协同步骤
对上游的影响评估
自身负载变化评估
回滚步骤
6 灰度策略
按城市 按功能 按百分比
7
8
发布后验证
压测目标
排查性能瓶颈,上探系统容量,验证降级机制 验证报警响应机制 & 指导设定警戒行动线
系统稳定性的处理原则
事前预警
性能大盘
CPU Idle DB读、写QPS TP90 响应时间 超时率
log API flume
Service
log
flume Kafka storm HBase
技术架构:1.0
快速开发功能 快速调整流程 快速发布上线 订单列表
dbwaimai
技术体系架构演进介绍
业务起步:规模化
寻找规模化的业务产品形态 提高运营效率
App
I版
用户业务系统
Web
PC
App
商家业务系统
打印机
dbwaimai master/slave
技术架构:2.0
快速开发多个业务系统 复用工具库Util:http 复用业务库
合同
运营业务系统 审核 上单 MQ
公共服务系统 订单
商家
技术体系架构演进介绍
业务增长
校园市场全国开展 白领市场开拓 美团专送启动 平台活动增加 用户激增 订单激增
用户层 接口层 Native H5 外卖App
应用层 服务层 基础层 中间件
数据层 访问层 存储层
Nginx 灰度
引入bug,稳定性风险
项目周期短
架构优化排不上期 技术欠债
监控难度大
指标覆盖全 规则变化快
目录
• • • • •
个人简介 美团外卖业务发展历程 技术体系架构演进介绍 外卖业务稳定性的挑战 系统稳定性的处理原则
系统稳定性的处理原则
99.99%
系统可用性 订单可用性
系统稳定性的处理原则
日常运行
稳定性架构设计 例行梳理和巡检
多逻辑耦合 直连DB Redis 主从 RabbitMQ 外卖大集群 DB join like
服务化SOA MTThrift Redis Cluster 订单集群 其他集群 DB 异构索 引表
服务级容灾
Cache
共用KV 延迟队列 重试队列
专用KV
MQ
高级查询
演进之路
服务化 中间件 KV 数据总线 异步化
系统稳定性的处理原则
力保关键路径
支付平台 门店商品中心 门店运营/容器 管理 风控策略 多种接单方式
订单中心
活动计算引擎
APP 打印机
PC
用户
附近商家
进店
下单
推单
接单
派单
配送
RANK 线上营销
个性化推荐 广告系统 基础数据服务
骑手调度中心 GIS路径规划 调度引擎
配送实时 跟踪系统 骑手服务 策略引擎
搜索引擎 行为数据收集 实时数据收集平台 离线/实时数据计算 挖掘平台
特征抽取与机器学习 模型训练
商业分析 /运营/BI
系统稳定性的处理原则
预案建设 开启 规则引擎 商家列表将按照默认排序 操作 审计 A动作
性能是功能的一部分
上下游的超时约定。
预案A
稳定是功能的一部分
容错处理:超时,幂等,重试。
C动作 B动作
监控 告警
用户体验是一个完整的过程
用户端,商家端的体验保障。
统一配置中心 应用
系统稳定性的处理原则
系统稳定性的处理原则
稳定性的护航者:SOP。 每一步操作都是经过认真思考的。
需求管理
• • • • • • Task追踪 大功能设计 Review 重大技术方案 变更Review 上下游依赖变 化Review • • • • • •
业务监控
KV
log
flume 下单,各种信息,ip
业务大盘 脚印系统
MQ log flume
支付 推送
健康分析
指标变化趋势
系统稳定性的处理原则
事故处理 及时止损
回滚! 分流 启动降级预案 限流
APP 客户端启动限流
流控API:jar 接收请求
保护用户体验
客户端配合降级
日志,报错数 性能指标 关键流程回归
9 发布总结
可以改进的点 casestudy
10 完成
效果分析
降级方案
降级方案1 降级方案2 。。。
新功能测试
系统稳定性的处理原则
总结
灰度!灰度!灰度!
发版窗口,晚高峰前发。.
慢查询往往闯大祸。
no join,SQL Review,慢查询巡检。
防御式编程,不要相信任何人和服务。
应 用 请求令牌 策 略
生 成 K E Y 日志
获取令牌 添加令牌 本地令牌 监控 降级 管理 熔 断 KV
处理请求
力保关键路径
非关键路径模块降级
拒绝请求
统一配置管理
系统稳定性的处理原则
事故总结 根本原因分析
5whys 10:00 收到DB CPU 高的报警 10:20 收到服务A接口超时报警 10:23 DBA定位分析 10:25 xx同学回滚服务
相关文档
最新文档