淘宝CDN系统架构
淘宝技术架构简介

• 价值
– 用同步的语义来实现异步的调用
ngx_lua原理
• 每个Nginx工作进程使用一个Lua VM,工 作进程内所有协程共享VM • 每个外部请求都由一个Lua协程处理,协程 之间数据隔离 • Lua代码调用I/O操作接口时,若该操作无 法立刻完成,则打断相关协程的运行并保 护上下文数据 • I/O操作完成时还原相关协程上下文数据并 继续运行
系统过载保护
• 判断依据
– 系统的loadavg – 内存使用(swap的比率)
• sysgurad模块
sysguard on; sysguard_load load=4 action=/high_load.html; sysguard_mem swapratio=10% action=/mem_high.html
– 防hashdos攻击 – 防SQL注入 – 防XSS
• 标准Nginx无输入体过滤器机制的问题 • 例子(防hashdos攻击)
– 如果所有POST内容都在内存中,占用内存过大 – 否则性能不高,内容可能被buffer到磁盘 – /2012/01/amechanism-to-help-write-web-applicationfirewalls-for-nginx/
ngx_lua原理
代码示例
location /http_client { proxy_pass $arg_url; } location /web_iconv { content_by_lua ' local from, to, url = ngx.var.arg_f, ngx.var.arg_t, ngx.var.arg_u local iconv = require "iconv" local cd = iconv.new(to or "utf8", from or "gbk") local res = ngx.location.capture("/http_client?url=" .. url) if res.status == 200 then local ostr, err = cd:iconv(res.body) ngx.print(ostr) else ngx.say("error occured: rc=" .. res.status) end '; }
CDN模式介绍

CDN模式介绍CDN(content delivery network 或 content distribution network)模式专注于通过全球分布式缓存架构为经常访问的⽂件减少⽹络访问时的延迟。
⽬标是加快交付应⽤程序内容给⽤户。
内容是任何可以存储在⼀个⽂件,如图像、视频和⽂档。
内容交付⽹络 (CDN) 是⼀种全球分布式缓存的服务。
CDN 在世界各地的许多地⽅保存了应⽤程序⽂件的副本。
当⽤户访问时,会选择离这些地⽅接近结点,内容不需要⾛长距离⽹络来传递,所以它能访问到达速度更快,以此来改善⽤户体验。
CDN 节点设在世界各地希望尽可以能接近的⽤户。
它有⾃⼰的URL 负载平衡解析器,根据⽤户不同地理位置,⽆论⽤户在什么地⽅将⽤户引向最近的节点。
CDN所⾯临的挑战:• 应⽤程序数据访问从不⼀定能接近它所在地理位置最近的数据中⼼• 多个客户端访问相同的应⽤程序数据对象(如 HTML、 JavaScript、图像、视频或其他⽂件)• 应⽤程序有包括⼤流量下载、流媒体视频或其他⼤流量级的内容CDN 可以有效地减少节点负载以加快各种类型的内容。
CDN的机制:⼀般来说,互联⽹更快速度地数据传输与源数据和客户端有密切关系。
将源数据的缓存副本放置得与客户端⽐较接近,当⽤户需要访问数据时,从最接近的位置检索它将⽐从原始结点检索会更快⼉些。
这种做法通常称为分布式缓存,这也是CDN 的作⽤所在。
具体地说,我们将关注是通过 HTTP 访问的⽂件。
虽然所有⽤户看到相同的 URL⽂件,不同的⽤户将被路由到不同的 CDN 节点。
这是 CDN的要点:将请求路由到就近的 CDN 节点,以提⾼响应速度。
使⽤CDN的前后的简单⽰意图:CDN的限制:CDN 对于不经常访问的资源是⽆效的。
通常只有在 CDN缓存过期前有⾄少两次访问的资源才算有效。
CDN 对于不断变化的资源不适⽤。
CDN 对于不想公开资源可能是⼀个糟糕的选择。
缓存可以不⼀致CDN存储的资源复本指定过期时间,因⽽缓存图像⽂件可在僧⼀个⼩时,⼀个⽉有效的。
cdn技术架构pdf

CDN(内容分发网络)技术架构主要由中心和边缘两部分组成。
中心部分主要包括CDN网管中心和DNS重定向解析中心,负责全局负载均衡,设备系统安装在管理中心机房。
在全局负载均衡方面,DNS 扮演着重要角色,它负责根据用户源IP地址解析不同的IP,实现就近访问,从而提高响应速度。
边缘部分则主要指异地节点,是CDN分发的载体,主要由Cache 和负载均衡器等组成。
每个CDN节点由负载均衡设备和高速缓存服务器两部分组成。
负载均衡设备负责每个节点中各个Cache的负载均衡,保证节点的工作效率。
同时,负载均衡设备还负责收集节点与周围环境的信息,保持与全局负载DNS的通信,实现整个系统的负载均衡。
高速缓存服务器(Cache)则负责存储客户网站的大量信息,可以快速响应用户的访问请求。
CDN的管理系统是整个系统能够正常运转的保证,通过完善的网管系统,用户可以对系统配置进行修改。
同时,为了实现高可用性等目标,需要监视各节点的流量、健康状况等信息。
淘宝技术架构介绍, 了解淘宝,了解淘宝的架构需求

pipeline 页面布局
Screen Layout Control
多模板引擎
Jsp Velocity FreeMarker
V2.0 淘宝项目管理工具 AntX
类似maven 脚本编程语言 AutoConfig 依赖管理,冲突检测
V2.1 的需求
提高性能 增加开发效率 降低成本
V2.1 2004.10 – 2007.01
TBStore
Read/Write
Oracle Oracle Oracle Oracle
dump
Search
Read/Write
Node Node
1
2 ……
Node n
V2.1逻辑结构
表示层
Service
业务请求转发
Framework
S
UC
UC 业务流程处理 UC
UC
P
R
AO
AO
AO
AO
I
业务逻辑层
Node 1
Node 2
Node n
V2.1 TaobaoCDN
squid apache+php lighttpd 静态页面(包括php页面)、图片、描述 最初只有杭州和上海两个站点 现在发展到北京、广州、西安、天津、武
汉、济南等近10个站点 现在每天高峰期30G流量/秒
V2.1 session框架
Put/Get Data
Node 1
Node 2
Node n
V2.2 搜索引擎
垂直/水平 分割
AAPPPP
AAPPPP
Merge
Node1
Node2 ……
Node n
Col1
Node 1
淘宝功能架构图ppt课件

SPU搜索
…搜索
1
介绍上图中提到的各个系统缩写意思
1.UIC: 用户中心(User Interface Center),提供所有用户信息相关的读写服务,如基本信息,扩展信息,社区信息,买卖家信用等级等等。 淘宝现在有两类卖家B 和C,这是通过在用户身上打不同的标签实现的,我们这次的无名良品卖家也是通过在用户身上打特殊的标签来区别于淘宝 已有的B 和C 类卖家。淘宝的TOP 平台已经开放了大部分的UIC 接口。 2.IC:商品中心(Item Center),提供所有商品信息的读写服务,比如新发商品,修改商品,删除商品,前后台读取商品相关信息等等,IC 是 淘宝比较核心的服务模块,有专门的产品线负责这块内容,IC 相关接口在TOP 中占的比重也比较大。 3.SC:店铺中心(Shop Center),类似中文站的旺铺,不过淘宝的SC 不提供页面级应用,提供的都是些远程的服务化的接口,提供店铺相关信 息的读写操作。 如:开通店铺,店铺首页,及detail 页面店铺相关信息获取,如店内类目,主营,店铺名称,店铺级别:如普通,旺铺,拓展版, 旗舰版等等。装修相关的业务是SC 中占比重较大的一块,现在慢慢的独立为一个新的服务化中心DC(design center),很多的前台应用已经通过直 接使用DC 提供的服务化接口直接去装修相关的信息。 4.TC:交易中心(Trade Center),提供从创建交易到确认收货的正 向交易流程服务,也提供从申请退款到退款完成的反向交易流程服务. 5.PC:促销中心(Promotion Center),提供促销产品的订购,续费,查询,使用相关的服务化接口,如:订购和使用旺铺,满就送,限时秒 杀,相册,店铺统计工具等等。 6.Forest:淘宝类目体系:提供淘宝前后台类目的读写操作,以及前后台类目的关联操作。 7.Tair:淘宝的分布式缓存方案,和中文站的Memcached 很像。其实也是对memcached 的二次封装加入了淘宝的一些个性化需求。 8.TFS:淘宝分布式文件存储方案(TB File System),专门用户处理静态资源存储的方案,淘宝所有的静态资源,如图片,HTML 页面,文本 文件,页面大段的文本内容如:产品描述,都是通过TFS 存储的。 9.TDBM:淘宝DB 管理中心(TB DB Manager), 淘宝数据库管理中心,提供统一的数据读写操作。 10.RC:评价中心(Rate center),提供评价相关信息的读写服务,如评价详情,DSR 评分等信息的写度服务。 11.HSF:淘宝的远程服务调用框架和平台的Dubbo 功能类似,不过部署方式上有较大差异,所有的服务接口都通过对应的注册中心(config center)获取。
cdn 技术原理

cdn 技术原理CDN技术原理CDN(Content Delivery Network)即内容分发网络,是一种通过在网络的各个节点上分布服务器并缓存内容的技术,以提高用户访问网站的速度和稳定性。
CDN技术的原理是将内容分发到离用户最近的服务器节点,从而减少网络延迟和带宽消耗,提高用户访问体验。
CDN技术的核心原理是通过缓存和负载均衡来实现内容分发。
当用户请求访问一个网站时,CDN系统会根据用户的地理位置和网络状况,选择离用户最近的服务器节点来响应用户的请求。
这些服务器节点被称为边缘节点,它们分布在全球各个地区,与用户之间的距离更近,可以提供更快的响应速度。
CDN系统中的边缘节点通过缓存技术来存储和分发内容。
当用户第一次访问某个网站时,CDN系统会将网站的静态资源(如图片、CSS、JS文件等)复制到边缘节点的缓存中,并为之后的用户请求提供服务。
当用户再次访问该网站时,CDN系统会判断该资源是否在边缘节点的缓存中,如果存在,则直接返回缓存中的资源,从而节省了网络带宽和服务器的负载。
如果资源不在缓存中,CDN系统会从源服务器获取资源,并将其缓存到边缘节点上,以便之后的用户请求。
CDN系统还利用负载均衡技术来分发用户请求。
当一个边缘节点的负载过高时,CDN系统会将部分用户请求转发到其他负载较低的节点,以保证每个节点的负载均衡。
这样可以提高整个系统的稳定性和可靠性。
CDN技术还通过一些优化手段来进一步提升用户体验。
例如,CDN系统可以根据用户的设备类型和网络状况,选择合适的压缩算法和传输协议,以提高传输效率和速度。
同时,CDN系统还可以通过动态加速技术来实时优化网络路径,选择最优的传输路径,减少网络拥塞和丢包现象,提高用户访问的稳定性和质量。
总结来说,CDN技术通过缓存和负载均衡来实现内容分发,将内容分发到离用户最近的服务器节点,以提高用户访问网站的速度和稳定性。
CDN技术的原理和优化手段为用户提供了更快、更可靠的网络体验,已经成为现代互联网服务不可或缺的一部分。
CDN架构及原理

每个CDN节点由两部分组成:负载均衡设备和高速缓存服务器
3) 当需要进行sorlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;
4) 由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;
1) 作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。
2) 作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;
通过上图,我们可以了解到,使用了CDN缓存后的网站的访问过程变为:
1) 用户向浏览器提供要访问的域名;
2) 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
什么是CDN,CDN的应用和技术原理以及网络架构
章文嵩:Taobao海量图片存储与CDN系统-v2-系统架构师

淘宝CDN系统
CDN服务的图片规模
–约250T容量的原图 + 250T容量的缩略图 –约286亿左右的图片数,平均图片大小是17.45K –8K以下图片占图片数总量的61%,占存储容量的11%
CDN部署规模
–22个节点,部署在网民相当密集的中心城市(7月初) –每个节点目前处理能力在10G或以上 –CDN部署的总处理能力已到220G以上 –目前承载淘宝流量高峰时119G,含一些集团子公司的 流量
SnapShot
SnapShot
FAS980C C: Online Image D: Online Image
SnapShot
杭州网通 IDC
注:红框中设备是2006年的新增设备, 5 明年还得在原有的 NetApp 980C/R200 存储上增加 20TB 左右新的硬盘容量。
商用产品无法满足需求
本地缓存对象文件系统
文件定位
–内存hash做索引 –最多一次读盘
写盘方式
–Append方式写 –淘汰策略FIFO,主要考虑降低硬盘的写操作,没有必 要进一步提高Cache命中率,因为Image Server和 TFS在同一个数据中心
议程
一、系统全貌
二、Taobao图片存储系统--TFS 三、Image Server与Cache 四、CDN系统 五、低功耗服务器平台 六、经验
图片处理
从TFS存储中读取文件 将文件根据需要的尺寸进行缩放
–灵活,应用可以制定一些尺寸规则决定 –动态计算的成本大概是存储缩略图的十分之一
可根据需要将缩略图按一定质量压缩保存(75% ~94%)和锐化处理,通过配置文件设定
–权衡图片的效果与CDN传输的带宽 –低损压缩降低缩略图的体积(30~70%)
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
淘宝CDN系统架构
存储与架构分论坛上,淘宝网技术委员会主席,淘宝网核心工程师章文嵩向我们详细介绍了淘宝网图片处理与存储系统的架构。
章文嵩博士的演讲日程包括了淘宝的整个系统架构、淘宝图片存储系统架构,淘宝网独立开发的TFS集群文件系统,前端CDN系统以及淘宝网在节能服务器方面的应用和探索。
本文侧重介绍淘宝网图片处理与访问系统前端的CDN系统架构
从商用系统到自主研发
实际上,淘宝网对CDN系统的要求还是十分严格的,CDN服务的图片规模包括大约250T容量的原图和大约250T容量的缩略图总和;约286亿左右的图片数,平均图片大小是17.45K;8K以下图片占图片数总量的61%,占存储容量的11%
CDN的部署规模达到22个节点,部署在网民相当密集的中心城市(7月初),每个节点目前处理能力在10G或以上,CDN部署的总处理能力已到220G以上,目前承载淘宝流量高峰时119G,含一些集团子公司的流量。
淘宝网现有的CDN系统也完全是淘宝自己开发的,最早淘宝也应用过一段商用的CDN产品,选择Netscaler的CDN系统来解决海量小图片访问和读取的问题。
使用一段时间后,认为市场普遍的商用产品存在一些性能瓶颈、功能欠缺,并且性能不稳定。
面对淘宝网背后如此巨大的图片存储规模,商用系统在整个系统的规模、性能、可用性和可管理性都无法达到要求。
目前淘宝网自主开发的CDN系统,采用了全新的优化架构,包括CDN监控平台、全局流量调度系统支持基于节点负载状态调度和基于链路状态调度、CDN实时图片删除、CDN访问日志过滤系统、配置管理平台。
新旧CDN架构平台对比
淘宝网老架构的CDN平台应用Netscaler产品
图为淘宝网应用Netscaler产品的老架构的CDN平台,背后管理500TB容量,前端缓存空间约1TB左右,命中率较低,因此需要强大的调度策略。
淘宝网最新的CDN系统架构
上图为最新的CDN系统架构,全部由淘宝网自己开发,前面介绍过CDN系统的服务规模,包括约250T容量的原图+ 250T容量的缩略图,总计500TB图片存储容量;约286亿左右的图片数,平均图片大小是17.45K;8K以下图片占图片数总量的61%,占存储容量的11%,实际上带给CDN系统极大的挑战。
CDN部署规模达到22个节点,部署在网民相当密集(具体访问量)的中心城市(7月初),每个节点目前处理能力在10G或以上,部署的总处理能力已到220G以上,目前承载淘宝流量高峰时119G(含一些集团子公司的)。
新旧两代CDN架构的对比
上图是淘宝网对新旧2代CDN架构进行对比,新的CDN系统在流量分布均匀性上有了较大改进,所有的频道统一调度到128台squid,而不是将 squid按频道分组,可提高命中率2%
以上;扩展能力也有了较大提升,在一个VIP上新架构可以扩展到近100G的流量(当然要用万兆网卡);灵活性也有了较大提高,一致性Hash调度方法使得增加和删除服务器非常方便,只有1/(n+1)的对象需要迁移新的CDN架构。
除了在可维护性商稍微弱一点,其余的指标
全面超出商用的产品。
Squid节点的改进和优化
新的CDN在squid节点上也进行了一些改进和优化,包括:
在COSS存储系统基础上实现了TCOSS,FIFO加上按一定比例保留热点对象,支持1T大小的文件
Squid内存优化,一台Squid服务器若有一千万对象,大约节省1250M内存,更多的内存
可以用作memory cache。
用sendfile来发送缓存在硬盘上的对象,加上page cache,充分利用操作系统的特性
针对SSD硬盘,可以采用DIRECT_IO方式访问,将内存省给SAS/SATA硬盘做page cache
在Squid服务器上使用SSD+SAS+SATA混合存储,实现了类似GDSF算法,图片随着热点变化而迁移。
根据淘宝网的资料数据,SSD的存储成本大约是20¥每GB左右,SAS硬盘的存储成本约在
5-6¥每GB,SATA盘的每GB成本不到1¥。
随着对应用性能的要求提升,应用SSD是未来
的趋势,针对不同硬盘的存取特性进行优化是十分必要的。
目前在squid节点中的热点迁移采用了两种策略,一种是根据文件大小来定义迁移到哪种磁盘上去。
例如较大的文件存放在SATA磁盘,中等大小的文件放在SAS磁盘上,较小的文件存放在SSD磁盘。
下图是淘宝网进行自动分层迁移后的性能测试结果,测试环境包括1
块SSD硬盘+4块SAS硬盘+SATA硬盘。
访问负载状况如下:
第一种迁移策略按文件大小决定存储的磁盘类型,上图中:黑色为SATA,绿色为SSD,红色为SAS,4块SAS硬盘上的访问量总和超过SSD硬盘上的访问量
另外一种策略则是根据访问热度来决定,最热的文件存放在SSD盘,较热的存放在SAS盘,最冷的文件存放在SATA盘。
下图是淘宝网同样在1块SSD硬盘+4块SAS硬盘+SATA硬盘下的测试结果,访问负载状况如下:
第二种迁移策略按访问的热度来进行迁移,其中:黑色为SATA,绿色为SSD,红色为SAS;SSD 硬盘上的访问量是4块SAS硬盘上访问量之和的5倍以上,SAS和SATA的硬盘利用率低了很多。
节点的运行状况
淘宝网列出了两个代表性节点的运行性能状况。
节点一由32台DELL R710服务器构成,逻辑结构包括2LVS+32Haproxy+64Squid构成,于12月21日上线运行。
以下是该节点的运营状况:
节点二由30台DELL PowerEdge 2950服务器构成,逻辑结构包括:2LVS + 30Haproxy + 60 Squid,于2010年5月上线运行。
以下是该节点的理论运行状况:
淘宝CDN的发展方向
淘宝网未来的CDN发展方向针对研发、运维和CDN建设有不同的要求。
从CDN的研发和运维上,未来淘宝CDN将:
–针对教育网的CDN解决方案,广大校园用户将能体会到更高的访问速度和性能
–动态页面加速,节点间应用级路由
–持续提高节点性能(应用软件、操作系统等)
–优化GTM全局调度系统
–持续提高CDN系统可运维性,完善CDN内容管理系统
此外,淘宝CDN建设的思路也有一些调整和改变,建设思路正在转向“部署更多的小节点,尽可能离用户近一些”的方向,同时会更加强调定制化和快速部署。