淘宝技术架构
V3.0 改变
• 开始思考淘宝的本质 • 开始尝试从被动支支撑转换为主
动支支撑
• 从使用用技术开始大大幅过渡到创
造技术
• 服务化、稳定性、降低成本
V3.0 淘宝是什么
WebServer
AppServer
D Server
淘宝是一一个⺴网网站么,⺴网网站的本质是什么?
V3.0 淘宝是什么⺴网网站
淘宝技术架构进化之路
龚银
ABOUT ME
大大家最关心心的问题
• 淘宝的前期技术发展历程 • 淘宝的当前技术体系 • 淘宝下一一代技术体系展望
What is
Architect?
架构, Architect
—— 好的架构是进化出来的,不是设计出来的! —— 不同时期和不同环境有不同的最佳架构! —— 存在即合理,合适的才是最好的!
• 项⺫目目管理工工具 AntX • 引入入搜索引擎
ISearch
V2.1 2004.10 - 2007.1
……
• Weblogic • Weblogic • 抛弃
性能问题频现,成本高高 迁移至至 JBoss
EJB,引起 Spring
Fu2cti32 3 Fu2cti32 2 JB3ss Fu2cti32 JB3ss JB3ss 淘宝MVC JB3ss 淘宝MVC 淘宝MVC Spri2g 淘宝MVC Spri2g Spri2g OR-Mappi2g Spri2g OR-Mappi2g OR-Mappi2g OR-Mappi2g Read/Write
•
淘宝是一一个交易⺴网网站,核心心要素:要素(人人/物/合同)、过程(付款)、交流
•
功能需求:交易服务化
•
淘宝是一一个很大大的交易⺴网网站
CDN Denali集群
系统结构图
DB
页面片 缓存集群
TFS
NAS
Search
Alipay
V2.X时代最大大问题
• 主要业务都在一一个系统里里
Denali
• 打包部署一一次,半小小时,部署失败,半天过去了 • 100多个开发维护同一一个系统,混乱中纠结 • 数据都在一一个数据库中,扩展困难 • 访问量增加,不停加机器,连接池又又不够用用 • 数据量增加,不断升级数据库机器,已到极限 • 预言言帝说:不做任何改变的化,淘宝将于08年6月月挂掉
• 支支持分库的数据框架DBRoutec源自ch-Orac1Orac1-
Orac1Orac1-
dump
• 分布式缓存雏形,基于 • CDN
BDB
S-arch Read/Write N3dN3d…… 2
N3d2
⺴网网络的探索和初建
V2.2 2006.10 - 2007.12
• 从使用用技术开始创造技术
Fu2cti32 4 Fu2cti32 3 Fu2cti32 A4ache A4ache Fu2cti32 1 A4ache 13d_4h44 13d_4h44 A4ache 13d_4h44 4ear DB 4ear DB 13d_4h44 4ear DB SQL Relay SQL Relay 4ear DB SQL Relay SQL Relay
请求的处理过程
CDN 的处理过程
①
LB设备
Squid Server 集群
cache 未命中
③
源站
V2.X 时代
分域名
①
①
Denali 集群
tcp/ip bio
TDBM TFS
Denali 集群
jdbc
Oracle
主站请求处理
①
Denali 集群
Alipay http Search
2000$
• LAMP典型架构 • Mysql
R/ad
复制 S2av/
R/ad/Wr1t/
MySQL Mast/r 复制
R/ad
一一主两从,读写分离
S2av/2
• pearDB数据访问层
V1.1 2004.1 - 2004.5
• 数据膨胀,锁表问题严重MyISAM • 主库大大量读,主库性能下降厉害 • Mysql • 引入入
Sear-1 分布式存储
Ora-3e Ora-3e Ora-3e
Node
Node
Node 2
Node n
Ora-3e
Node 2 Read/Write …… Node Node 2
Node n Node n
V2.X 时代
CDN节点
①
主站
DNS Server(GSLB)
……
• 类⺫目目属性体系 • 分布式存储 TFS • 分布式缓存 Tair • 分布式搜索引擎
-a-1e
Fun-t2on 3 Fun-t2on 2 JBoss Fun-t2on JBoss JBoss B宝MVC JBoss B宝MVC B宝MVC Spr2ng B宝MVC Spr2ng Spr2ng Ibat2s Spr2ng Ibat2s Ibat2s OR-Mapp2ng
淘宝发展历程
V1.0 2003.5 - 2004.1
• 非非典时期,⻢马云住宅 • phpAuction
Fu4ct1o4 Fu4ct1o4 3 Fu4ct1o4 2 Apach/ Fu4ct1o4 Apach/ Apach/ 3od_php4 Apach/ 3od_php4 3od_php4 3od_php4 p/ar DB p/ar DB p/ar DB p/ar DB
迁移到 Oracle SQL Relay 连接池代理服务 RAC & SAN低端存储
• Oracle
Oracle
V1.X时代
• MySQL
撑不住了,换 ORACLE
• 中间件撑不住了怎么办? • 数据存储撑不住了怎么办? • 业务发展太快怎么办?
V2.0 2004.2 - 2005.3
• SQL
Relay 死锁问题严重 Java, 模块逐步替换
• PHP迁移到 • MVC
框架 WebX
Funct4on 4 Funct4on 3 W1blo24c Funct4on 2 W1blo24c Funct4on W1blo24c 淘宝MVC 淘宝MVC W1blo24c EJB 淘宝MVC EJB 淘宝MVC OR-M-pp4n2 OR-M-pp4n2 EJB EJB OR-M-pp4n2 OR-M-pp4n2 Read/Write S1-rc3 Or-cl1 dump Nod1 Nod1 2 …… Nod1 n