28
天猫后端技术架构优化实践 13831星期六

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

Embed Size (px)

Citation preview

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

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

13年8月31⽇日星期六

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

Agenda业务简介系统设计系统优化及案例

13年8月31⽇日星期六

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

业务简介

13年8月31⽇日星期六

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

搭配区

活动区

商品基础信息

单品优惠

商品属性

商品描述

店铺导航

单品库存单品服务

商品图⽚片

店铺导航

会员信息

13年8月31⽇日星期六

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

“简单”的背后

13年8月31⽇日星期六

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

挑战

不变的是变化流量突⻜飞猛进

如何快速响应、落地需求如何提⾼高⽤用户体验如何降低系统间耦合如何控制系统复杂化带来的开发、维护成本

13年8月31⽇日星期六

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

系统设计

13年8月31⽇日星期六

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

系统变迁

系统

DB DB DB

web

系统

web

系统

系统

DB

web

系统

系统

DB

web

系统 系统

DB

web

系统 系统

通信中间件

data layer

分布式缓存

DB DB

CDN

LVS

13年8月31⽇日星期六

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

系统的⾃自我修养

模型模块化接⼝口

编排框架

服务化链路单元

部署功能拆分前后解耦

13年8月31⽇日星期六

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

详情⼦子系统1 详情⼦子系统2

browser

1 2 3

优惠分组1 优惠分组2

商品系统 旺铺

MIC

SIC

库存

物流

服务

......4

browser

交易分组1 交易分组2

1 3

2

5

请求

流程选择

上下文构建

流程处理

结果

13年8月31⽇日星期六

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

系统优化

13年8月31⽇日星期六

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

优化概述度量指标

TPS、RT、请求内存....⼀一般性瓶颈观测

CPU(user, sys)、LoadIO、MEM通⽤用⼯工具

jstat, jmap, visual vm, jprofiler通⽤用的⼿手段基础设施优化架构优化前端优化后端系统内部优化

硬件

存储

容器

http server

web应⽤用

容器

后端应⽤用

JVM

JVM

13年8月31⽇日星期六

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

场景分析商品详情 交易 优惠

主要功能

前端属性区块性计算类型外部依赖依赖模式外部平均RT内外消耗⽐比对外调⽤用模式热点

1.商品基本信息渲染和展⽰示2.店铺信息展⽰示3.商品的动态属性查询和展⽰示

1. 商品、卖家、优惠和服务等信息披露展⽰示。2. 订单创建

1. 优惠资源、规则的读取和计算

⾼高 中 低强 强 ⽆无

I/O,CPU I/O I/O, CPU20+ 20+ 5+

client+rpc client+rpc rpc1~10ms 1~10ms 20~200ms外>内 外>>内 外>>内不确定 不确定 基本确定⾼高 中 ⾼高

13年8月31⽇日星期六

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

普适规则?

数据读问题

热点问题

外部依赖多

⻚页⾯面型系统

缓存?

并⾏行计算?

前后端解耦?异步化?

13年8月31⽇日星期六

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

模型与缓存

13年8月31⽇日星期六

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

缓存?

读>>写查询复杂度⼩小结果组装复杂度⾼高*

从cpu到 ⼤大约需要的时间寄存器

L2L3

QPI总线主存TAIRDB

约1/4ns约3ns约15ns约20ns

约60-80纳秒约1~3ms

?

CookieCDN集中式缓存

MemCached, Redis, TAIRDB cache

13年8月31⽇日星期六

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

基础策略动静分离模型松耦合+⼤大缓存适度的瘦⾝身时间索引模式序列化问题⼀一致性Batch/Prefix

简化模型⽰示意图

活动

卖家参与详情

优惠规则

商品池

1. 活动与卖家参与情况解耦(1 v.s. n)2. 卖家参与情况与规则解耦 (1 v.s. n)3. 原始读取顺序 读取卖家参与情况(1次) 读取活动信息(n次) 读取优惠规则(n次)4. 优化后1次

13年8月31⽇日星期六

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

关键点动静分离的问题缓存失效问题商品|旺铺分桶问题选型集中式 v.s. 本地物理机 v.s. 虚拟机

案例--商品详情系统静态化

browser

CDN

详情1 Nginx单机Tair

详情1 App

IC/UIC/SC

详情2

优惠、库存、物流、区域销售、套

餐....

12

2’

34

notify

admin system

CSI动态填充

13年8月31⽇日星期六

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

并发与异步化

13年8月31⽇日星期六

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

并发--降低RT

准备单元划分依赖编排并⾏行粒度

RPC调⽤用级(分|合)业务单元级基本注意点锁load⽉⽊木桶效应

��� IO� ��� IO� ���� ……�IO� ����

��� CS� CS�

���� ……�

��� CS� CS�IO�

IO�

CS� CS�IO�����

��� CS� CS�

���� ……�

��� CS� CS�IO�

IO�

CS� CS�IO�����

13年8月31⽇日星期六

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

异步--降低上下⽂文切换

线程 vs 协程语⾔言⽅方案:scala、erlang字节码⽅方案:kilim核⼼心问题

RPC框架的异步⽀支持IO/NIO上下⽂文保存和恢复

13年8月31⽇日星期六

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

编程模式processor link并发/异步

DSLmaven pluginkilimAOP

案例--交易系统优化

上下⽂文保存

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⽇日星期六

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

案例--优惠系统优化

编程模式flow + plugin并发/异步切割rpc call⾃自定义事件机制多阶可重⼊入事件

评测复杂场景: tps *3, rt /2

商品

资源分配 资源分配

卖家 卖家

商品 商品 商品 商品

跨店

资源分配

Task

rpc async call

上下⽂文构建

Task End

rpc call back

读取原始Task

恢复任务

计算

13年8月31⽇日星期六

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

挑战并发与锁数据依赖识别,并⾏行执⾏行单元划分代理的代理?调试复杂度的问题系统整体升级的问题

13年8月31⽇日星期六

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

依赖优化缓存前置Request/ResponseTimeout流控

13年8月31⽇日星期六

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

规范tracing idpattern集中式 v.s. 分布式异步化

log4j 2.xdisruptorio buffer问题

GC

⽇日志存储

13年8月31⽇日星期六

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

⼩小结

平衡场景化组件、服务与链路数字化细节是魔⿁鬼合理利⽤用既有的⼯工具

13年8月31⽇日星期六

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

谢谢

13年8月31⽇日星期六