美团到家商品库存系统演进之路

如果无法正常显示,请先停止浏览器的去广告插件。
分享至:
1. 美团到家商品库存系统演进之路 美团交易系统平台
2. 个人介绍 宋彬,美团高级技术专家 负责美团到家商品&库存相关系统的建设 三高系统&平台化建设有一些思考与实践 北京理工大学 美团 同程艺龙 2013 2017
3. 目录 业务特性 & 系统现状 技术调研 & 架构设计 商 品 库 存 防超售 & 一致性保障 高可用 & 异地容灾 平台化的思考与实践 未来规划与展望
4. 商品库存 - 业务特性&系统现状 订单服务 商品管理服务 O2O业务,LBS电商 最终一致性 ① 同步扣减库存 外卖&闪购 ② 异步记录流水 建设 库存管理服务 蜂窝 品类有限 库存有限 + 防超售 设置库存 库存交易服务 同步 扣减库存 扣减库存异常 发送补偿消息 ① 4000W 订单 支撑 ④ 补偿 消息 库存 MySQL 口罩抢购活动 ③ 流水校验处理 库存流水 MySQL ③ ② binlog 4K 峰值TPS 异步 校验 回滚 记录流水 ② 库存异步服务 库存流水记录 库存回滚 流水冲突处理
5. 商品库存 - 问题分析 订单服务 商品管理服务 最终一致性 业务新形态 ① 同步扣减库存 ② 异步记录流水 库存管理服务 设置库存 ③ 流水校验处理 库存交易服务 同步 扣减库存 大促秒杀,常态化 扣减库存异常 发送补偿消息 B2C业务的探索,支持全国售卖 补偿 消息 库存 MySQL binlog 库存流水 MySQL 异步 校验 回滚 记录流水 支撑 困难 系统能力 防超售 -> 最终一致性 单SKU库存扣减TPS=300 库存异步服务 库存流水记录 全城送,品类丰富,库存充足 库存回滚 流水冲突处理
6. 商品库存 - 目标 洪峰流量 业务目标 大促 秒杀 热点爆品 海量库存 准 快 下单快速准确 用户体验丝滑 热点商品,海量库存,防超售 单热点商品,万级TPS,tp999低于10ms 系统目标 稳 多级容灾(异地,同地域多机房,同机房多副本) 省 硬件成本低,研发成本低,运维成本低
7. 商品库存 - 技术调研&选型 典型方案 类型 Node1 原生MySQL AliSQL/MTSQL* 事务 支持 支持 性能 低 高 可用性 中 高(PAXOS/MGR) 指标 特点 高并发场景,锁资源竞争 、锁等待、上下文切换, 导致吞吐量远低于正常水 平 数据库服务端排队 合并热点key更新 减少事务内交互时长RTT 避免组提交等待 MTSQL*: MySQL 美团定制版内核,对标 AliSQL,预计2021年末 全面替换社区版本 MySQL,同时针对库存场景持续优化 consensus Node3 Node2 • 计算存储一体,极致优 化,高性能,高可用 • 研发维护成本高(定制 化方案) • 案例:ebay支付系统 库存扣减 Redis 库存管理 MySQL • • • • 高性能:Redis同步扣减 高可用:AP > CP 事务性:Lua脚本 最终一致 长期演进:MTSQL + 降级方案
8. 商品库存 - 系统架构 服务层 存储层 基础组件 库存查询 库存管理 批量查询 单个查询 库存设置 每日库存 库存规则 Cellar Cellar 从集群 主集群 Cellar Cellar 消息队列 东 MySQL MySQL 库存交易 西 库存扣减 库存恢复 Redis Redis 西 Redis 北 东 双向同步 南 数据传输 MySQL 双向同步 MySQL 一致性保障 北 南 Redis SET路由 定时任务 支撑层 异步服务 缓存异构 流水记录 流水校验 库存迁移 库存校验 库存修复
9. 商品库存 - 演进思路 聚焦单一 核心业务 防超售 核心能力建设 单热 点 高并 发 访问量增长 数据量增长 单元化 稳定性保障 异地 容灾 海量 库存 建设通用 业务能力 业务线变多 复杂度变高 平台化 多业务支撑 质量 好 任意 伸缩 效率 高 成本 低
10. 商品库存 - 防超售 服务约定 订单服务 商家库存管理 PC APP 开放平台 最终 一致性 消单 提单 02 提单异常,异步回滚库存 冲突,回滚 库存管理服务 库存交易服务 前置防重 库存设置 Lua原子操作 01 提交订单,同步扣减库存 流水冲突检测 03 取消订单,异步回滚库存 核心要点 MQ 库存扣减 扣减成功 发送流水 库存流水 redis 库存设置BinLog mysql AOF库存流水 库存流水服务 原子性 Lua脚本操作Redis 一致性 流水校验,最终一致 高性能 Redis同步扣减 异步记录流水 批量 聚合 mysql 10
11. 商品库存 - 一致性保障 正向 逆向 商家库存设置 交易库存扣减 异构 主通道 DTS Cellar 异构 一致性 备通道 保障 MySQL 问题描述 BCP Redis Redis 批量同步 MySQL Cellar 原因分析 解决方案 binlog积压 一致性保障,延时检查&修复 数据传输服务(DTS)故障 双通道冗余 Cellar/Redis库存丢失 库存异构丢失 消息触发,重新加载 MySQL库存脏数据 Redis覆盖MySQL 设置库存,版本号校验 Cellar/Redis库存老旧
12. 商品库存 - 演进思路 聚焦单一 核心业务 防超售 核心能力建设 单热 点 高并 发 访问量增长 数据量增长 单元化 稳定性保障 异地 容灾 海量 库存 建设通用 业务能力 业务线变多 复杂度变高 平台化 多业务支撑 质量 好 任意 伸缩 效率 高 成本 低
13. 商品库存 - 高可用 - 单元化 单量/万 背景 5000 4000 3000 2000 1000 0 随着业务的快速增长, 到家核心系统需要更高的扩展性与容灾能力 时间/年 2017 2018 2019 2020 20个 问题 存储扩展:MySQL从库数量、主库连接数有限,Redis集群规模有限 资源限制:单机房容量限制,跨机房网络延迟与抖动导致稳定性问题 容灾问题:多机房架构,主从切换时间长,应对地区风险高 易扩展:任意伸缩 目标 方案 高可用:异地容灾 单元化(SET化)
14. 商品库存 - 高可用 - 单元化 核心交易场景 流量(用户&商家) 订单 Nginx + HLB 接入层 接入层 接入层 接入层 服务层 服务层 服务层 服务层 存储层 存储层 存储层 存储层 北部SET 西部SET 南部SET 东部SET 库存 核心 存储 Redis 互备容灾 互备容灾 MySQL
15. 商品库存 - 高可用 - 单元化 库存查询(就近部署) 服务层 路由层 同机房 < 同地域 < 跨地域 跨SET 同SET DTS DTS JD 存储层 YP Cellar Cellar 从集群 主集群 Cellar 单机房全量数据 Cellar 库存交易(SET部署) 库存管理(中心部署) ZF 东 MySQL MySQL 西 MQ 东 Redis XR 南 MySQL 西 Redis 北 双向同步 双向同步 DTS Redis MySQL 北 MQ 南 Redis 单SET全量/2数据 秒级自动切换 30秒快速切换 30秒快速切换
16. 商品库存 - 高可用 - Redis容灾 冲突 流水校验 某分片主桶宕机 AOF日志丢失 新主桶数据不一致 库存修正 最终一致 MySQL Redis库存 需扣减库存 Master AOF Slave Redis MySQL库存 状态 老主桶服务 10 1 9 准确 老主桶宕机,AOF日志丢失 9 - 9 准确 新主桶服务,数据不一致 10 2 8 超售 7 准确 库存流水处理服务 计算剩余库存10-2-1=7 双通道扣减日志,库存流水校验,剩余库存修正 主从分片 异步复制 Redis核心问题 Master 解决思路 库存不存在 异步触发事件 库存修复 读取原始库存 Slave 批量去重 某分片完全宕机 库存数据丢失 Redis 最终一致 MySQL 触发库存不存在事件,异步批量修复
17. 商品库存 - 演进思路 聚焦单一 核心业务 防超售 核心能力建设 单热 点 高并 发 访问量增长 数据量增长 单元化 稳定性保障 异地 容灾 海量 库存 建设通用 业务能力 业务线变多 复杂度变高 平台化 多业务支撑 质量 好 任意 伸缩 效率 高 成本 低
18. 商品库存 - 整体架构 库存查询 业务模式 业务能力 部署架构 支撑功能 库存管理 店仓一体 批量查询 单个查询 Cellar Cellar 从集群 主集群 Cellar Cellar 库存缓存 交易库存 店仓库存 组包库存 数据异构 库存交易 区域仓储 库存设置 每日库存 库存规则 东 MySQL MySQL 西 库存扣减 库存回滚 Redis Redis 西 Redis 北 东 双向同步 南 MySQL 双向同步 MySQL 北 南 Redis 版本控制 流水补偿 流水校验 前置防重 库存核销 延时校验 异常重载 一致性保障
19. 商品库存 - 演进思路 聚焦单一 核心业务 防超售 核心能力建设 单热 点 高并 发 访问量增长 数据量增长 单元化 稳定性保障 异地 容灾 海量 库存 建设通用 业务能力 业务线变多 复杂度变高 平台化 多业务支撑 质量 好 任意 伸缩 效率 高 成本 低
20. 商品库存 - 平台化的思考与实践 背景 万物 到家 餐 饮 品类扩充 业务创新 甜 点 商 超 医 药 团好货 鲜 花 母 婴 跑腿帮买 生 鲜 … 其他 方案 实现 方式 小业务复用大业务流程 存储 大业务兼容小业务逻辑 各种if 产研效率低 问题 代码冗余 中间 件 代码 部署 else 回归量大 运维复杂 沟通频繁 多个业务逻辑耦合,交付质量存在极大隐患 质量风险高 提升产研质效 研发 测试 产品 支撑更多业务 外卖 闪购 医药 目标 团好货 创新业务 平台化建设
21. 商品库存 - 平台化的思考与实践 - 业务身份 如何区分不同业务? 引入业务身份 规则 前提 业务身份是什么? 管理业务个性化资产 流程 存储 如何定义业务身份? 正交 + 唯一 品类1 实现 到家业务身份 业务线 品类2 品类3 如:外卖 + 美食
22. 商品库存 - 平台化的思考与实践 - 整体方案 业务层 接入层 外卖 搜索 业务场景 闪购 医药 团好货 营销 广告 推荐 商品列表 商品详情 购物车 订单 提单页 创新业务 平台化管理中心 商家 业务身份 库存管理 服务层 业务配置 业务能力 支撑层 存储层 流程编排 库存查询 库存扣减 库存设置 基于业务身份的存储路由组件 逻辑隔离 存储路由配置 外卖 闪购 团好货 创新业务 MySQL MySQL MySQL MySQL Redis Redis Redis Redis Cellar Cellar Cellar Cellar 存储隔离
23. 基于业务身份的存储路由组件 一次开发 外卖 业务身份SDK 闪购 多方复用 动态路由 统一数据访问接口&注解 服务层 库存查询 库存管理 库存交易 数据源路由 封装公司基础 组件 路由层 业务身份存储路由组件 MySQLMultiClient RedisMultiClient mysql mysql 存储层 redis cellar CellarMultiClient SearchMultiClient cellar redis MafkaMultiClient MultiClient 聚合多业务数据源
24. 商品库存 - 演进思路 聚焦单一 核心业务 防超售 核心能力建设 单热 点 高并 发 访问量增长 数据量增长 单元化 稳定性保障 异地 容灾 海量 库存 建设通用 业务能力 业务线变多 复杂度变高 平台化 多业务支撑 质量 好 任意 伸缩 效率 高 成本 低
25. 商品库存 - 未来规划与展望 业务可隔离 MTSQL 架构 平台 RedisRaft 业务自助式扩展 业务可视化 团队 欢迎优秀的你加入我们! 共建到家交易系统平台,帮助大家吃得更好,生活更好! CODE A BETTER LIFE! EAT BETTER, LIVE BETTER!
26. 招贤纳士,渴望优秀的你加入我们 始终坚持 庖丁解牛般的分析业务需求,构建出恰如其分的系统架构,设计出丝丝入扣的微观代码实现! 让我们心情愉悦的Coding~ 美团交易系统平台 JAVA专家(商品&库存) 工作职责 1、负责商品中心业务的迭代与创新,打造海量商品在B端的高效管理与运营、在C端的高性能检索与浏览交易; 2、负责商品中心的稳定性建设,99.99%是最基本的目标,带领小伙伴完成应用层性能优化、中间件深度实践、底层存储升级; 3、负责商品中心库存服务的持续升级,打造店仓一体、区域仓储等多模式库存体系,具备防超售、防少售、抗秒杀等系统能力; 4、负责商品中心标品体系的建设,满足更多品类(餐饮,商超、药品、鲜花等)商家的高质量快捷上单诉求; 5、深度参与商品公共服务建设,打造业内领先的商品平台,具备业务可隔离、业务可配置、业务可扩展、业务可视化; 6、负责业内探索性技术在商品中心的实验与落地,包括单元化(SET化)、分布式数据库(TiDB)、MTSQL、RedisRaft等。 诱惑力 1、海量数据,可媲美头部电商平台的商品量级 2、大流量、高并发,午高峰QPS 60W+ 3、高吞吐、低延迟,核心接口4个9耗时低于50ms 4、单热点商品库存扣减TPS不低于3万,TP999不高于50ms 5、屈指可数的每日订单均过千万的没有天花板的舞台 招聘:交易系统平台 JAVA 工程师 邮箱:songbin04@meituan.com 更多技术干货 欢迎关注“美团技术团队”
27.
28. 招聘:交易系统平台 JAVA 工程师 邮箱:songbin04@meituan.com 更多技术干货 欢迎关注“美团技术团队”

首页 - Wiki
Copyright © 2011-2024 iteam. Current version is 2.137.1. UTC+08:00, 2024-11-24 03:45
浙ICP备14020137号-1 $访客地图$