开源+自主开发 - 淘宝软件基础设施构建实践

44
开源 + 自主开发 -- 淘宝软件基础设施构建实践 章文嵩(正明) 第七届2012开源中国开源世界高峰论坛 2012.6.29 1

Upload: wensong-zhang

Post on 14-May-2015

1.884 views

Category:

Documents


2 download

DESCRIPTION

本报告先简要介绍淘宝网的业务和背后网站系统的主要组成部分,描述所使用的主要软件和当前的系统规模,以及未来的技术挑战,当前的淘宝网站系统是完全采用开源软件和自主开发。 接着,叙述淘宝系统的主要发展过程,在系统规模较小时主要采用商用软件,随着规模越来越大商用软件逐步无法满足需求,不得不采用开源软件结合自主开发,一方面通过使用开源软件提高系统开发的效率,另一方面通过自主开发可以按需求在架构上取舍将系统性能做到极致,这里会举三个例子说明,一是淘宝如何逐步建设世界上最大的面向图片的CDN系统,采用高性价比的混合存储系统,目前有1000Gbps流量的承载能力,今年会发展到约2400Gbps,二是根据网页使用图片的特定抛弃目录空间实现了高可扩展的对象存储系统TFS,目前部署了6PB多的存储空间,存放了4PB多的图片,今年会建设到12PB的存储空间,三是将淘宝的核心数据库从基于IBM小型机、Oracle商用数据库和EMC高端存储的解决方案迁移基于PC服务器加MySQL数据库,结合高速非易失的PCI-E存储设备和多层次的系统优化,实现近百倍的性能提升,非常轻松地应付双11和双12的大促活动。这个过程可以总结出商用软件不能满足大规模系统的需求,采用开源软件与自主开发相结合,有更好的可控性,更高的可扩展性,规模效应使得研发投入都有更高的产出。 然后,描述淘宝的开源策略,淘宝系统中使用大量的开源软件,并在开源软件的基础上进行改进和定制,并把工作成果回馈给上流的开源社区,例如淘宝维护了自己的Linux内核树并不断地向Linux社区贡献patch,目前淘宝在对Linux内核贡献补丁数的公司排名为115,开源了基于Nginx的Tengine服务器,以及向Oracle回馈了JVM的补丁和MySQL的补丁,向Apache回馈hadoop和hbase的补丁等等。淘宝建设了淘蝌蚪开源平台,并开源多年开发主力的基础软件,如分布式存储系统TFS、分布式缓存和K/V系统TAIR、海量数据库OceanBase、分布式数据库中间件 TDDL、手机自动化测试框架Athrun等等。淘宝针对数据密集型应用的特点定制了低功耗服务器,先应用在CDN系统中,淘宝创建了greencompute.org网站,并开源了低功耗服务器的硬件规格和应用测试数据,阿里云开源了直流服务器,和业界一起推进绿色计算。 淘宝是开源系统的受益者,并积极参与开源生态系统的建设,促进开源生态系统的发展,积累更好的口碑,凝聚人才,迎接未来更大的技术挑战。

TRANSCRIPT

Page 1: 开源+自主开发  - 淘宝软件基础设施构建实践

开源 + 自主开发 -- 淘宝软件基础设施构建实践

章文嵩(正明) 第七届2012开源中国开源世界高峰论坛

2012.6.29

1

Page 2: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

2

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:图片存储、CDN与DB

四、淘宝开源策略

五、小结

Page 3: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝网简介

• 淘宝网:网络购物 • 2011年网购交易额约7849亿元,淘宝网占8成;淘宝创造的直接就业机会是270.8万

• 网络流量排名(Alexa统计) –国际:13 (12~18) –国内:3

• 现在每天7000万以上的UV;去年双12大促有1.2亿多的UV,CDN实际流量峰值为856Gbps

• 现在每天的25多亿的页面浏览 • 网站上有约800个应用

3

演示者
演示文稿备注
在2011年的“双十一”当天的促销中,淘宝全网销售达到了52亿元,其中天猫33.6亿元,支付宝支付成功3,369万笔,比去年纪录增长了近170%。总共46个品牌店销售额突破1,000万元,497家品牌店销售额突破100万元。相比之下,2011年“十一”黄金周7天,北京121家重点商业服务业企业总共累计实现零售额不过59.3亿元,仅增长13.1%。 2010年淘宝网创造的直接就业机会是182.3万,而这一数字在2011年年底变成了270.8万,比2010年增长了48.5%。 Ebay 21 , amazon 11
Page 4: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

4

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:图片存储、CDN与DB

四、淘宝开源策略

五、小结

Page 5: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝系统框架示意图

5

演示者
演示文稿备注
淘宝搜索,全球最大电子商务搜索引擎。 实时、全量、100%查全率。 针对电子商务最精准的淘宝广告系统 淘宝生产所使用的Hadoop集群为目前国内规模最大的Hadoop集群之一 国内技术最强的CDN系统 自主开发的基础设施平台 TOP(淘宝开放平台)是国内最大的开放平台
Page 6: 开源+自主开发  - 淘宝软件基础设施构建实践

软件基础设施的规划

6

演示者
演示文稿备注
2011年组织架构的调整,旺旺平台和海量数据处理这两块合并到核心系统,这样我们的软件基础设施的布局越来越完整。
Page 7: 开源+自主开发  - 淘宝软件基础设施构建实践

主要所采用的软件

• CDN:世界上流量最大的、面向图片的CDN系统 –基于开源软件LVS+Haproxy+Squid+Bind上开发的CDN系统 –现有103节点,双12支持了856Gbps实际流量;约5000台服务器 –今年会建设到2400Gbps的承载能力

• TFS:自主开发的分布式对象存储系统 –可存储容量6.2P,实际使用4.06P;今年会建设到12P –图片空间每GB每年存储与运维成本从7.2元降到3.4元

• TAIR:淘宝的分布式缓存和K/V存储 –集成了开源的Redis和LevelDB存储引擎 –提供跨机房容灾的解决方案

• OceanBase:淘宝的分布式数据库系统 –支持千亿条记录级别的数据库、支持事务

7

演示者
演示文稿备注
CDN 业务状态: 103/6个节点(10/1个低功耗),流量856/910G 流量单价:约3w,频道错峰比:2.1左右 万网对外服务:30/5名用户,2G带宽 系统研发: DNS系统研发,性能比商业GTM设备提升5倍以上 CDN节点性能优化,提升50%以上的服务能力 低功耗平台选型及性能优化,响应时间在10ms以内 透明的动态内容加速,提升15%以上的响应时间 实时计费系统设计和开发,对外服务流程建立 淘花视频加速,提供统一的加速方案,鉴权功能 基于网络拓扑的IP地址库,准确度超过95% TFS 新功能 大文件支持,淘花及TOP使用 MetaServer,支持简单目录、权限,当前使用Mysql ResourcCenter,支持应用级别资源控制及访问统计 异地机房支持,当前数据完成,数据比对中 服务化推进 接入WebService,原型搭建完成,正在测试及丰富功能 Boss系统原型,采集统计/计费销账/交互页面 日常运维 运维系统搭建 技术支持机制 运维PE交接 TAIR 新功能 RDB集成Redis存储引擎,开发完成,商城应用中,后续仍在持续开发测试 LDB集成LevelDB,已替换线上所有计数器应用 Nginx集成,现在线上所有的计数器都已通过Web服务形式提供 方案优化 跨机房容灾方案优化,解决网络异常带来的数据访问问题 TairServer优化,新的通信框架和锁粒度,优化进行中 日常运维 P1级事故处理 (40分钟) 技术支持机制 运维PE交接 OceanBase 版本演进 0.1.x提供基本功能,收藏夹上线 0.2.x提供数据转储机制,并提供服务端排序过滤,主备机房同步,通信机制优化,按列存储查询,多机房、多集群同时支持数据读取 0.3.x版本开发过程中,针对OLAP应用,重新划分系统架构,提升查询并行度,使大数据量merge和join成为可能,也对模块进行了性能优化 支持应用 现有线上11个应用全部使用0.2.x版本 数据平台、量子统计等应用正在测试0.3.x版本 日常运维 P1级事故处理(收藏夹,不可用时间6~7个小时)及1111/1212支持 DBA全面介入日常运维
Page 8: 开源+自主开发  - 淘宝软件基础设施构建实践

主要所采用的软件(2)

• 海量数据:采用开源的Hadoop平台 –现在单一集群到2500台服务器的规模 –系统可存储容量为47.02PB,已使用32.47PB,历史数据为压缩存储

–每天新增原始数据量为50T左右,存储净增量约为36T –每天运行的作业数为10万以上,每日处理数据为2.5PB

• 核心数据库:采用开源的MySQL,加上高速的非易失存储,以及多层级的系统优化

• 旺旺平台:自主开发;最高在线942w,全年可用99.97%,机器数1469台,服务了淘宝和B2B

• 服务器平台:Nginx 部署130个应用,约2000台机器,占有率20%;完成TMD等重要基础模块,Tengine项目开源

8

演示者
演示文稿备注
旺旺历史最高在线:942w ● 活跃用户(登录5次/月)将近4500w ● 消息发送量,最高峰6.5亿条/天(与最高在线相 关) ● 工程师11个,1个测试,2个测试外包 ● 全年可用:99.97% ● 机器数:1469台 2010年底 2011年底 增长倍数 机器数 1200 1882 1.57倍 用户数 576 2037 (含IDE用户720) 3.54倍 资源组 47 109 2.32倍 计算资源(slots) 20000 36600 1.83倍 存储量 9.5PB 22.1PB 2.33倍 每日作业数 20000 66000 3.30倍 每日处理数据 600TB 2.5PB 4.27倍 每日NameNode RPC数 5亿 16亿 3.20倍 HBase Hbase全年可用性为99.88% 2011年底近200台服务器规模 线上生产项目从0发展至约20个 全年基于Hbase 0.90.X完成 83 个issue,BUG趋于收敛 回馈给社区的patch有5个 建立较完善的测试、监控体系 数据收集与交换 1.Broker在线服务器20台,其中0.2.0版本16台,0.3.0版本4台��2.云梯Gateway服务器30台,其中云梯小时集群8台,云梯1 24台,云梯1中有16台负责处理0.2.0数据,6台负责处理0.3.0数据��3.timetunnel-0.2.0单日最大收集数据6769G(11-11)��4.timetunnel-0.3.0单日最大收集数据1950G(12-01)��5.timetunnel-0.2.0 netio:in 50Mb/s,out 300Mb/s��6.Timetunnel-0.3.0 netio:in 250Mb/s,out 250Mb/s��7.Dbsync-mysql共有服务器13台,共同步18张表��8.Dbsync-oracle共有服务器5台,共同步4张表��9. Logserver共有16台服务器提供服务,日最大处理请求70亿 MySQL 单机优化 成功去IOE,性能很大提升。 混合引擎解决方案。 集群优化 主从无延迟同步。 异构数据同步。 上游Patch提交 Apache/Nginx模块 重要基础模块 TMD TFS、Tair、OceanBase 安全相关 Tengine 6月立项 12月开源 比官方多50+个功能和优化 TMD服务器 底层网络通信改进
Page 9: 开源+自主开发  - 淘宝软件基础设施构建实践

主要模块所采用的软件(3)

• 底层的支撑软件: –在OpenJDK基础上开发和维护Taobao JVM –在Red Hat基础上维护自己的Linux内核 –在Sheepdog上实现了KVM的虚拟化弹性计算平台 –在LVS基础上实现负载均衡解决方案 –用开源软件实现了高流量的网络镜像项目

• 可以说淘宝网平台建立在开源软件和自主开发的基础上。

9

演示者
演示文稿备注
Taobao JVM发布2个版本,2011年部署率14%。OCA获批。 和Forest、Hesper团队合作优化项目基本完成。 开始Hadoop在JVM层面优化工作,完成优化点3个,Exar加速卡应用开发完成。 协助图像组优化CPU算法,开始GPU应用预研。 团队6人,2011加入应届生2人,转岗1人。 不足: 遗留尾巴,未上线的项目多。 淘宝维护内核在线上运行量占10% OS级别性能优化在6个应用中初见成效 CDN,商品搜索,主搜/一淘前端,消息推送平台 TFS/Tair,云梯Hadoop 为自主业务系统做好了准备 将开源sheepdog项目产品化,开始投入实用 内核质量和性能得到兄弟公司认可 阿里云飞天系统2500台服务器全部运行我们维护的2.6.32内核 团队成长 团队成员9人 (2人P8, 1人P7, 4人P6, 2人P5) 年轻同学在相关领域开始独当一面 内核社区接受140+ patch,全球115名(自2006年起统计) 成为sheepdog社区核心维护者
Page 10: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

10

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:图片存储、CDN与DB

四、淘宝开源策略

五、小结

Page 11: 开源+自主开发  - 淘宝软件基础设施构建实践

2007年之前的图片存储系统

11

FAS980C SnapShotSnapShot

杭州网通 IDC

Upload Server

滨江联通备份中心

NearStore R200

DR: A+B+C+D

SnapVault远程数据冗灾

Image Server

C: Online Image D: Online Image

SnapMirror

FAS980C SnapShotSnapShot

A: Online Image B: Online Image

SnapMirror

注:红框中设备是2006年的新增设备,明年还得在原有的 NetApp 980C/R200 存储上增加 20TB 左右新的硬盘容量。

Admin Server

演示者
演示文稿备注
那是在2007年之前 淘宝业务量超过易贝易趣不到两年,数据尚未爆炸性增长 我们使用NetApp提供的网络存储设备 NetApp F810C NetApp FAS980C 文件数量:千万级别 理论存储容量:50TB 实际存储容量:15TB 大家都很Happy! 但是很快我们就笑不出来了 数据量以超过业务增量三倍的速度增长,同时淘宝的影响越来越大,数据的安全也更加重要,后果就是 对小文件的存储无法优化 文件数量大,网络存储设备无法支撑 扩容成本高,10T的存储容量需要几百万¥ 连接的服务器越来越多,网络连接数已经到达了网络存储设备的瓶颈 单点,容灾和安全性无法保证
Page 12: 开源+自主开发  - 淘宝软件基础设施构建实践

商用产品无法满足需求

• 系统需求 淘宝的影响越来越大,数据的安全也更加重要 数据存储量以每年二倍的速度增长(即原来的三倍)

• 商用存储产品 对小文件的存储无法优化 文件数量大,网络存储设备无法支撑 连接的服务器越来越多,网络连接数已经到达了网络存储设备的极限

扩容成本高,10T的存储容量需要几百万¥ 单点,容灾和安全性无法得到很好的保证

12

Page 13: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS 1.0

• 2007年6月 淘宝自主开发的分布式的文件系统 TFS(Taobao File System)1.0上线运行 主要解决海量小文件的分布式存储 集群规模:200台PC Server(146G*6 SAS 15K Raid5) 文件数量: 亿级别 系统部署存储容量: 140 TB 实际使用存储容量: 50 TB 单台支持随机IOPS 200+,流量3MBps

13

Page 14: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS 1.0的逻辑结构

14

Page 15: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS1.0的特性

• 集群由主备Name Server和多台Data Server构成 • Data Server运行在挂很多硬盘的Linux主机上 • 以block文件的形式存放数据文件(一般64M一个

block) • 文件名内置元数据信息,用户自己保存TFS文件名与实际文件的对照关系 – 使得元数据量特别小 • 如T2auNFXXBaXXXXXXXX_!!140680281.jpg,名字中含有

逻辑的block_no和object_no等 • block存多份保证数据安全 • 利用ext3文件系统存放数据文件 • 磁盘raid5做数据冗余

15

演示者
演示文稿备注
TFS1.0的缺陷 TFS本身已经有block备份冗余,单机上的raid5机制多余,增加了 存储成本,而且降低了性能。 Block中的更新操作较多,导致每个Block大小不一,而且频繁的更新操作会导致大量的文件碎片,大大降低了读写速度。 Mysql作为排重数据库性能较低,而且随着排重数据的增多,数据库的容量和性能均成为瓶颈。 数据更新操作没有一致性事务机制,导致新的数据不能保证完整性。 通信机制采用多线程同步等待请求数据包,如果所有线程均被慢连接堵死,会导致整个系统的反应变慢。
Page 16: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS 1.3

• 2009年6月 TFS(Taobao File System)1.3上线运行 • 集群规模(2010.8.22) 440台PC Server (300G*12 SAS 15K RPM) + 30台PC

Server (600G*12 SAS 15K RPM) 文件数量: 百亿级别 系统部署存储容量: 1800 TB 当前实际存储容量: 995TB 单台Data Server支持随机IOPS 900+,流量15MB+ 目前Name Server运行的物理内存是217MB(服务器使用千兆网卡)

16

Page 17: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS1.3的逻辑结构

17

Application/Client

NameServer block id, file id/ allocate

Data

control message heartbeat message

crc,size filename refcount

dataserver id (block id, file id)

hda

DataServer dsp1

hda hda

dsp2 dsp3

hda

DataServer dsp1 dsp2 dsp3

hda hda

Mysql Dup Store

NameServer

heartbeat message

HA heartbeat

Page 18: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS1.3的特性

• TFS1.3提供了一些重要的功能特性 所有的元数据全部都内存化 清理磁盘空洞 容量和负载的均衡策略 平滑的扩容 数据安全性的冗余保证 几秒内完成Name Server故障自动切换 容灾策略 性能大幅提升

18

演示者
演示文稿备注
主block+扩展block,实现block内部的顺序读写 容量和负载的均衡策略 平滑灵敏的负载策略 读写流量负载均衡 复制、整理负载均衡 实时动态反馈参数加权平均 块复制策略 按块复制 单个文件损坏的自动恢复功能 块分布均衡策略 DataServer主机间的均衡 DataServer进程间的均衡 平滑扩容 加入集群 TFS集群容量不足时,只需将新的机器部署好应用程序以后,即可加入到运行中的TFS集群 TFS会根据容量的比率,自动选择写入新数据到新服务器 TFS会在适当的时候对所有的数据服务器进行数据均衡 退出集群 数据服务器的退出不影响TFS服务 TFS检测到Data Server退出后,会针对该Data Server拥有的数据做复制 TFS重新均衡数据 安全及容灾 数据的安全 数据内容校验 机架间的RAID1 机房间的RAID1 容灾 NameServer之间的HA 多份数据存在避免DataServer出现问题引起的数据丢失 机房间数据镜像,应用可以通过配置方便实时切换访问
Page 19: 开源+自主开发  - 淘宝软件基础设施构建实践

TFS的发展

• TFS在2010年9月开源,希望更多人来使用和改进 • TFS 2.0已经在生产系统中使用

–支持大文件存储 –在外围通过MySQL向应用提供目录支持 –加入资源中心,控制集群级别的权限

• 后续开发 –优化性能,提高扩展性,降低存储成本 –分级存储机制(SSD/SATA),动态文件迁移 –RAID或Erasure Code等

19

Page 20: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

20

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:图片存储、CDN与DB

四、淘宝开源策略

五、小结

Page 21: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝CDN系统的研发

• 主要解决现有的问题 –商用产品的性能瓶颈、功能欠缺,以及不稳定性 –整个系统的规模、性能、可用性和可管理性

• 开发完全自主的CDN系统 –CDN节点的新架构和优化 –CDN监控平台 –全局流量调度系统支持基于节点负载状态调度和基于链路状态调度

–CDN实时图片删除 –CDN访问日志过滤系统 –配置管理平台

21

演示者
演示文稿备注
CDN监控平台,监控采集流程及数据接口
Page 22: 开源+自主开发  - 淘宝软件基础设施构建实践

CDN节点的架构对比-老架构

22

NetScaler(7LB)

squid

源站

squid squid … squid

NetScaler(7LB)

client

频道 频道1 频道2 … 频道n

VIP1 VIP2

演示者
演示文稿备注
万兆NetScaler处理图片连接的极限能力大概在4G,高峰时还crash情况发生,我们只敢用到3G。 NetScaler的URL Hashing非常不灵活,
Page 23: 开源+自主开发  - 淘宝软件基础设施构建实践

CDN节点的架构对比-新架构

23

LVS(L4)

Haproxy(L7)

squid

源站

squid squid … squid

haproxy(L7) Haproxy(L7)

LVS (L4)

client

所有频道统一调度

VIP1 VIP2 心跳

Page 24: 开源+自主开发  - 淘宝软件基础设施构建实践

CDN节点的架构对比

对比项 \ 节点 新架构 老架构 流量分布均匀性 ☆☆☆☆☆ ☆☆☆

可维护性 ☆☆☆ ☆☆☆ 抗攻击能力 ☆☆☆☆ ☆☆☆☆ 自主控制能力 ☆☆☆☆☆ ☆☆☆

价格 ☆☆☆☆☆ ☆☆☆ 扩展能力 ☆☆☆☆☆ ☆☆ 灵活性 ☆☆☆☆☆ ☆☆

•流量分布均匀性:所有的频道统一调度到128台squid,而不是将squid按频道分组,可提高命中率2%以上 •扩展能力:在一个VIP上新架构可以扩展到近100G的流量(当然要用万兆网卡) •灵活性:一致性Hash调度方法使得增加和删除服务器非常方便,只有1/(n+1)的对象需要迁移

演示者
演示文稿备注
针对大规模的synflooding攻击,解决方法 将多块千兆网卡绑起来实现2G或者4G吞吐率(请求流量),采用Active-Active方式,最高可实现8G的请求流量处理能力 用万兆网卡 几G的synflooding流量一般不会攻击CDN节点?
Page 25: 开源+自主开发  - 淘宝软件基础设施构建实践

Squid改进和优化 • 在COSS存储系统基础上实现了TCOSS,FIFO加上按一

定比例保留热点对象,支持1T大小的文件 • Squid内存优化,一台Squid服务器若有一千万对象,

大约节省1250M内存,更多的内存可以用作memory cache

• 用sendfile来发送缓存在硬盘上的对象,加上page cache,充分利用操作系统的特性

• 针对SSD硬盘,可以采用DIRECT_IO方式访问,将内存省给SAS/SATA硬盘做page cache

• IO优化到平均一个请求需要做约0.9个IO操作 • 在Squid服务器上使用SSD+SAS+SATA混合存储,实现

了类似GDSF算法,图片随着热点变化而迁移

25

Page 26: 开源+自主开发  - 淘宝软件基础设施构建实践

热点迁移的数据对比(1)

• 简单按对象大小划分:小的进SSD,中的放SAS,大的存SATA

• SSD + 4 * SAS + SATA上的访问负载如下:

26

[root@cache161 ~]# iostat -x -k 60 | egrep -v -e “sd.[1-9]” … avg-cpu: %user %nice %system %iowait %steal %idle 3.15 0.00 5.63 11.35 0.00 79.87 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 15.40 1.17 50.66 2.63 2673.22 124.85 105.01 0.55 10.39 6.27 33.41 sdb 0.07 0.03 447.29 1.02 4359.01 191.90 20.30 0.32 0.71 0.27 12.13 sdc 5.73 1.53 114.93 8.42 1264.86 100.58 22.14 1.05 8.48 3.56 43.94 sdd 5.57 2.07 121.83 9.57 1319.45 104.12 21.67 1.19 9.02 3.63 47.72 sde 5.53 1.45 111.45 8.52 1246.53 101.92 22.48 0.95 7.88 3.42 41.06 sdf 5.45 2.02 118.93 8.00 1281.92 106.25 21.87 1.19 9.37 3.74 47.44

其中:黑色为SATA,绿色为SSD,红色为SAS 4块SAS硬盘上的访问量和超过SSD硬盘上的访问量

Page 27: 开源+自主开发  - 淘宝软件基础设施构建实践

热点迁移的数据对比(2)

• 按对象访问热点进行迁移:最热的进SSD,中等热度的放SAS,轻热度的存SATA

• SSD + 4 * SAS + SATA上的访问负载如下:

27

[root@cache161 ~]# iostat -x -k 60 | egrep -v -e “sd.[1-9]” … avg-cpu: %user %nice %system %iowait %steal %idle 3.15 0.00 5.63 11.35 0.00 79.87 Device: rrqm/s wrqm/s r/s w/s rkB/s wkB/s avgrq-sz avgqu-sz await svctm %util sda 5.08 1.65 18.55 2.52 1210.07 119.00 126.18 0.14 6.50 5.46 11.51 sdb 1.68 0.05 610.53 1.75 6962.29 413.47 24.09 0.28 0.46 0.23 14.25 sdc 0.22 0.03 28.87 0.97 1172.93 189.13 91.31 0.16 5.28 4.40 13.13 sdd 0.23 0.02 29.70 0.77 1133.47 122.53 82.45 0.15 4.99 4.39 13.37 sde 0.18 0.03 28.23 1.03 1078.73 206.27 87.81 0.15 5.00 4.24 12.40 sdf 0.10 0.02 28.42 0.55 1090.27 115.00 83.22 0.15 5.04 4.44 12.86

其中:黑色为SATA,绿色为SSD,红色为SAS SSD硬盘上的访问量是4块SAS硬盘上访问量之和的5倍以上,SAS和SATA的硬盘利用率低了很多

Page 28: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝CDN系统

• CDN服务的图片规模 –约1000T容量的原图 + 1000T容量的缩略图 –约1100亿左右的图片数,平均图片大小约为18K

• CDN部署规模 –103个节点,每个节点目前处理能力在10G或以上 –CDN部署的总处理能力已到1000G以上 –目前承载淘宝流量高峰时856G,含集团子公司的流量

• CDN功能 –支持图片、视频和静态数据;支持动态页面加速 –L1-Cache字节命中率为96~98%,L2-Cache的为70~80%,大大改善用户的访问体验,节约回源带宽

–针对教育网的CDN部署优化:BGP解决LDNS乱设问题 28

Page 29: 开源+自主开发  - 淘宝软件基础设施构建实践

CDN系统的发展

• CDN系统的研发与运维

–持续提高节点性能(应用软件、操作系统等) –优化GTM全局调度系统 –节点间应用级路由 –持续提高CDN系统可运维性,完善CDN内容管理系统

• CDN系统的建设 –随着系统规模不断增大,正在建设中型和大型节点 –定制化和快速部署

29

Page 30: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

30

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:淘宝核心数据库

四、淘宝开源策略

五、小结

Page 31: 开源+自主开发  - 淘宝软件基础设施构建实践

商业解决方案

• IOE= IBM + Oracle + EMC • 优点:

–稳定,功能非常强大 –支持完善,方便运维

• 缺点: –License贵,软硬件成本高 –集中式架构,不利扩展 –软件黑盒子

31

Page 32: 开源+自主开发  - 淘宝软件基础设施构建实践

MySQL发展

• 2008年开始周边的数据库使用MySQL • 2010年 组建数据库开发团队

–结合高速的非易失存储设备,多层优化MySQL –实现分库分表的TDDL中间件成熟 –核心业务开始迁移到MySQL

• 2011年 核心数据库迁移到基于MySQL解决方案 –商品库:MySQL 16*2 –交易库:MySQL 16*2,IOE成本是2千万,现在成本是近400万,TPS从9000提升到12.8万 32

Page 33: 开源+自主开发  - 淘宝软件基础设施构建实践

经验

• 商用软件不能满足大规模系统的需求 • 采用开源软件与自主开发相结合,有更好的可控性,更高的可扩展性

• 规模效应,研发投入都是值得的

33

• 在软件和硬件多个层次优化,优化是长期持续的过程

• 先平台后业务 vs 先业务后平台,后者更顺 –发挥边际效应,提高资源利用率

演示者
演示文稿备注
商用产品多数都是面向企业用户,而非大规模的网站系统;
Page 34: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

34

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:图片存储、CDN与DB

四、淘宝开源策略

五、小结

Page 35: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝开源策略

• 淘宝系统中使用大量的开源软件,并在开源软件的基础上进行改进和定制,并把工作成果回馈给上流的开源社区 –淘宝维护了自己的Linux内核树并不断地向Linux社区贡献patch,目前淘宝在对Linux内核贡献补丁数的公司排名为115

–签署OCA,向Oracle回馈了JVM的补丁和MySQL的补丁

–向Apache回馈hadoop、hbase和Traffic Server的补丁

–向Nginx回馈补丁,并开源了基于Nginx的Tengine服务器等

35

Page 36: 开源+自主开发  - 淘宝软件基础设施构建实践

36

内核贡献公司排名

Page 37: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝开源策略

• 淘宝建设了淘蝌蚪开源平台,开源多年开发主力的基础软件 –2010.6开源了分布式缓存和K/V系统TAIR –2010.9开源了分布式存储系统TFS –2011.8开源了海量数据库OceanBase –分布式数据库中间件 TDDL –异构数据源数据交换工具 DataX –性能分析工具 TProfiler –手机自动化测试框架Athrun –分布式任务调度引擎TBSchedule等等。

37

Page 38: 开源+自主开发  - 淘宝软件基础设施构建实践

淘宝开源平台

38

Page 39: 开源+自主开发  - 淘宝软件基础设施构建实践

定制的低功耗服务器 • 每个热插拔模块2个nodes • 每个NODES 3块硬盘 • 支持 24 x 2.5” SATA/SSD • 选择2U 8 nodes 的原因:

– SuperServer: 2U 8 nodes 支持热插拔设计。

– 降低功耗(2U 8nodes 共享4个系统FAN) – 成本更低(8nodes共享1个机箱,1u

4nodes 共享1个机箱) – 2U TWIN机箱和所使用的主板是成熟产品

• 单服务器配置: – Intel® Atom™ D525 with 2 cores – Intel® ICH9R Chipset – 4GB memory DDR23 800MHZ SO-

DIMM w/o ECC – LAN: Intel 82574L 2*1GB – HDD:

• 1* SSD 80G , • 2* 2.5” SATA 500GB

(背面)

一个板卡集成两个服务器系统

(正面,24个可插拔硬盘)

Page 40: 开源+自主开发  - 淘宝软件基础设施构建实践

低功耗服务器开源

• 开源网站 http://www.greencompute.org/

40

Page 41: 开源+自主开发  - 淘宝软件基础设施构建实践

GreenCompute开源项目

• 目标是推动互联网整体硬件基础设施(包括服务器、网络设备、IDC机房、机架和电源等)的节能环保;

• 组织方式是采用多方合作的机制吸纳业内同行共同参与该项目,

• 运转方式是根据不同的设施类型分成不同的子项目,分别有特定的参与方负责推动在该方向上“绿色”设备的定制化、产品化和规模化;

• 成果将以开源的方式发布到项目网站上供业内的人士参考。

41

Page 42: 开源+自主开发  - 淘宝软件基础设施构建实践

议程

42

一、淘宝网的简介

二、淘宝软件基础设施

三、事例:图片存储、CDN与DB

四、淘宝开源策略

五、小结

Page 43: 开源+自主开发  - 淘宝软件基础设施构建实践

小结

• 淘宝是开源系统的受益者,并积极参与开源生态系统的建设,促进开源生态系统的发展,积累更好的口碑,凝聚人才,迎接未来更大的技术挑战。

• 淘宝公司希望以更开放的方式与业界一起进行技术创新

43

演示者
演示文稿备注
规模挑战,走在世界前列 积累了海量的数据,目前挖掘的只是冰山一角,欢迎学术界来联合挖掘
Page 44: 开源+自主开发  - 淘宝软件基础设施构建实践

讨论

44

• Q&A • 谢谢!