Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

淘宝网的架构演进

2,875 views

Published on

Published in: Technology
  • Be the first to comment

淘宝网的架构演进

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

×