1.    描述

CDN通过将网络内容发布到靠近用户的边缘节点,使不同地域的用户在访问相同网页时可以就近获取,这样既可以减轻源服务器的负担,也可以减少整个网络中的流量分布不均的情况,进而改善整个网络性能,所谓的边缘节点是CDN服务提供商经过精心挑选的距离用户非常近的服务器节点,仅一跳之遥。用户在访问时就无需再经过多个路由器,大大减少访问时间。

如上图,DNS在对域名解析时不再向用户返回源服务器的IP,二是返回了由只能CDN负载均衡系统选定的某个边缘节点IP。用户利用这个IP访问边缘节点,然后该节点通过内部DNS解析得到源服务器IP并发出请求来获取用户所需的页面,如果请求成功,边缘节点会将页面缓存下来,下次用户访问时可以直接读取,而不需要每次都访问源服务器。

2.    CDN架构

a)     概述

淘宝CDN系统用于支持用户购物,尤其是“双11”时海量的图片请求。如下图,图片存储在后台的TFS集群中,CDN系统将这些图片缓存到离用户最近的边缘节点。CDN采用量级Cache:L1-Cache和L2-Cache。用户访问淘宝网的图片时,通过全局调度系统调度到某个L1-Cache节点。如果L1-Cache命中,NameServer直接将用户数据返回给用户;否则,请求L2-Cache节点并将返回的图片数据缓存到L1-Cache节点,如果L2-Cache命中,直接将图片数据返回给L1-Cache节点;否则请求源服务器的图片服务器集群。每台图片服务器是一个运行着Nginx的Web服务器,它还会在本地缓存图片,只有当本地缓存也不命中是才会请求后端的TFS集群,图片服务器集群和TFS集群部署在同一个数据中心内。

对于每一个CDN节点,其架构如下图。每个CDN节点内部通过LVS+Haproxy的方式运行负载均衡。其中,LVS是四层负载均衡软件,性能好;Haproxy是七层负载均衡软件,能够支持更加灵活的负载均衡策略,通过有机结合两者,可以将不同的图片请求调度到不同的Squid服务器。

Squid服务器用来缓存Blob图片数据。用户的请求按照一定的策略发送给某台Squid服务器,如果缓存命中则返回;否则,Squid服务器首先会请求源服务器获取图片缓存到本地,接着再将图片数据返回给用户。数据通过一致性哈希的方式分布到不同的Squid服务器,使得增加/删除服务器只需要移动1/n的对象。

相比分布式存储系统,分布式缓存系统更容易实现,因为缓存系统不需要考虑数据持久化,如果缓存服务器出现故障,简单地将其剔除即可。

b)     分级存储

分级存储是淘宝CDN架构很大的创新,由于缓存数据有较高的局部性,在Squid服务器上使用SSD+SAS+SATA混合存储,图片随着热点变化而迁移,最热门的存储到SSD,中等热度存储到SAS,轻热度存储到SATA。

c)      低功耗服务器定制

淘宝CDN架构的另外一个亮点是低功耗服务器的定制,CDN缓存服务是IO密集型而非CPU密集型,因此,选用IntelAtom CPU定制低功耗服务器,在保证服务性能的前提下大大降低了整体功耗。

3.    讨论

由于Blob系统读访问量大,更新和删除很少,特别适合通过CDN技术分发到利用户最近的节点,CDN也是一种缓存,需要考虑与源服务器之间的一致性。源服务器更新或者删除了Blob数据,需要能够比较实时地推送到CDN缓存节点,否则只能等到缓存中的对象被淘汰,而对象的有效期一般很长,热点对象很难被淘汰。

欢迎扫描二维码关注微信公众号 深度学习与数学   [每天获取免费的大数据、AI等相关的学习资源、经典和最新的深度学习相关的论文研读,算法和其他互联网技能的学习,概率论、线性代数等高等数学知识的回顾]

分布式存储系统学习笔记(二)—分布式文件系统(4)—内容分发网络(CDN)相关推荐

  1. 大规模分布式存储系统 - 读书笔记

    文章目录 大规模分布式存储系统(原理解析与架构实战OceanBase) 第1章 概述 1.1 分布式存储概述 1.2 分布式存储分类 第一篇 基础篇 第2章 单机存储系统 2.1 硬件基础 2.1.1 ...

  2. Hadoop学习笔记—13.分布式集群中节点的动态添加与下架

    Hadoop学习笔记-13.分布式集群中节点的动态添加与下架 开篇:在本笔记系列的第一篇中,我们介绍了如何搭建伪分布与分布模式的Hadoop集群.现在,我们来了解一下在一个Hadoop分布式集群中,如 ...

  3. ROS学习笔记二:探索ROS文件系统

    ROS学习笔记二:探索ROS文件系统 ROS针对自己文件的特性,具有一些自己的工具命令,当针对ROS文件进行操作的时候是非常方便的.这些命令和ubuntu系统原有的命令相似但却不同,单独针对ROS文件 ...

  4. 使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 【十二】部署第一台 AFS 服务器 1

    使用AFS, Active Directory和SSSD搭建用于集成电路设计的分布式存储系统 [十二]部署第一台 AFS 服务器 1 预备条件检查清单 第一台服务器上将要部署和运行的服务 ptserv ...

  5. 华清远见fs4412开发板学习笔记(二)

    fs4412开发板学习笔记(二) Linux 1.终端操作 1)打开终端 ctrl + alt + t 2)放大 ctrl + shift + "+" 3)缩小 ctrl + &q ...

  6. qml学习笔记(二):可视化元素基类Item详解(上半场anchors等等)

    原博主博客地址:http://blog.csdn.net/qq21497936 本文章博客地址:http://blog.csdn.net/qq21497936/article/details/7851 ...

  7. [转载]dorado学习笔记(二)

    原文地址:dorado学习笔记(二)作者:傻掛 ·isFirst, isLast在什么情况下使用?在遍历dataset的时候会用到 ·dorado执行的顺序,首先由jsp发送请求,调用相关的ViewM ...

  8. PyTorch学习笔记(二)——回归

    PyTorch学习笔记(二)--回归 本文主要是用PyTorch来实现一个简单的回归任务. 编辑器:spyder 1.引入相应的包及生成伪数据 import torch import torch.nn ...

  9. tensorflow学习笔记二——建立一个简单的神经网络拟合二次函数

    tensorflow学习笔记二--建立一个简单的神经网络 2016-09-23 16:04 2973人阅读 评论(2) 收藏 举报  分类: tensorflow(4)  目录(?)[+] 本笔记目的 ...

  10. Scapy学习笔记二

    Scapy学习笔记二 Scapy Sniffer的用法: http://blog.csdn.net/qwertyupoiuytr/article/details/54670489 Scapy Snif ...

最新文章

  1. SpringCloud系列七:Hystrix 熔断机制(Hystrix基本配置、服务降级、HystrixDashboard服务监控、Turbine聚合监控)...
  2. 【bzoj2186】[Sdoi2008]沙拉公主的困惑 欧拉函数
  3. 微信/QQ 中已停止访问该网页的处理办法
  4. ElasticSearch插件安装
  5. Fedora 33更新异常:Errors during downloading metadata for repository ‘updates‘
  6. (chap1 网络基础知识)地址
  7. SAP UI5 初学者教程之三:开始接触第一个 SAP UI5 控件 试读版
  8. navicat怎么导出mysql_navicat怎么把数据库导出
  9. adf时间作用域_ADF:在任务流终结器中支持bean作用域
  10. MyEclipes 2016 CI 6 安装
  11. Int VS Integer
  12. XML校验 黄色惊叹号!!!
  13. wx.getUserProfile is not a function
  14. sir模型 python_SIR传染病模型(附Python代码)
  15. 算法 - 程序的灵魂
  16. 看图四级作文 快速技术的发展计算机,【英语四级看图作文范文11篇】_英语四级看图作文范文大全_2021年英语四级看图作文范文_东城教研...
  17. linux锐捷认证成功无法上网,主编传授win10系统锐捷认证成功但是却无法上网的方法...
  18. HTML div表格排版,畅谈DIV排版和table排版的区别
  19. 小技巧之统计代码行数
  20. 电驴服务器搜索文件排序,【图文教程】搜索功能使用全解

热门文章

  1. STM32寄存器操作端口模式SDA_OUT()/SDA_IN()
  2. Python中文转拼音代码(支持全拼和首字母缩写)
  3. js多物体任意值运动
  4. javascript js string.Format()收集
  5. notepad++自动补全括号
  6. Apache Mina的用法
  7. 如何布局电子商务网站
  8. 响应式网站关于资源跨域问题
  9. .Net Core报“‘GB2312‘ is not a supported encoding name. For information on defining a custom encod”的错误
  10. Windows下安装和配置Java JDK