java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2329|回复: 0

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66345

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

    发表于 2017-3-3 20:37:17 | 显示全部楼层 |阅读模式
    4.4 内容分发网络
    7 R6 i+ O) `5 b: w$ G9 C0 jCDN通过将网络内容发布到靠近用户的边缘节点,使不同地域的用户在访问相* S9 r8 }' X3 t5 Y5 S
    同网页时可以就近获取。这样既可以减轻源服务器的负担,也可以减少整个网络中
    4 w# o# Y) j: ?) {; s. s! {的流量分布不均的情况,进而改善整个网络性能。所谓的边缘节点是CDN服务提供
    , ^: i7 ~- e. y% s- a* i商经过精心挑选的距离用户非常近的服务器节点,仅“一跳”(Single Hop)之遥。用
    0 S4 i) ]( K! @1 j' E! j: a, u9 P9 s户在访问时就无需再经过多个路由器,大大减少访问时间。
    ; z6 @' I7 I( S从图4-9可以看出,DNS在对域名解析时不再向用户返回源服务器的IP,而是返3 i; C6 ]  N! K0 P) d7 e; v% V
    回了由智能CDN负载均衡系统选定的某个边缘节点的IP。用户利用这个IP访问边缘节# s+ G" {6 E1 d: k
    点,然后该节点通过其内部DNS解析得到源服务器IP并发出请求来获取用户所需的页; w3 c" U& U( s. l
    面,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取,2 K' s/ B' v% b0 S( c
    而不需要每次都访问源服务器。
    6 t: z7 z7 E; k. O+ K. t2 K图 4-9 用户访问CDN的整体流程  I$ ?6 J, j2 o
    4.4.1 CDN架构
    . f3 z5 L+ u: x: ?! z淘宝CDN系统用于支持用户购物,尤其是“双11”光棍节时的海量图片请求。如
    9 p* m* F0 Y- x; [2 `- p图4-10所示,图片存储在后台的TFS集群中,CDN系统将这些图片缓存到离用户最近
    / M, L3 w8 G$ H的边缘节点。CDN采用两级Cache:L1-Cache以及L2-Cache。用户访问淘宝网的图片3 v/ c4 z  w, G7 b* S7 p; y/ e5 M
    时,通过全局调度系统(Global Load Balancing)调度到某个L1-Cache节点。如果L1-2 k6 s( E. q! r7 X( p  a
    Cache命中,那么直接将图片数据返回用户;否则,请求L2-Cache节点,并将返回的* R# l! D  ?: N& F, F
    图片数据缓存到L1-Cache节点。如果L2-Cache命中,直接将图片数据返回给L1-Cache$ R) e1 Z$ @# _% `4 O* |
    节点;否则,请求源服务器的图片服务器集群。每台图片服务器是一个运行着Nginx; W3 R6 \( h1 w/ |
    的Web服务器,它还会在本地缓存图片,只有当本地缓存也不命中时才会请求后端的
    ; E; p( F, J( ]* s3 I, GTFS集群,图片服务器集群和TFS集群部署在同一个数据中心内。
    . @( u& `3 r/ }图 4-10 淘宝网CDN整体架构) O# u' D# V7 U7 L$ j- `1 m4 ?0 r" s# L
    对于每个CDN节点,其架构如图4-11所示。从图中可以看出,每个CDN节点内
    7 |+ y6 W% C3 Z8 p/ m部通过LVS+Haproxy的方式进行负载均衡。其中,LVS是四层负载均衡软件,性能  B+ Q1 x1 k2 J& u) E( {
    好;Haproxy是七层负载均衡软件,能够支持更加灵活的负载均衡策略。通过有机结
    - O$ ^0 p2 [) S" ?7 O5 b合两者,可以将不同的图片请求调度到不同的Squid服务器。
    , S) z( K* w5 R( I0 @6 R图 4-11 淘宝网单个CDN节点架构
    ' x. @- N+ V: WSquid服务器用来缓存Blob图片数据。用户的请求按照一定的策略发送给某台
    ! j) r( f5 ?* r% f8 _Squid服务器,如果缓存命中则直接返回;否则,Squid服务器首先会请求源服务器获
    # P; d4 \7 c# D取图片缓存到本地,接着再将图片数据返回给用户。数据通过一致性哈希的方式分
    7 s/ K2 k7 W$ ~7 c  o5 A3 ~* G布到不同的Squid服务器,使得增加/删除服务器只需要移动1/n(n为Squid服务器总/ P3 e4 S6 c; {" ?! ^
    数)的对象。5 q8 f1 K* J( u8 {# {& o
    相比分布式存储系统,分布式缓存系统的实现要容易很多。这是因为缓存系统
    * K+ P3 T2 `3 ^9 W" D+ ^不需要考虑数据持久化,如果缓存服务器出现故障,只需要简单地将它从集群中剔+ @$ v7 l' y: p. K1 b' q
    除即可。" q8 c8 ^! @# {$ |
    1.分级存储
    + D" B9 r3 b5 u0 N1 b" @* m: V分级存储是淘宝CDN架构的一个很大创新。由于缓存数据有较高的局部性,在! K# e/ ~* r' h+ s* P
    Squid服务器上使用SSD+SAS+SATA混合存储,图片随着热点变化而迁移,最热门的
    & i" q# i% N5 ?存储到SSD,中等热度的存储到SAS,轻热度的存储到SATA。通过这样的方式,能& h" p  ?# Q) b9 A4 ]' F* M
    够很好地结合SSD的性能和SAS、SATA磁盘的成本优势。0 W, T7 ~- B: \
    2.低功耗服务器定制6 _# k+ x$ k, N) y
    淘宝CDN架构的另外一个亮点是低功耗服务器定制。CDN缓存服务是IO密集型
    * c5 }* p* B' `$ [而不是CPU密集型的服务,因此,选用Intel Atom CPU定制低功耗服务器,在保证服
    1 s0 v  ~+ A8 Q务性能的前提下大大降低了整体功耗。8 z' o  w" o6 }4 V
    4.4.2 讨论7 G1 f. _8 u2 Y( ], n# {0 r
    由于Blob存储系统读访问量大,更新和删除很少,特别适合通过CDN技术分发
    ! a% @; D- ]  n* p: H9 t+ r到离用户最近的节点。CDN也是一种缓存,需要考虑与源服务器之间的一致性。源
    ) N. \, d1 q- J6 L8 c6 I7 e. E服务器更新或者删除了Blob数据,需要能够比较实时地推送到CDN缓存节点,否则: W: W4 p+ O( Y/ l5 r
    只能等到缓存中的对象被淘汰,而对象的有效期一般很长,热门对象很难被淘汰。! q, W* q& m8 j8 G
    另外,淘宝在研发CDN的过程中也发现,随着系统的规模越来越大,商用软件% n" T4 T1 X5 x4 t4 _: V$ j; M
    往往很难满足需求,通过采用开源软件与自主开发相结合的方式,可以有更好的可* L7 H, M& @5 p- [
    控性,系统也有更高的可扩展性。互联网技术的优势在于规模效应,随着规模越来  F; c( B* m! e
    越大,单位成本也会越来越低。4 e& n1 h% z# \& y2 l* @* @
    当然,随着硬件技术的发展,淘宝CDN架构也经历着变革。例如SSD价格快速( S% K, F7 }7 _$ [- c$ _7 }# n
    下降,使得SSD+SAS+SATA分级存储的优势不再明显,新上线的CDN缓存节点配备  D7 `# E9 E3 `
    的磁盘均为SSD
    & G0 q4 R4 ~5 i
    3 ~5 u% O4 V4 K$ J- V4 ?0 P: a
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-21 21:08 , Processed in 0.111769 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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