淘宝Taobao Arch Qcon 2009
Transcript of 淘宝Taobao Arch Qcon 2009
基于Java构建的淘宝基于Java构建的淘宝
2009.3
淘宝发展历程1200
800
1000
600
800
200
400
xx部手机/天
02003 2004 2005 2006 2007 2008 2009V1.0 V2.0 V2.1
V3.0V2.2
V1.0 2003.5 – 2004.102003年非典时期
马云住宅马云住宅
LAMP基于phpAuction
b / ti /li t/ imember/auction/list/misc
V1.0问题
连接池性能问题
不利于团队开发不利于团队开发
不利于长期持续发展
无技术积累
V2 需求
支撑高速业务发展
支撑团队并行开发支撑团队并行开发
支撑系统的可伸缩
V2.0 2004.5-2005.03三层结构
自主的MVC框架自主的MVC框架
自主的项目管理工具
延伸Ant自主的搜索引擎自主的搜索引擎
php迁移至javamysql迁移至Oracle
V2.0 淘宝MVC框架
基于规则
模块化(car)模块化(car)pipelinep p页面布局
统 的 ll t l支持统一的pull tool支持
支持多模板引擎支持多模板引擎
V2.0 淘宝项目管理工具
类似maven脚本编程语言脚本编程语言
AutoConfigg依赖管理,支持冲突检测
V2.0 搜索引擎
基于内存索引
支持复杂条件 支持统计支持复杂条件,支持统计
非实时
有数据量限制
V2.1 的需求
降低成本
提高性能提高性能
V2.1 2005.03 – 2007.01weblogic迁移至jboss抛弃ejb抛弃ejb支持分库的数据访问框架
session框架重构
基于BDB的缓存基于BDB的缓存
Taobao自己的CDN自 的
V2.1 数据可伸缩
水平
用户用户
商品
交易
垂直垂直
评价
论坛论坛
其他
V2.1 session框架
支持集中式、复制方式、cookie方式
对代码透明对代码透明
V2.2 需求
提高系统性能
降低存储成本降低存储成本
支撑海量数据的搜索
V2.2 2006.10 – 2007.12分布式文件系统
分布式缓存分布式缓存
前端页面缓存
搜索引擎升级
V2.2 淘宝分布式文件系统
类似GFS支持数据紧缩支持数据紧缩
支持数据去重
V2.2 淘宝分布式缓存
基于动态哈希算法
性能超越memcache性能超越memcache
V2.2 搜索引擎升级
水平垂直伸缩
V2 问题
上百人一起维护一个代码近百万行的核心工程工程
多个业务系统中的超过1/3的核心代码重复
数据库连接达到上限
停电停电
V3.0 需求
支撑大型团队,丰富业务的并行开发
提高重用性提高重用性
透明的数据库伸缩
可用性
开放开放
V3.0 2007.12 --数据和应用透明伸缩
淘宝消息系统淘宝消息系统
服务化
产品化
实时搜索
服务/消息
实时搜索
可用性可用性
TOP(淘宝开放平台)
V3.0 数据透明伸缩
垂直(按功能)
交易 用户 商品 店铺 评价 收费 社区交易 用户 商品 店铺 评价 收费 社区
水平(按规则)
商品 交易
透明的数据访问层透明的数据访问层
V3.0 应用透明伸缩
按功能划分
用户 商品 交易 店铺 评价 收费 社区用户 商品 交易 店铺 评价 收费 社区
无状态
应用无需关心集群
集群可调控集群可调控
软件负载均衡
V3.0 消息系统
Topic方式
分组订阅分组订阅
发送事务
送达率:99.99%1亿消息/天1亿消息/天
V3.0 服务化
服务导向框架
按功能形成服务中心按功能形成服务中心
用户 商品 交易 店铺 类目
服务中心200台服务器承载了70亿/天的请求求
V3.0 实时搜索
同步更新索引
补救机制补救机制
V3.0 可用性
同城分流
异地容灾异地容灾
V4.0 ~~