java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2411|回复: 0

《大规模分布式存储系统》 第4章 分布式文件系统【4.4】

[复制链接]
  • TA的每日心情
    开心
    2021-5-25 00:00
  • 签到天数: 1917 天

    [LV.Master]出神入化

    2078

    主题

    3736

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66680

    宣传达人突出贡献优秀版主荣誉管理论坛元老

    发表于 2017-3-3 20:37:17 | 显示全部楼层 |阅读模式
    4.4 内容分发网络
    % N4 T* _+ |, O3 nCDN通过将网络内容发布到靠近用户的边缘节点,使不同地域的用户在访问相+ C+ f! `! \) Y5 {. J! k
    同网页时可以就近获取。这样既可以减轻源服务器的负担,也可以减少整个网络中
    9 Q0 P( O# O2 q5 ]的流量分布不均的情况,进而改善整个网络性能。所谓的边缘节点是CDN服务提供  s. z& n4 i1 M0 y$ \% I
    商经过精心挑选的距离用户非常近的服务器节点,仅“一跳”(Single Hop)之遥。用+ X, W' w' r2 \5 ]: B& c
    户在访问时就无需再经过多个路由器,大大减少访问时间。$ l0 T& r# f: c3 b' J& M0 S4 \1 j
    从图4-9可以看出,DNS在对域名解析时不再向用户返回源服务器的IP,而是返) w4 q2 c" i) ~3 T
    回了由智能CDN负载均衡系统选定的某个边缘节点的IP。用户利用这个IP访问边缘节
    ' B, x; W  I* M7 D7 _点,然后该节点通过其内部DNS解析得到源服务器IP并发出请求来获取用户所需的页5 R$ ~: f4 a" A# s) U
    面,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取,
    ' D1 _4 j2 U; `而不需要每次都访问源服务器。! T4 z3 t7 Y" A
    图 4-9 用户访问CDN的整体流程; `3 M% h, G2 ^! r! _$ J
    4.4.1 CDN架构
    / ^" R6 @* B3 d2 S淘宝CDN系统用于支持用户购物,尤其是“双11”光棍节时的海量图片请求。如  G: i. |( J6 s: g& E& y
    图4-10所示,图片存储在后台的TFS集群中,CDN系统将这些图片缓存到离用户最近) W) M: ~. ]+ C
    的边缘节点。CDN采用两级Cache:L1-Cache以及L2-Cache。用户访问淘宝网的图片/ m0 |( i  d+ j( b) P
    时,通过全局调度系统(Global Load Balancing)调度到某个L1-Cache节点。如果L1-/ C8 n( N' y: Z6 S& _  y  o8 }
    Cache命中,那么直接将图片数据返回用户;否则,请求L2-Cache节点,并将返回的- x' B- A: S5 X0 A; n
    图片数据缓存到L1-Cache节点。如果L2-Cache命中,直接将图片数据返回给L1-Cache
      J2 T8 f3 U6 h2 N$ W节点;否则,请求源服务器的图片服务器集群。每台图片服务器是一个运行着Nginx# K6 n9 j: g* Y- k
    的Web服务器,它还会在本地缓存图片,只有当本地缓存也不命中时才会请求后端的8 I* X( V* x/ R7 K( j
    TFS集群,图片服务器集群和TFS集群部署在同一个数据中心内。
    / X% x8 T0 F" R& z图 4-10 淘宝网CDN整体架构
    ; Z9 q; K9 ]* ?4 K3 L. V对于每个CDN节点,其架构如图4-11所示。从图中可以看出,每个CDN节点内
    0 i% s; c' j3 \% Z部通过LVS+Haproxy的方式进行负载均衡。其中,LVS是四层负载均衡软件,性能1 C7 g$ |7 D5 U) P! f
    好;Haproxy是七层负载均衡软件,能够支持更加灵活的负载均衡策略。通过有机结
    8 @3 p- X- u+ g. p合两者,可以将不同的图片请求调度到不同的Squid服务器。- K# \$ Y4 L+ ]
    图 4-11 淘宝网单个CDN节点架构* i. D( b8 @6 `* c1 i# s
    Squid服务器用来缓存Blob图片数据。用户的请求按照一定的策略发送给某台
    ' |& ]+ J8 N) NSquid服务器,如果缓存命中则直接返回;否则,Squid服务器首先会请求源服务器获3 G2 y% S- K$ N( V4 H
    取图片缓存到本地,接着再将图片数据返回给用户。数据通过一致性哈希的方式分
    1 D$ Y/ l- J0 v# b6 W布到不同的Squid服务器,使得增加/删除服务器只需要移动1/n(n为Squid服务器总+ q; A$ ~* X4 Y/ |: x1 @
    数)的对象。
    4 `* c3 N  o) ~) Q相比分布式存储系统,分布式缓存系统的实现要容易很多。这是因为缓存系统
    $ {( W! {( L) V6 D不需要考虑数据持久化,如果缓存服务器出现故障,只需要简单地将它从集群中剔* z7 w1 a4 U  w8 E. ?* U
    除即可。
    0 W8 P2 K7 K6 C; l5 T2 i1.分级存储9 M$ O% W3 k$ f; c& w& ?
    分级存储是淘宝CDN架构的一个很大创新。由于缓存数据有较高的局部性,在# R/ P( T3 j4 {0 Y1 n
    Squid服务器上使用SSD+SAS+SATA混合存储,图片随着热点变化而迁移,最热门的4 b+ o1 C! \) H# y  ?
    存储到SSD,中等热度的存储到SAS,轻热度的存储到SATA。通过这样的方式,能
    3 o( N) ^1 }9 P2 w! N够很好地结合SSD的性能和SAS、SATA磁盘的成本优势。
    . E( D+ {* W6 s2.低功耗服务器定制
    ' b0 N# Z, j6 g( `3 \淘宝CDN架构的另外一个亮点是低功耗服务器定制。CDN缓存服务是IO密集型
    + [$ t- X3 N4 }7 `7 o5 b4 L而不是CPU密集型的服务,因此,选用Intel Atom CPU定制低功耗服务器,在保证服
    9 S3 Z9 g8 o. f" @" @# ]" k5 r务性能的前提下大大降低了整体功耗。* f0 m0 n3 Y: J; n  g% t0 j
    4.4.2 讨论+ {  f) ~; n( ?& g: O
    由于Blob存储系统读访问量大,更新和删除很少,特别适合通过CDN技术分发: J" j, E: P( L3 ~0 X2 }5 A
    到离用户最近的节点。CDN也是一种缓存,需要考虑与源服务器之间的一致性。源
    4 `! ]* W9 l4 n9 W3 |7 Z% Q6 |服务器更新或者删除了Blob数据,需要能够比较实时地推送到CDN缓存节点,否则( W2 {& o2 S. ]% f6 ^
    只能等到缓存中的对象被淘汰,而对象的有效期一般很长,热门对象很难被淘汰。
    & ~& Y) A: }2 n& v2 g另外,淘宝在研发CDN的过程中也发现,随着系统的规模越来越大,商用软件
    % d3 r7 S. |0 \' o( Q1 C$ e往往很难满足需求,通过采用开源软件与自主开发相结合的方式,可以有更好的可; N/ ]5 V7 G4 ?/ c
    控性,系统也有更高的可扩展性。互联网技术的优势在于规模效应,随着规模越来# m: p% h% \8 ~, ^% J
    越大,单位成本也会越来越低。9 U. s& x; _$ |) R: ?9 ?0 N
    当然,随着硬件技术的发展,淘宝CDN架构也经历着变革。例如SSD价格快速
    , a: i' L9 k( I& t% m* f; ~下降,使得SSD+SAS+SATA分级存储的优势不再明显,新上线的CDN缓存节点配备* b5 |, V2 I6 }/ A
    的磁盘均为SSD& E' O# j* w1 q- U6 E) v  k
      @, c4 {; K# M$ b( s5 r: [; ?
    . D3 \% r; Q# y( E  l" v/ _
    回复

    使用道具 举报

    您需要登录后才可以回帖 登录 | 立即注册

    本版积分规则

    QQ|Archiver|手机版|小黑屋|Java自学网

    GMT+8, 2025-3-13 23:41 , Processed in 0.946700 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

    快速回复 返回顶部 返回列表