淘宝网的架构演进
合集下载
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
Search 分布式存储
DB DB
Messaging
JBoss MVC Spring iBatis Remoting JBoss MVC Spring iBatis
DAL
运 行 状 况 监 测 和 报 警 系 统
Node1
Node2
Noden
Read/Write …… Node1 Node2 Noden
Tolerance of network Partition
Basically Availble
Soft-state Eventual Consistency
数据库减负
数据库能做的事
–存数据 –单条查询 –多表关联查询 –大量数据实时在线分析 –通过存储过程,函数来处理业务
简化方案
WebX介绍
Apache Turbine
–Servlet-based –MVC Pattern –Velocity/JSP –Turbine Services(Upload/Security) –Pipeline/Valve WebWork Spring
页面驱动开发
约定优于配置
发展阶段
备份 隔离 集群 分割 异步 去小型机去Oracle
拆分阶段
理论依据
–虚拟化 –CAP/BASE 基础设施 –去Oracle –Notify –HSF
CAP/BASE
ACID(atomicity/consistency/isolation/durability) Consistency Availability
Notify介绍
消息中间件
可靠,保证消息不丢失 BASE风格的分布式事务 异步调用,松散耦合
HSF介绍
高性能服务框架
标准Service的RPC –Service定义,OSGi –协议 –TCP/IP, Mina –Webservice, Xfire –序列化, Hessian(Protocol Buffers) –调用方式,同步/异步/callback/可靠异步 软负载 不增加中间节点迁 –起步阶段
–发展阶段
–拆分阶段
新的挑战
开发语言
Java
PHP
C/C++ Groovy C# .Net
Ruby on Rails
起步阶段
2003.5 -- 2004.1
–Linux Apache MySQL PHP(LAMP) –MySQL读写分离(1+2) 2004.1 -- 2004.5 –MySQL --> Oracle 2004 .2 -- 2005.3 –迁移至Java –Weblogic+EJB –WebX框架 –iSearch
2004.10 -- 2007.1
–建立CDN –迁移至JBoss –抛弃EJB引入Spring –分库的数据访问层 –基于Berkeley DB的缓存 2006.10 -- 2007.12 –分布式存储TFS –分布式缓存Tair
TFS介绍
分布式文件系统
海量非结构化数据 HA架构和平滑扩容 针对小文件,可扩展、高可用、高性能
Node1
Noden
DB DB
新的挑战
可用性指标
–同城分流 –异地容灾 –负载均衡 –失效转移 –路由调整 –流量分配 –服务降级
多数据中心
–跨IDC的同步和访问
提升性能 降低成本 容量规划 前端优化
Questions ? Thank You!
Tair介绍
分布式 key/value 存储引擎(持久化/非持久化)
持久化的 tair 将数据存放于磁盘 非持久化 tair是一个分布式缓存 容量和命中率
Apache Apache Apache JBoss Apache JBoss JBoss MVC JBoss MVC MVC Spring MVC Spring Spring Ibatis Spring OR-Mapping OR-Mapping OR-Mapping
cache
Search 分布式存储
Oracle Oracle
Node1 Node2
Node2 Read/Write …… Node2
Noden Noden
Node1
Noden
Oracle
Oracle
Node1
互联网应用的需求
高稳定性
–数据安全 –高可用性 高容量高性能 –并发处理能力 –高存储容量 –低响应时间 低成本 –硬件 可扩展
开源技术
Nginx
Lucene Hadoop –MapReduce –ZooKeeper
CDN Apache Apache Nginx Lucene Hadoop Remoting ZooKeeper Core BS Center Base BS Center cache Page cache
–NoSQL –搜索引擎 –数据仓库 –应用服务器计算代替DB计算
精简后数据库需要做的事
–存数据 –单条查询
分库分表/读写分离
垂直分库:按功能模块拆分,将不同业务对应的表放到不同的数据库里, 多个库之间的表结构不同 水平分库:将同一个表的数据分块保存到不同的数据库中,多个库之间的 表结构相同 存在的问题 –所有DB操作必须提供分库线索 –不能执行跨库的关联查询 –不能保证数据的一致/完整性 分表 读写分离(binlog) 数据访问层 –负载均衡策略 –库和表的路由功能 –集群节点可用性探测 –对应用开发人员透明 –自动实现读写语句分发
DB DB
Messaging
JBoss MVC Spring iBatis Remoting JBoss MVC Spring iBatis
DAL
运 行 状 况 监 测 和 报 警 系 统
Node1
Node2
Noden
Read/Write …… Node1 Node2 Noden
Tolerance of network Partition
Basically Availble
Soft-state Eventual Consistency
数据库减负
数据库能做的事
–存数据 –单条查询 –多表关联查询 –大量数据实时在线分析 –通过存储过程,函数来处理业务
简化方案
WebX介绍
Apache Turbine
–Servlet-based –MVC Pattern –Velocity/JSP –Turbine Services(Upload/Security) –Pipeline/Valve WebWork Spring
页面驱动开发
约定优于配置
发展阶段
备份 隔离 集群 分割 异步 去小型机去Oracle
拆分阶段
理论依据
–虚拟化 –CAP/BASE 基础设施 –去Oracle –Notify –HSF
CAP/BASE
ACID(atomicity/consistency/isolation/durability) Consistency Availability
Notify介绍
消息中间件
可靠,保证消息不丢失 BASE风格的分布式事务 异步调用,松散耦合
HSF介绍
高性能服务框架
标准Service的RPC –Service定义,OSGi –协议 –TCP/IP, Mina –Webservice, Xfire –序列化, Hessian(Protocol Buffers) –调用方式,同步/异步/callback/可靠异步 软负载 不增加中间节点迁 –起步阶段
–发展阶段
–拆分阶段
新的挑战
开发语言
Java
PHP
C/C++ Groovy C# .Net
Ruby on Rails
起步阶段
2003.5 -- 2004.1
–Linux Apache MySQL PHP(LAMP) –MySQL读写分离(1+2) 2004.1 -- 2004.5 –MySQL --> Oracle 2004 .2 -- 2005.3 –迁移至Java –Weblogic+EJB –WebX框架 –iSearch
2004.10 -- 2007.1
–建立CDN –迁移至JBoss –抛弃EJB引入Spring –分库的数据访问层 –基于Berkeley DB的缓存 2006.10 -- 2007.12 –分布式存储TFS –分布式缓存Tair
TFS介绍
分布式文件系统
海量非结构化数据 HA架构和平滑扩容 针对小文件,可扩展、高可用、高性能
Node1
Noden
DB DB
新的挑战
可用性指标
–同城分流 –异地容灾 –负载均衡 –失效转移 –路由调整 –流量分配 –服务降级
多数据中心
–跨IDC的同步和访问
提升性能 降低成本 容量规划 前端优化
Questions ? Thank You!
Tair介绍
分布式 key/value 存储引擎(持久化/非持久化)
持久化的 tair 将数据存放于磁盘 非持久化 tair是一个分布式缓存 容量和命中率
Apache Apache Apache JBoss Apache JBoss JBoss MVC JBoss MVC MVC Spring MVC Spring Spring Ibatis Spring OR-Mapping OR-Mapping OR-Mapping
cache
Search 分布式存储
Oracle Oracle
Node1 Node2
Node2 Read/Write …… Node2
Noden Noden
Node1
Noden
Oracle
Oracle
Node1
互联网应用的需求
高稳定性
–数据安全 –高可用性 高容量高性能 –并发处理能力 –高存储容量 –低响应时间 低成本 –硬件 可扩展
开源技术
Nginx
Lucene Hadoop –MapReduce –ZooKeeper
CDN Apache Apache Nginx Lucene Hadoop Remoting ZooKeeper Core BS Center Base BS Center cache Page cache
–NoSQL –搜索引擎 –数据仓库 –应用服务器计算代替DB计算
精简后数据库需要做的事
–存数据 –单条查询
分库分表/读写分离
垂直分库:按功能模块拆分,将不同业务对应的表放到不同的数据库里, 多个库之间的表结构不同 水平分库:将同一个表的数据分块保存到不同的数据库中,多个库之间的 表结构相同 存在的问题 –所有DB操作必须提供分库线索 –不能执行跨库的关联查询 –不能保证数据的一致/完整性 分表 读写分离(binlog) 数据访问层 –负载均衡策略 –库和表的路由功能 –集群节点可用性探测 –对应用开发人员透明 –自动实现读写语句分发