1药网杨林——大型医药电商微服务技术架构

吉悦心

2017/11/14 发布于 技术 分类

移动互联网专场_杨林_1药网_下载版

文字内容
1. 大型医药电商微服务技术架构 -- 杨林 2016.11.25
2. 个人介绍
3. 大型医药电商微服务技术架构 1、微服务拆分 2、事务处理 3、可用性保障 4、Q & A
4. 1-1 微服务拆分 扩展性 伸缩性 可维护性 可用性 高并发 容灾性 安全性 系统要求
5. 1-2 微服务拆分 应用系统  初期:一个应用工程、大家一起开发  特点:适合中小规模团队 开发团队 测试团队 上线团队
6. 1-3 微服务拆分 PC IOS android H5 第三方 平台服务层 IOS服务 Android服务 openapi 前台 业务服务层 业 务 核心交易 层 BI 大 数 基础 中台 据 SOA 产品 SERVICE 交易聚合服务 营销聚合服务 CART 结算 PAY 业务营销 促销 抵用券 SOA:分组/监控/预警 导购聚合服务 前台导 购 首页 类目 商详 cms 评论 GPS PSS GSS 订单 SERVICE OMS GDS GOS PASSPORT SSO Payment GUS 后台 DB 后台 支撑 PRODUCT PRICE 运营 PMS STOCK SO DO 商家 财务 WMS PAYMENT USER 无线 TMS 搜 索 平 台
7. 1-4 微服务拆分 案例:价格服务的架构 详情页 搜索 推荐 CMS 促销 价格业务 后台 Price Service Product DB
8. 1-5 微服务拆分 案例:单个前端应用架构 前端 PC浏览器 H5浏览器 Android APP IOS APP Web层 PC Web页面 Pool WAP页面 Pool 无线API接口 Pool 业务服务层 基础服务层 数据层 Userservice DB 业务service Orderservice Productservice  业务服务层集中业务 Priceservice 相关 service
9. 1-6 微服务拆分 案例:DB拆库拆表,读写分离 用户服 务 产品服 务 订单服 务 订单服 务 订单服 务 分库分表路由 订单服 务 主库 用户 产品 订单0 订单1 订单2 订单3 订单4 订单5 备库 用户 产品 产品 订单0 订单1 订单2 订单3 订单4 订单5
10. 大型医药电商微服务技术架构 1、微服务拆分 2、事务处理 3、可用性保障 4、Q & A
11. 2-1 事务处理 微服务事务如何处理? 本地事务 跨服务事务 服务化后事务不能跨服务,如何处理? 一、拆分出最小的需保证的本地事务; 二、跨服务的:  优先考虑异步写数据;  接口幂等性,调用重试3次;  调用回滚接口,记录日志;  定时任务间隔调用,数据对账,事后 补偿;  报警邮件、短信、及时处理;
12. 2-2 事务处理 案例:生成订单事务处理 提交订单 1 同步调用 库存服 务 失败后,调用回滚接口 积分服 2务 3 同步调用 账户服 务 4 异步调用 抵用券 服务 5 异步调用 同步调用 6 ... 发票服 务 生成订 单等操 作 日志记录 定时任务 Check发票是否生成 转DO流程
13. 2-2 事务处理 案例:库存防超卖 库存服务 线程一 线程二 获取库 存量 剩余1个 剩余1个 获取库 存量 判断是 否足够 更新库 存 DB (⊙o⊙)… 更新 更新 判断是 否足够 更新库 存 解决方式:  Update 库存表 set 当前库存=当前库存-扣减库存 Where 当前库存-扣减库存>0  乐观锁 Select Version,当前库存 from 库存表 where id = * 。。。 Update 库存表 set 当前库存=新的库存 where version= * 。。。  memcached 原子性操作 CAS模式
14. 大型医药电商微服务技术架构 1、微服务拆分 2、事务处理 3、可用性保障 4、Q & A
15. 3-1 可用性保障-泳道隔离 www.xxx.com Web 应用 业务服务 m.xxx.com Web 应用 业务服务 基础服务分组 tuan.xxx.com Web 应用 业务服务
16. 3-2 可用性保障-优雅降级 案例:降级,保证关键路径可用 详情页 购物车 支付 售后服务 √商品展示 S1 √价格展示 ×积分展示 S2 ×促销展示 ×智能推荐 S3 ×促销广告 × 。。。 √商品价格展示 √促销规则计算 ×积分业务 ×合约机业务 ×保险业务 × 。。。 √订单编号价格 √支付网关 ×订单商品信息 ×支付活动信息 × 。。。 √订单基本信息查询 √取消订单 ×退换货 ×评论商品 ×资产查询 × 。。。
17. 3-3 可用性保障-流量应对 流量较大,引起服务负载高、DB负载高、如何应对? 降流 • 业务场景分步操作 • 缓存、排队缓解流 量 • 多IDC环境分流 流量应对策略 限流 • 前置机限流 • 业务模块限流 • 区域、用户ID限流 扩容:加机器、拆借机器、云服务器
18. 3-4 可用性保障-流量应对 案例:业务场景分步操作,提升单次操作并发性能,流量压力分散 结算页 地址信息 支付方式 抵用券信息 积分信息 免邮权益 实名认证 发票 拆单 。。。 订单Service 缓存
19. 3-5 可用性保障-流量应对 案例:多IDC缓解流量 IDC_1 service service service service service service service service IDC_2 service service service service service service service service
20. 3-6 可用性保障-超时设置 案例:服务超时设置 前端Web页面 业务service服务 Timeout=100ms? 基础service 服务 基础service 服务 外部远程服务 基础service 服务
21. 3-7 可用性保障-监控  网络流量监控  服务器性能监控  业务指标监控  错误日志量监控  服务调用量监控  服务成功率监控  服务响应时间监控
22. 大型医药电商微服务技术架构 1、微服务拆分 2、事务处理 3、可用性保障 4、Q & A
23. 大型医药电商微服务技术架构 Thank You!