java自学网VIP

Java自学网

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2330|回复: 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 内容分发网络# F7 U. C5 l0 M5 p( n4 v
    CDN通过将网络内容发布到靠近用户的边缘节点,使不同地域的用户在访问相5 x* m, t( V6 t6 x; D
    同网页时可以就近获取。这样既可以减轻源服务器的负担,也可以减少整个网络中
    : _* z+ o; b! Q( s2 K; }# ?的流量分布不均的情况,进而改善整个网络性能。所谓的边缘节点是CDN服务提供7 a& C/ [2 W  v+ h
    商经过精心挑选的距离用户非常近的服务器节点,仅“一跳”(Single Hop)之遥。用
    " ~: `) E8 _: \0 V户在访问时就无需再经过多个路由器,大大减少访问时间。
    " _3 N% U/ [, R9 n& U( v8 _: i& l  G从图4-9可以看出,DNS在对域名解析时不再向用户返回源服务器的IP,而是返
    6 `4 ?/ y9 n' H2 v回了由智能CDN负载均衡系统选定的某个边缘节点的IP。用户利用这个IP访问边缘节
    : w3 B' s* @. ^) l点,然后该节点通过其内部DNS解析得到源服务器IP并发出请求来获取用户所需的页; w! j% X# d1 r! J
    面,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取,0 z+ q8 w9 v4 z' k  z! U6 L
    而不需要每次都访问源服务器。" B* R8 r+ h1 r; d3 r
    图 4-9 用户访问CDN的整体流程* q' S- M: ~; G! c2 `" w
    4.4.1 CDN架构
    4 v0 E4 g% K+ k  K. K淘宝CDN系统用于支持用户购物,尤其是“双11”光棍节时的海量图片请求。如
    . B# A4 }. F3 o  N+ e图4-10所示,图片存储在后台的TFS集群中,CDN系统将这些图片缓存到离用户最近- C$ v; C7 K, {
    的边缘节点。CDN采用两级Cache:L1-Cache以及L2-Cache。用户访问淘宝网的图片
    6 i9 z. M3 a& d5 {2 K9 F" O/ K0 W时,通过全局调度系统(Global Load Balancing)调度到某个L1-Cache节点。如果L1-
    0 p; d2 M  K, @3 L2 F/ cCache命中,那么直接将图片数据返回用户;否则,请求L2-Cache节点,并将返回的
    : b( ~+ O" n# {  O5 B图片数据缓存到L1-Cache节点。如果L2-Cache命中,直接将图片数据返回给L1-Cache8 a; w; L0 v2 q/ N% U9 w
    节点;否则,请求源服务器的图片服务器集群。每台图片服务器是一个运行着Nginx
    7 P; w  {" s6 k) t& c的Web服务器,它还会在本地缓存图片,只有当本地缓存也不命中时才会请求后端的
    : T" a2 B! X1 U. @TFS集群,图片服务器集群和TFS集群部署在同一个数据中心内。
    ' ~. k1 f# @5 t图 4-10 淘宝网CDN整体架构
    + A9 Z- `$ W; O1 h5 l对于每个CDN节点,其架构如图4-11所示。从图中可以看出,每个CDN节点内' @! ]* j  j$ R3 E% e4 ]8 t
    部通过LVS+Haproxy的方式进行负载均衡。其中,LVS是四层负载均衡软件,性能
    8 W- {6 Y) ~2 m& ?! i! w; R好;Haproxy是七层负载均衡软件,能够支持更加灵活的负载均衡策略。通过有机结+ g9 @) e& s- b# y  f
    合两者,可以将不同的图片请求调度到不同的Squid服务器。
      \! C) q0 a9 {- W4 \图 4-11 淘宝网单个CDN节点架构
    $ q" z* ~9 ~: z: T: D5 [' {9 ASquid服务器用来缓存Blob图片数据。用户的请求按照一定的策略发送给某台
    5 c6 @$ D  l1 ?" u6 U6 Y; SSquid服务器,如果缓存命中则直接返回;否则,Squid服务器首先会请求源服务器获
    5 {, t3 n! U5 Z2 J3 H取图片缓存到本地,接着再将图片数据返回给用户。数据通过一致性哈希的方式分: u% x% Q6 j' i9 F2 ]! Z( E- z% N3 a, E
    布到不同的Squid服务器,使得增加/删除服务器只需要移动1/n(n为Squid服务器总- j4 q  e' G' a
    数)的对象。& v; g0 T& N" K; ?  D1 L6 Y
    相比分布式存储系统,分布式缓存系统的实现要容易很多。这是因为缓存系统
    6 B9 l) W3 Z) i1 R. u不需要考虑数据持久化,如果缓存服务器出现故障,只需要简单地将它从集群中剔1 |5 `7 f, B3 C2 [/ Q+ o
    除即可。; `+ Q: K' @6 p$ D  @( E, D$ Z
    1.分级存储
    * ?* _% W3 `" k9 I$ a) T分级存储是淘宝CDN架构的一个很大创新。由于缓存数据有较高的局部性,在
    ( I' V6 C1 \  r$ n# aSquid服务器上使用SSD+SAS+SATA混合存储,图片随着热点变化而迁移,最热门的
    ; `. i" T$ Z1 O! S" L( i7 [6 o存储到SSD,中等热度的存储到SAS,轻热度的存储到SATA。通过这样的方式,能% B, s- |) O* y5 j2 ]( A
    够很好地结合SSD的性能和SAS、SATA磁盘的成本优势。
    % ]# y) p" S) b- X) @2.低功耗服务器定制. g6 b( [1 _9 y1 c* d
    淘宝CDN架构的另外一个亮点是低功耗服务器定制。CDN缓存服务是IO密集型
    : Z/ A5 Z1 {/ s, y2 H4 Q而不是CPU密集型的服务,因此,选用Intel Atom CPU定制低功耗服务器,在保证服8 J% Y- f/ Z+ I
    务性能的前提下大大降低了整体功耗。# a- a4 q" M) ~; z6 x7 i8 g
    4.4.2 讨论
    ) ^* C! k. `5 i6 \0 r由于Blob存储系统读访问量大,更新和删除很少,特别适合通过CDN技术分发
    # e8 w- `$ Q2 d3 h% h到离用户最近的节点。CDN也是一种缓存,需要考虑与源服务器之间的一致性。源
    , j+ W& W' H7 Q; V! f/ D- O服务器更新或者删除了Blob数据,需要能够比较实时地推送到CDN缓存节点,否则  l2 ~" V9 j6 v: g8 ?0 u
    只能等到缓存中的对象被淘汰,而对象的有效期一般很长,热门对象很难被淘汰。
    8 L+ t+ p5 A9 z  S另外,淘宝在研发CDN的过程中也发现,随着系统的规模越来越大,商用软件
    1 w2 m0 S; w! ^' `7 G# w  }) @  q往往很难满足需求,通过采用开源软件与自主开发相结合的方式,可以有更好的可, Q4 l' f% S: ^0 `4 a7 ^) e; z
    控性,系统也有更高的可扩展性。互联网技术的优势在于规模效应,随着规模越来
    ' n: x; Y8 |; N越大,单位成本也会越来越低。8 {. A6 ~8 ?& e
    当然,随着硬件技术的发展,淘宝CDN架构也经历着变革。例如SSD价格快速
    ) v# |. v" ]7 O2 z0 N下降,使得SSD+SAS+SATA分级存储的优势不再明显,新上线的CDN缓存节点配备
    ' {% q. N+ z0 e的磁盘均为SSD
    5 c2 V" {: e3 G# ~$ y+ C
    3 N5 S9 X* p% V  F& u9 b  z
    , C  g" D/ o2 Y
    回复

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-11-21 21:11 , Processed in 0.426877 second(s), 27 queries .

    Powered by Javazx

    Copyright © 2012-2022, Javazx Cloud.

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