java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2429|回复: 0

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

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

    [LV.Master]出神入化

    2096

    主题

    3754

    帖子

    6万

    积分

    管理员

    Rank: 9Rank: 9Rank: 9

    积分
    66788

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

    发表于 2017-3-3 20:37:17 | 显示全部楼层 |阅读模式
    4.4 内容分发网络
    ! w. j3 a6 k) lCDN通过将网络内容发布到靠近用户的边缘节点,使不同地域的用户在访问相
    6 B# d: z+ V  t# F同网页时可以就近获取。这样既可以减轻源服务器的负担,也可以减少整个网络中! C* `& `: u$ s
    的流量分布不均的情况,进而改善整个网络性能。所谓的边缘节点是CDN服务提供
      H9 j& i( T4 {) K" k商经过精心挑选的距离用户非常近的服务器节点,仅“一跳”(Single Hop)之遥。用  J8 v9 v9 j0 }' u3 g2 d. v
    户在访问时就无需再经过多个路由器,大大减少访问时间。. m# `, x4 Z* s# K, u/ L
    从图4-9可以看出,DNS在对域名解析时不再向用户返回源服务器的IP,而是返
    7 t' G6 M2 v% W& {7 [6 b  _* @回了由智能CDN负载均衡系统选定的某个边缘节点的IP。用户利用这个IP访问边缘节
    * O; c5 t0 }1 D. K4 E* J/ z点,然后该节点通过其内部DNS解析得到源服务器IP并发出请求来获取用户所需的页0 `, p% _: T! k) k: ?, V) X
    面,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取,
    ) m* h: E+ W+ b" U. U! v1 D- o而不需要每次都访问源服务器。0 L% _% j/ E2 g# Z- A/ G
    图 4-9 用户访问CDN的整体流程2 l7 p' k2 C9 Q0 u' C5 F
    4.4.1 CDN架构. d9 R7 j! j4 S9 m7 r" V
    淘宝CDN系统用于支持用户购物,尤其是“双11”光棍节时的海量图片请求。如
    9 V9 v  H5 X; b" L. T7 P/ M# U9 ~图4-10所示,图片存储在后台的TFS集群中,CDN系统将这些图片缓存到离用户最近
    1 A4 H- N+ N7 F- {* b1 S% g4 U/ \' n的边缘节点。CDN采用两级Cache:L1-Cache以及L2-Cache。用户访问淘宝网的图片
    * D7 {/ U3 t6 Z" I时,通过全局调度系统(Global Load Balancing)调度到某个L1-Cache节点。如果L1-
    ! ]; L# H1 z" c" C) J4 B0 v; PCache命中,那么直接将图片数据返回用户;否则,请求L2-Cache节点,并将返回的
    % R& d+ k2 w7 l图片数据缓存到L1-Cache节点。如果L2-Cache命中,直接将图片数据返回给L1-Cache
    8 |5 N! P' Y% n- y节点;否则,请求源服务器的图片服务器集群。每台图片服务器是一个运行着Nginx/ [: U  \8 F2 R; F+ J* U
    的Web服务器,它还会在本地缓存图片,只有当本地缓存也不命中时才会请求后端的
    % |$ `8 s$ D! ]$ i1 f9 G2 z# fTFS集群,图片服务器集群和TFS集群部署在同一个数据中心内。6 t" b) P# n2 n- @% Q
    图 4-10 淘宝网CDN整体架构
    2 J' ^- @6 u  K4 }/ D, Q( j对于每个CDN节点,其架构如图4-11所示。从图中可以看出,每个CDN节点内
    ( ?. F6 H1 X6 u& P2 \& ]部通过LVS+Haproxy的方式进行负载均衡。其中,LVS是四层负载均衡软件,性能5 t) j8 U3 k; z* T- t  g( s
    好;Haproxy是七层负载均衡软件,能够支持更加灵活的负载均衡策略。通过有机结% H6 k; u7 C4 G; X# ~$ ~
    合两者,可以将不同的图片请求调度到不同的Squid服务器。
    + O4 c$ W" O/ M图 4-11 淘宝网单个CDN节点架构
    # B+ I/ a, G) C$ q# a  D+ G) w' n( CSquid服务器用来缓存Blob图片数据。用户的请求按照一定的策略发送给某台
    4 g, w# O8 J" l4 _  _Squid服务器,如果缓存命中则直接返回;否则,Squid服务器首先会请求源服务器获# x8 \# U8 c3 p& t: [' Q8 K9 B( ~
    取图片缓存到本地,接着再将图片数据返回给用户。数据通过一致性哈希的方式分0 Y/ v/ _$ i3 R" L
    布到不同的Squid服务器,使得增加/删除服务器只需要移动1/n(n为Squid服务器总- S. N) [8 s; u
    数)的对象。
    ; w9 [9 q  c& L9 W. \8 h0 X相比分布式存储系统,分布式缓存系统的实现要容易很多。这是因为缓存系统
    6 n( |: E* R- h不需要考虑数据持久化,如果缓存服务器出现故障,只需要简单地将它从集群中剔
    ( I) D+ ~9 d8 e: ?/ ~除即可。. T: V5 E+ q$ |5 k  |9 J
    1.分级存储
    8 X# ~  a0 g; M7 \- I6 o分级存储是淘宝CDN架构的一个很大创新。由于缓存数据有较高的局部性,在7 X" P: ?- W3 S! p2 |# t
    Squid服务器上使用SSD+SAS+SATA混合存储,图片随着热点变化而迁移,最热门的
    0 \1 J; @1 s* H: C存储到SSD,中等热度的存储到SAS,轻热度的存储到SATA。通过这样的方式,能
    9 N2 ~# ]/ G/ R/ {! u0 m% @够很好地结合SSD的性能和SAS、SATA磁盘的成本优势。4 S9 K- I5 ^( u6 m
    2.低功耗服务器定制2 P" J+ j- P7 M1 d0 M- g* C
    淘宝CDN架构的另外一个亮点是低功耗服务器定制。CDN缓存服务是IO密集型, ]" `+ |( @3 }6 B/ l0 z9 d8 n% \
    而不是CPU密集型的服务,因此,选用Intel Atom CPU定制低功耗服务器,在保证服
    6 T* Z2 H# t+ N+ W* J务性能的前提下大大降低了整体功耗。
    + |; t0 G! s: j, R2 `4.4.2 讨论% Q3 ^9 |5 ?" m* t: v6 r' t: v
    由于Blob存储系统读访问量大,更新和删除很少,特别适合通过CDN技术分发
    0 R* w2 ?6 r7 L6 ~, l. W. I到离用户最近的节点。CDN也是一种缓存,需要考虑与源服务器之间的一致性。源
    1 v6 i! S8 O1 |/ V/ V6 e" ~服务器更新或者删除了Blob数据,需要能够比较实时地推送到CDN缓存节点,否则0 E6 O9 C5 O& v$ }* K- E
    只能等到缓存中的对象被淘汰,而对象的有效期一般很长,热门对象很难被淘汰。/ L: I; D7 J8 _* A
    另外,淘宝在研发CDN的过程中也发现,随着系统的规模越来越大,商用软件: {' y3 u) c! @7 b
    往往很难满足需求,通过采用开源软件与自主开发相结合的方式,可以有更好的可
    ; S7 Q  l* o' q& K: f2 Z. \/ G控性,系统也有更高的可扩展性。互联网技术的优势在于规模效应,随着规模越来
    + ^/ A0 a/ W# D: @" q7 |, R/ `越大,单位成本也会越来越低。- e# O' k4 g5 q0 Y4 M: v, }( j6 Y) v
    当然,随着硬件技术的发展,淘宝CDN架构也经历着变革。例如SSD价格快速
    2 `  J; g. L' N8 o. p( S7 s下降,使得SSD+SAS+SATA分级存储的优势不再明显,新上线的CDN缓存节点配备$ _; x2 S* g7 ~$ {
    的磁盘均为SSD. E" r1 ^. A2 k

    2 s6 X: O$ |2 C3 y# N
    2 e* C. V3 [% r/ I: O! m; w
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2025-4-1 14:18 , Processed in 0.111154 second(s), 29 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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