天猫后端技术架构优化实践

  • 819 views
Uploaded on

 

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Be the first to comment
No Downloads

Views

Total Views
819
On Slideshare
0
From Embeds
0
Number of Embeds
1

Actions

Shares
Downloads
17
Comments
0
Likes
2

Embeds 0

No embeds

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel
    No notes for slide

Transcript

  • 1. 天猫后端技术架构优化实践 ⼦子房 13年8月31⽇日星期六
  • 2. Agenda 业务简介 系统设计 系统优化及案例 13年8月31⽇日星期六
  • 3. 业务简介 13年8月31⽇日星期六
  • 4. 搭配区 活动区 商品基础信息 单品优惠 商品属性 商品描述 店 铺 导 航 单品库存 单品服务 商品图⽚片 店铺导航 会员信息 13年8月31⽇日星期六
  • 5. “简单”的背后 13年8月31⽇日星期六
  • 6. 挑战 不变的是变化 流量突⻜飞猛进 如何快速响应、落地需求 如何提⾼高⽤用户体验 如何降低系统间耦合 如何控制系统复杂化带来 的开发、维护成本 13年8月31⽇日星期六
  • 7. 系统设计 13年8月31⽇日星期六
  • 8. 系统变迁 系统 DB DB DB web 系统 web 系统 系统 DB web 系统 系统 DB web 系统 系统 DB web 系统 系统 通信中间件 data layer 分布式缓存 DB DB CDN LVS 13年8月31⽇日星期六
  • 9. 系统的⾃自我修养 模型 模块化 接⼝口 编 排 框架 服务化 链路 单元 部署 功能拆分 前后解耦 13年8月31⽇日星期六
  • 10. 详情⼦子系统1 详情⼦子系统2 browser 1 2 3 优惠分组1 优惠分组2 商品系统 旺铺 MIC SIC 库存 物流 服务 ...... 4 browser 交易分组1 交易分组2 1 3 2 5 请求 流程选择 上下文构建 流程处理 结果 13年8月31⽇日星期六
  • 11. 系统优化 13年8月31⽇日星期六
  • 12. 优化概述 度量指标 TPS、RT、请求内存.... ⼀一般性瓶颈观测 CPU(user, sys)、Load IO、MEM 通⽤用⼯工具 jstat, jmap, visual vm, jprofiler 通⽤用的⼿手段 基础设施优化 架构优化 前端优化 后端系统内部优化 硬件 存储 容器 http server web应⽤用 容器 后端应⽤用 JVM JVM 13年8月31⽇日星期六
  • 13. 场景分析 商品详情 交易 优惠 主要功能 前端属性 区块性 计算类型 外部依赖 依赖模式 外部平均RT 内外消耗⽐比 对外调⽤用模式 热点 1.商品基本信息渲染和展⽰示 2.店铺信息展⽰示 3.商品的动态属性查询和展⽰示 1. 商品、卖家、优惠 和服务等信息披露展 ⽰示。 2. 订单创建 1. 优惠资源、规则 的读取和计算 ⾼高 中 低 强 强 ⽆无 I/O,CPU I/O I/O, CPU 20+ 20+ 5+ client+rpc client+rpc rpc 1~10ms 1~10ms 20~200ms 外>内 外>>内 外>>内 不确定 不确定 基本确定 ⾼高 中 ⾼高 13年8月31⽇日星期六
  • 14. 普适规则? 数据读问题 热点问题 外部依赖多 ⻚页⾯面型系统 缓存? 并⾏行计算? 前后端解耦?异步化? 13年8月31⽇日星期六
  • 15. 模型与缓存 13年8月31⽇日星期六
  • 16. 缓存? 读>>写 查询复杂度⼩小 结果组装复杂度⾼高* 从cpu到 ⼤大约需要的时间 寄存器 L2 L3 QPI总线 主存 TAIR DB 约1/4ns 约3ns 约15ns 约20ns 约60-80纳秒 约1~3ms ? Cookie CDN 集中式缓存 MemCached, Redis, TAIR DB cache 13年8月31⽇日星期六
  • 17. 基础策略 动静分离 模型松耦合+⼤大缓存 适度的瘦⾝身 时间 索引模式 序列化问题 ⼀一致性 Batch/Prefix 简化模型⽰示意图 活动 卖家参与 详情 优惠规 则 商品池 1. 活动与卖家参与情况解耦(1 v.s. n) 2. 卖家参与情况与规则解耦 (1 v.s. n) 3. 原始读取顺序 读取卖家参与情况(1次) 读取活动信息(n次) 读取优惠规则(n次) 4. 优化后1次 13年8月31⽇日星期六
  • 18. 关键点 动静分离的问题 缓存失效问题 商品|旺铺 分桶问题 选型 集中式 v.s. 本地 物理机 v.s. 虚拟机 案例--商品详情系统静态化 browser CDN 详情1 Nginx单机Tair 详情1 App IC/UIC/SC 详情2 优惠、库存、物 流、区域销售、套 餐.... 1 2 2’ 3 4 notify admin system CSI动 态填充 13年8月31⽇日星期六
  • 19. 并发与异步化 13年8月31⽇日星期六
  • 20. 并发--降低RT 准备 单元划分 依赖编排 并⾏行粒度 RPC调⽤用级(分|合) 业务单元级 基本注意点 锁 load ⽉⽊木桶效应 IO IO ……IO CS CS … … CS CSIO IO CS CSIO CS CS … … CS CSIO IO CS CSIO 13年8月31⽇日星期六
  • 21. 异步--降低上下⽂文切换 线程 vs 协程 语⾔言⽅方案:scala、erlang 字节码⽅方案:kilim 核⼼心问题 RPC框架的异步⽀支持 IO/NIO 上下⽂文保存和恢复 13年8月31⽇日星期六
  • 22. 编程模式 processor link 并发/异步 DSL maven plugin kilim AOP 案例--交易系统优化 上下⽂文保存 rpc async call mailbox.regrpc callback mailbox.put Task.pause basic processors xxx.flow gen kilim task flow kilim task wrapper kilim weaver aop rpc proxy rpc callback mod kilim pausable inject kilim pausable remove mailbox.get 13年8月31⽇日星期六
  • 23. 案例--优惠系统优化 编程模式 flow + plugin 并发/异步 切割rpc call ⾃自定义事件机制 多阶 可重⼊入事件 评测 复杂场景: tps *3, rt /2 商品 资源分配 资源分配 卖家 卖家 商品 商品 商品 商品 跨店 资源分配 Task rpc async call 上下⽂文构建 Task End rpc call back 读取原始Task 恢复任务 计算 13年8月31⽇日星期六
  • 24. 挑战 并发与锁 数据依赖识别,并⾏行执⾏行单元划分 代理的代理? 调试复杂度的问题 系统整体升级的问题 13年8月31⽇日星期六
  • 25. 依赖优化 缓存前置 Request/Response Timeout 流控 13年8月31⽇日星期六
  • 26. 规范 tracing id pattern 集中式 v.s. 分布式 异步化 log4j 2.x disruptor io buffer 问题 GC ⽇日志存储 13年8月31⽇日星期六
  • 27. ⼩小结 平衡 场景化 组件、服务与链路 数字化 细节是魔⿁鬼 合理利⽤用既有的⼯工具 13年8月31⽇日星期六
  • 28. 谢谢 13年8月31⽇日星期六