淘宝Taobao Arch Qcon 2009

Post on 25-May-2015

1.039 views 2 download

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 ~~