java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2183|回复: 0

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

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

    [LV.Master]出神入化

    2025

    主题

    3683

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66105

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

    发表于 2017-3-3 20:37:17 | 显示全部楼层 |阅读模式
    4.4 内容分发网络+ z* v. }3 Z! F8 w  ?
    CDN通过将网络内容发布到靠近用户的边缘节点,使不同地域的用户在访问相
    $ B2 [  S8 k! t同网页时可以就近获取。这样既可以减轻源服务器的负担,也可以减少整个网络中
      B/ [# c% r' J5 Z6 O# S% x6 |的流量分布不均的情况,进而改善整个网络性能。所谓的边缘节点是CDN服务提供
    , w1 Q$ u+ D& z8 K商经过精心挑选的距离用户非常近的服务器节点,仅“一跳”(Single Hop)之遥。用
    0 O) g0 S% a; A5 Q1 v户在访问时就无需再经过多个路由器,大大减少访问时间。
    , N9 V+ B) k. k5 \5 S从图4-9可以看出,DNS在对域名解析时不再向用户返回源服务器的IP,而是返
    4 \+ t/ Q0 b. f1 ~: w+ h5 ~回了由智能CDN负载均衡系统选定的某个边缘节点的IP。用户利用这个IP访问边缘节
    ' f% m9 M+ F, C7 E, J/ c) V' q( Z点,然后该节点通过其内部DNS解析得到源服务器IP并发出请求来获取用户所需的页
    % n6 |0 f5 d$ }面,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取,
      f  F2 g4 i# _! M而不需要每次都访问源服务器。
    : Q: H. R1 a" q8 n$ {2 G4 }8 {  I3 Y图 4-9 用户访问CDN的整体流程/ s$ c, u$ m. |# Q! G. f1 e" [- n  R, {
    4.4.1 CDN架构
    6 r0 x# O3 Z6 t6 }; I淘宝CDN系统用于支持用户购物,尤其是“双11”光棍节时的海量图片请求。如
    0 n6 g" T) E) r( u" X图4-10所示,图片存储在后台的TFS集群中,CDN系统将这些图片缓存到离用户最近9 y! F5 W5 v' G( p: n" u7 x
    的边缘节点。CDN采用两级Cache:L1-Cache以及L2-Cache。用户访问淘宝网的图片7 N, p7 t* @9 B# h7 }
    时,通过全局调度系统(Global Load Balancing)调度到某个L1-Cache节点。如果L1-' n, |" G- \, C: w8 F
    Cache命中,那么直接将图片数据返回用户;否则,请求L2-Cache节点,并将返回的
    7 T! u: v9 F& l6 m图片数据缓存到L1-Cache节点。如果L2-Cache命中,直接将图片数据返回给L1-Cache
    9 m2 L% c( t+ z1 p( V* n! U节点;否则,请求源服务器的图片服务器集群。每台图片服务器是一个运行着Nginx
    9 F$ r2 f7 l& w$ t& }. J4 l的Web服务器,它还会在本地缓存图片,只有当本地缓存也不命中时才会请求后端的% t* {$ B0 T- P1 v  N1 f$ i* ]
    TFS集群,图片服务器集群和TFS集群部署在同一个数据中心内。
    0 F7 I) w& m- ~9 b2 F- X图 4-10 淘宝网CDN整体架构5 l6 t+ W8 ~# ^( T
    对于每个CDN节点,其架构如图4-11所示。从图中可以看出,每个CDN节点内
    + V; n2 d. G4 T  ~& Z5 }8 O部通过LVS+Haproxy的方式进行负载均衡。其中,LVS是四层负载均衡软件,性能2 k3 j) Y5 |' Y% n
    好;Haproxy是七层负载均衡软件,能够支持更加灵活的负载均衡策略。通过有机结
    8 p5 E7 f# u! ]合两者,可以将不同的图片请求调度到不同的Squid服务器。- |& S, X" F# C- R% m
    图 4-11 淘宝网单个CDN节点架构: }( O3 u9 [: ~% T  c
    Squid服务器用来缓存Blob图片数据。用户的请求按照一定的策略发送给某台
    & I+ `* Q3 b9 y* k* y) gSquid服务器,如果缓存命中则直接返回;否则,Squid服务器首先会请求源服务器获2 X4 u2 J9 v9 D& [- N; o% @* e7 o
    取图片缓存到本地,接着再将图片数据返回给用户。数据通过一致性哈希的方式分6 ?/ d5 x+ U$ j7 g9 @+ l1 A! e  h& Q
    布到不同的Squid服务器,使得增加/删除服务器只需要移动1/n(n为Squid服务器总/ ^. u" r. k- H: o) p
    数)的对象。
    . C. o% y! Z/ y8 a, s' l: Q" P& U相比分布式存储系统,分布式缓存系统的实现要容易很多。这是因为缓存系统
    0 Q1 S  e, H$ c: W不需要考虑数据持久化,如果缓存服务器出现故障,只需要简单地将它从集群中剔# ?$ s' L2 r& B. T, x4 ~
    除即可。& F& y! J6 F; r
    1.分级存储
    3 E5 m( e% J* E2 c! O: p分级存储是淘宝CDN架构的一个很大创新。由于缓存数据有较高的局部性,在5 Z* I+ x! l% w! r# [9 Z. m* @4 P
    Squid服务器上使用SSD+SAS+SATA混合存储,图片随着热点变化而迁移,最热门的# K4 w8 c. z! ?6 r
    存储到SSD,中等热度的存储到SAS,轻热度的存储到SATA。通过这样的方式,能  v5 ^2 B/ R5 P' Z9 h. ~6 W; K
    够很好地结合SSD的性能和SAS、SATA磁盘的成本优势。, C" s& i4 Q5 c" q, u. w, X6 U, @
    2.低功耗服务器定制
    ) R1 u) i+ t9 b+ Y0 T# U3 N淘宝CDN架构的另外一个亮点是低功耗服务器定制。CDN缓存服务是IO密集型, ?$ u$ G8 A2 z: d  l1 w8 D' a. T
    而不是CPU密集型的服务,因此,选用Intel Atom CPU定制低功耗服务器,在保证服
    4 N# J5 }" Q! [9 Z& j8 K, z务性能的前提下大大降低了整体功耗。
    0 |# D% I" Q7 [, ^/ r2 f4 h4.4.2 讨论
    + W8 r2 P7 \. v. T3 v由于Blob存储系统读访问量大,更新和删除很少,特别适合通过CDN技术分发
    ( w8 ]3 W0 e9 y/ H" S到离用户最近的节点。CDN也是一种缓存,需要考虑与源服务器之间的一致性。源
    6 i4 x- s- q1 G# \服务器更新或者删除了Blob数据,需要能够比较实时地推送到CDN缓存节点,否则
    8 @! G" ~& T- W8 f+ N2 Q只能等到缓存中的对象被淘汰,而对象的有效期一般很长,热门对象很难被淘汰。
    , b. b; K* i( [6 Z另外,淘宝在研发CDN的过程中也发现,随着系统的规模越来越大,商用软件/ z) s4 q$ ?( a" [
    往往很难满足需求,通过采用开源软件与自主开发相结合的方式,可以有更好的可
    ' i: ~' t( Z0 l7 u4 p控性,系统也有更高的可扩展性。互联网技术的优势在于规模效应,随着规模越来: K% t7 f4 {2 Y& B( e
    越大,单位成本也会越来越低。" h# a4 ?) t/ J/ f% y1 ?8 P
    当然,随着硬件技术的发展,淘宝CDN架构也经历着变革。例如SSD价格快速
    5 ~9 o6 ~% a4 ]3 }; B5 |7 g) B下降,使得SSD+SAS+SATA分级存储的优势不再明显,新上线的CDN缓存节点配备
    / |, L" b" e8 a, M的磁盘均为SSD
    + F  w3 g! b3 e# r" w9 \0 h
    7 m( r6 P7 [2 m: @
    ( }4 l/ {  p  |0 V7 F: P3 W
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-7 06:52 , Processed in 0.170817 second(s), 30 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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