淘宝网技术架构


淘宝网技术架构 潘辉志 2012.4.5 议程 o 淘宝整体网络架构 o 淘宝基础设施规模与挑战 o 事例:图片存储与CDN系统 o 淘宝软件基础设施项目 o 淘宝高速服务框架(HSF) 淘宝整体网络架构 UIC 用户中心(User Interface Center) 提供所有用户信息相关的读写服务,如基本信息, 扩展信息,社区信息,买卖家信用等级等等。淘 宝现在有两类卖家B和C,这是通过在用户身上打 不同的标签实现的,淘宝的TOP平台已经开放了大 部分的UIC接口 IC 商品中心(Item Center) 提供所有商品信息的读写服务,比如新发商品, 修改商品,删除商品,前后台读取商品相关信息 等等,IC是淘宝比较核心的服务模块,有专门的 产品线负责这块内容,IC相关接口在TOP中占的比 重也比较大 SC 店铺中心(Shop Center) 提供店铺相关信息的读写操作。如:开通店铺,SC 店铺中心(Shop Center) 提供店铺相关信息的读写操作。如:开通店铺, 店铺首页,及detail页面店铺相关信息获取,如 店内类目,主营,店铺名称,店铺级别:如普通, 旺铺,拓展版,旗舰版等等。装修相关的业务是 SC中占比重较大的一块,现在慢慢的独立为一个 新的服务化中心DC(design center),很多的前台 应用已经通过直接使用DC提供的服务化接口直接 去装修相关的信息 TC 交易中心(Trade Center) 提供从创建交易到确认收货的正向交易流程服务, 也提供从申请退款到退款完成的反向交易流程服 务 PC 促销中心(Promotion Center) 提供促销产品的订购,续费,查询,使用相关的 服务化接口,如:订购和使用旺铺,满就送,限 时秒杀,相册,店铺统计工具等等 RC 评价中心(Rate center) 提供评价相关信息的读写服务 Forest 淘宝类目体系 提供淘宝前后台类目的读写操作,以及前后台类 目的关联操作。 议程 o 淘宝整体网络架构 o 淘宝基础设施规模与挑战 o 事例:图片存储与CDN系统 o 淘宝软件基础设施项目 o 淘宝高速服务框架(HSF) 基础设施的规模与增长 o Alexa全球排名为13,生产服务器约为20000台 o 系统需要足够的容量随时应对突发的流量增长 o 淘宝的下一个十年:大淘宝 –提供电子商务基础设施服务–提供电子商务基础设施服务 –打造电子商务生态系统 o 增长 –业务每年以超过100%的速度增长 –可预见未来十年有百倍的规模变化 o 技术是电子商务基础设施服务的核心竞争力 软件基础设施的挑战 议程 o 淘宝整体网络架构 o 淘宝基础设施规模与挑战 o 事例:图片存储与CDN系统 o 淘宝软件基础设施项目 o 淘宝高速服务框架(HSF) 图片存储与CDN系统全貌 商用产品无法满足需求 o 系统需求 淘宝的影响越来越大,数据的安全也更加重要 数据存储量以每年二倍的速度增长(即原来的三倍) o 商用存储产品 对小文件的存储无法优化对小文件的存储无法优化 文件数量大,网络存储设备无法支撑 连接的服务器越来越多,网络连接数已经到达了网 络存储设备的极限 扩容成本高,10T的存储容量需要几百万 单点,容灾和安全性无法得到很好的保证 TFS1.0 o 2007年6月 淘宝自主开发的分布式的文件系统 TFS(TaobaoFile System)1.0上线运行 主要解决海量小文件的分布式存储 集群规模:200台PC Server(146G*6 SAS 15K 集群规模:200台PC Server(146G*6 SAS 15K Raid5) 文件数量: 亿级别 系统部署存储容量: 140 TB 实际使用存储容量: 50 TB 单台支持随机IOPS200+,流量3MBps TFS1.0的特性 o 集群由一对Name Server和多台Data Server构成 o Data Server运行在挂很多硬盘的Linux主机上 o 以block文件的形式存放数据文件(一般64M一个block) o 文件名内置元数据信息,用户自己保存TFS文件名与实际文件 的对照关系–使得元数据量特别小 o 如T2auNFXXBaXXXXXXXX_!!140680281.jpg,名字中含 有逻辑的block_no和object_no等 o block存多份保证数据安全 o 利用ext3文件系统存放数据文件 o 磁盘raid5做数据冗余 TFS1.3 o 2009年6月 TFS(TaobaoFile System)1.3上线运行 o 集群规模(2010.8.22) 440台PC Server (300G*12 SAS 15K RPM) + 30台PC Server (600G*12 SAS 15K RPM) Server (600G*12 SAS 15K RPM) 文件数量:百亿级别 系统部署存储容量:1800 TB 当前实际存储容量:995TB 单台Data Server支持随机IOPS900+,流量15MB+ 目前Name Server运行的物理内存是217MB(服务器使用 千兆网卡) 2010下半年开始部署PC Server (1T SATA * 12) TFS1.3的特性 o TFS1.3提供了一些重要的功能特性 所有的元数据全部都内存化 清理磁盘空洞 容量和负载的均衡策略 容量和负载的均衡策略 平滑的扩容 数据安全性的冗余保证 几秒内完成Name Server故障自动切换 容灾策略 性能大幅提升 淘宝CDN系统 o CDN服务的图片规模(2011.5) –约500T容量的原图+ 500T容量的缩略图 –约573亿左右的图片数,平均图片大小是17.45K –8K以下图片占图片数总量的61%,占存储容量的 11%11% o CDN部署规模 –55个节点,部署在网民相当密集的中心城市 –每个节点目前处理能力在10G或以上 –CDN部署的总处理能力已到550G以上 –目前承载淘宝流量高峰时318G流量 CDN节点的架构对比-老架构 CDN节点的架构对比-新架构 CDN节点的架构对比 o 流量分布均匀性:所有的频道统一调度到128台squid,而 不是将squid按频道分组,可提高命中率2%以上 o 扩展能力:在一个VIP上新架构可以扩展到近100G的流量 (当然要用万兆网卡) o 灵活性:一致性Hash调度方法使得增加和删除服务器非常 方便,只有1/(n+1)的对象需要迁移 Squid改进和优化 o 在COSS存储系统基础上实现了TCOSS,FIFO加 上按一定比例保留热点对象,支持1T大小的文件 o Squid内存优化,一台Squid服务器若有一千万对 象,大约节省1250M内存,更多的内存可以用作 memory cachememory cache o 用sendfile来发送缓存在硬盘上的对象,加上 page cache,充分利用操作系统的特性 o 针对SSD硬盘,可以采用DIRECT_IO方式访问, 将内存省给SAS/SATA硬盘做page cache o 在Squid服务器上使用SSD+SAS+SATA混合存 储,实现了类似GDSF算法,图片随着热点变化而 迁移 节点运行情况(1) o 节点规模:32台DELL R710服务器 o 逻辑结构:2 LVS + 32 Haproxy+ 64 Squid o 时间:2009.12.21上线运行 o 理论最大负载能力:16Gbps以上o 理论最大负载能力:16Gbps以上 o 单台R710服务器可到500Mbps以上的小图片流量 o 单squid最大object数目:1800万 o Cache请求命中率:97% o Cache字节命中率:97% o 最重要的是命中率提高,大大改善用户的访问体验 节点运行情况(2) o 节点规模:30台DELL PowerEdge2950服务器 o 逻辑结构:2 LVS + 30 Haproxy+ 60 Squid o 时间:2010年5月上线运行 o 理论最大负载能力:12Gbps o 单台2950服务器可到400Mbps的吞吐率o 单台2950服务器可到400Mbps的吞吐率 o 单台存储:160G SSD + 143G SAS * 4 + 1T SATA o 单squid最大object数目:3000万 o Cache请求命中率:97.5% o Cache字节命中率:97.5% o 最重要的是命中率提高,大大改善用户的访问体验 议程 o 淘宝整体网络架构 o 淘宝基础设施规模与挑战 o 事例:图片存储与CDN系统 o 淘宝软件基础设施项目 o 淘宝高速服务框架(HSF) 软件基础设施的规划 TFS TFS的现状与发展 o TFS系统的主要特点 –针对互联网应用,文件命名不敏感 –架构当前主要解决一致性和可分区性 –提供双机房备份,解决数据容灾 –多进程分别管理单独的磁盘,充分利用系统资源 –自定义文件系统+支持EXT3/EXT4,利用操作系统的特性–自定义文件系统+支持EXT3/EXT4,利用操作系统的特性 –自描述的大文件支持 o TFS系统在淘宝的主要应用 –支持商品非结构化及交易中间数据存储 –数百台服务器,3P存储容量,百亿单位文件数量 o TFS系统未来的发展 –部分支持自命名文件 –持续提升单机性能及集群扩充能力,降低成本 TAIR TAIR的现状与发展 o TAIR系统的主要特点 –DHT数据分布,专注高性能KV类型数据访问 –架构当前主要解决可用性和可分区性 –轻量级中心控制节点,简化架构设计 –提供双机房备份,解决数据容灾 –Json形式提供部分结构化数据访问–Json形式提供部分结构化数据访问 –支持MEM/BDB/EXT3/EXT4,提供不同性能及安全要求的数据服 务 o TAIR系统在淘宝的主要应用 –作为缓存支持淘宝绝大部分应用,持久化引擎当前支持部分应用 –百台服务器,数百T存储容量,数百亿访问/天 o TAIR系统未来的发展 –灵活的配置策略,应用自定义CAP平衡 –持续提升单机性能及集群扩充能力,降低成本 OceanBase项目 o 淘宝数据库系统有不少已经接近百亿条的记录 –2010年数据:历史交易记录有40多亿条,用户 收藏夹记录超过60亿条,等等 –目前不断地拆分数据库,不是长远的办法 o OceanBase是海量信息存储与检索的线上系统o OceanBase是海量信息存储与检索的线上系统 –千亿条级别、支持事务的表格系统 –有严格的响应时间要求,平均低于1~10ms –系统的吞吐率要能达到1200QPS/每台 –2011.5已经在收藏夹应用中并线运行 –以后针对SSD设备做优化 MySQL优化 o 提高MySQL数据库系统的整体性能 –数据增量复制,用于数据挖掘和容灾 –主从服务器并行同步 –改善日志系统,提高集群的容灾能力 o 提升MySQL单机性能o 提升MySQL单机性能 –利用PCI-E Flash卡做存储cache,大幅提升性能和单表容量 –优化和改进Innodb引擎,提高锁和IO的效率 o MySQL负载均衡解决方案 –TDDL, JDBC层面 –轻量代理服务器,对客户端完全透明 服务器平台优化与维护 o 适合淘宝的高性能服务器开发 –Apache/Nginx等服务器软件的定制、优化和管理 –开发与维护淘宝公用基础HTTP模块 –Squid的定制与优化 –安全策略服务器–安全策略服务器 o 大规模负载均衡解决方案 –LVS的开发与维护 –HAProxy的定制与开发 o 网络协议栈调优 –TCP协议优化、内核参数调优 面向Java环境的专用计算平台 o 从多个层次为Java应用提供高效的底层平台 –高效的Java基础库 –Java虚拟机优化,针对Hotspots VM及Open JDK VM –Linux操作系统层优化 –Hypervisor,Java without OS–Hypervisor,Java without OS –专用硬件 o 策略:容易的先做 o 目前进展 –针对特定CPU,对JVM实现所依赖的相关库进行汇编重写 –针对Intel CPU对JVM进行编译级优化 –修改JVM,实现GC Invisible Heap技术 Linux内核的优化与定制 o 针对淘宝的应用负载来维护一个稳定、高效的 Linux内核 –目前涉及文件系统、资源管理、网络等子系统 –与其他团队合作,针对业务系统优化性能和资源 分配分配 –根据服务器的不同硬件配置定制Linux内核 o 同Linux内核开发社区合作 –在开发、测试、缺陷修复等各方面与社区全方位 合作 –包括新特性和缺陷修复等工作成果都将反馈到社 区 淘宝CDN系统 o 主要解决现有的问题 –商用产品的性能瓶颈、功能欠缺,以及不稳定性 –整个系统的规模、性能、可用性、成本和可管理性 o 开发完全自主的CDN系统 –CDN节点的新架构和优化–CDN节点的新架构和优化 –CDN监控平台 –全局流量调度系统支持基于节点负载状态调度和基于链路状态 调度 –CDN实时图片删除 –CDN访问日志过滤系统 –配置管理平台 –针对教育网的CDN部署和BGP方案,动态网页加速 CDN系统的发展 o CDN系统的研发与运维 –支持流媒体服务 –节点间应用级路由 –持续提高节点性能(应用软件、操作系统等) –优化GTM全局调度系统–优化GTM全局调度系统 –持续提高CDN系统可运维性,完善CDN内容管理 系统 o CDN系统的建设 –部署更多的小节点,尽可能离用户近一些 –定制化和快速部署 议程 o 淘宝整体网络架构 o 淘宝基础设施规模与挑战 o 事例:图片存储与CDN系统 o 淘宝软件基础设施项目 o 淘宝高速服务框架(HSF) HSF o 淘宝的高速远程调用框架,基于Mina 框架 开发 o 淘宝应用从集中式走入大型分布式的基础支 撑撑 HSF 交互场景图 o 客户端(消费端)从配置中心获取服务端地址列表—>和服 务端建立连接开始远程调用—>服务端更新通过notify o 系统通知客户端。服务端和客户端都有对应的监控中心,实 时监控服务状态。客户端,配置中心,服务端,notify,之 间的通信都是通过TB Remotion API 去搞定的。间的通信都是通过TB Remotion API 去搞定的。 TB Remoting 架构图 o 底层基于分布式框架Mina,主要代码都是通过 NIO实现。Mina上层封装的事件扩展,连接管理, 线程池管理,序列化,包括最上面的Façade接口 都是淘宝根据自身的需求做了一些封装。 HSF 发布和订阅服务和调用 o JBoss 服务器启动后,启动HSF SAR 应用(即taobao.hsf.sar,本地开发 机放在%DEPLOY_DIR%中,线上机器放置在 /home/admin/${appName}/target下) o 应用自身启动,Spring 容器初始化。这时: HSFSpringProviderBean: 会进行初始化,将向config server 注册当前 这个bean 服务。这一注册过程,简单理解其实就是告诉config server:IP 为xxx.xxx.xxx.xxx 的机器提供了xxx 服务。这样,config server server:IP 为xxx.xxx.xxx.xxx 的机器提供了xxx 服务。这样,config server 就可以根据服务调用者的请求中的服务名来转发推送服务地址了。 HSFSpringConsumerBean: 会进行初始化,将向config server 订阅当 前这个bean 服务,过程可以简单理解为:告诉config server:IP 为 xxx.xxx.xxx.xxx 的需要提供xxx 服务,Config server 就会根据这一服务 名返回给应用相应的服务地址。 o 在HSF 服务调用者订阅到服务地址后,就可以使用该服务地址执行服务调用 了。一个HSF 服务通常并不是由一台机器提供的,所以,订阅到的 服务地址通常是一个地址列表,里面包含了所有提供了该服务的地址。HSF 会随机选择一个服务地址进行服务调用。 HSF 使用实例代码 o I.服务端:发布服务代码: o II.客户端:订阅服务代码: 1.0.0 socket://192.168.207.91:4446 红色的属性是单元测试特有的,应用启动状态下不需要配置这块内容,因为这个target 是从config(注册中心)获取的。 小结 o 采用开源软件与自主开发相结合,是构建大 规模基础设施平台的必由之路 o 淘宝对系统的认识都是不断提高的 o 可以在软件和硬件多个层次优化o 可以在软件和硬件多个层次优化 o 优化是长期持续的过程 o 淘宝是从使用技术走向创造技术的公司 讨论 Q & A 谢谢!
还剩41页未读

继续阅读

下载pdf到电脑,查找使用更方便

pdf的实际排版效果,会与网站的显示效果略有不同!!

需要 15 金币 [ 分享pdf获得金币 ] 65 人已下载

下载pdf

pdf贡献者

yy88

贡献于2012-05-04

下载需要 15 金币 [金币充值 ]
亲,您也可以通过 分享原创pdf 来获得金币奖励!
下载pdf