初识CDN

loop_0 · 2020-06-03 11:17:50 · 4372 次点击 · 预计阅读时间 2 分钟 · 大约8小时之前 开始浏览    
这是一个创建于 2020-06-03 11:17:50 的文章,其中的信息可能已经有所发展或是发生改变。

什么是CDN

  • CDN的全称Content Delivery Network,即 内容分发网络.
  • 简单来讲CDN是用户到源服务器之间的一层缓存层, 缓存一些静态资源, 静态的web页面, 流媒体等, 提高访问速度, 降低源服务器负载(网络资源, 硬件资源), 集体抗D.D.O.S(高可用)。

一个简陋CDN模型

  • Nginxweb反向代理服务器, 一般用于web服务器负载均衡, 具有静态资源缓存的功能, 此处我们重点利用这个功能去搭建我们的CDN
    • cnd-nginx.png
    • 如图所示, 我们使用nginx方向代理我们的静态资源源服务器, 在使用更多的节点去反向代理 代理源服务器的那个nginx, 依次类推形成一个树形结构, 树的叶子节点就是我们的边缘节点, 此时我们再实现一个域名解析服务器, 需要特殊处理一下当请求我们源服务器的域名时, 返回一个边缘节点中与用户之间网络最快, 负载最小的节点IP, 我认为这就可以算是一个CDN, 但是非常简陋, 问题很多, 例如:网络中有几个缓存节点(nginx), 就会有几份缓存数据, 过于冗余, 负载不均衡, 边缘节点的负载可能会大些, 1/2层的节点可能负载会小很多等。

百度百科中CDN的介绍

  • CDN网络中包含的功能实体包括内容缓存设备、内容交换机、内容路由器、CDN内容管理系统等组成。
  • 内容缓存设备:

    • 百度百科定义: 内容缓存为CDN网络节点,位于用户接入点,是面向最终用户的内容提供设备,可缓存静态Web内容和流媒体内容,实现内容的边缘传播和存储,以便用户的就近访问.
    • 在上述模型中, 就是nginx节点
  • 内容交换机:

    • 百度百科定义: 处于用户接入集中点,可以均衡单点多个内容缓存设备的负载,并对内容进行缓存负载平衡及访问控制.
    • 因为上述模型中有几个nginx节点就可能有几份缓存数据, 所以在上述模型中没有体现, 我们暂时跳过。
  • 内容路由器:

    • 百度百科定义: 内容路由器负责将用户的请求调度到适当的设备上。内容路由通常通过负载均衡系统来实现,动态均衡各个内容缓存站点的载荷分配,为用户的请求选择最佳的访问站点,同时提高网站的可用性。内容路由器可根据多种因素制定路由,包括站点与用户的临近度、内容的可用性、网络负载、设备状况等。负载均衡系统是整个CDN的核心。负载均衡的准确性和效率直接决定了整个CDN的效率和性能。
    • 在上述模型中就是我们实现的域名解析服务器
    • 百度百科这里提到了, 内容路有器可以根据多种路由指定路由规则, 其中包含一个内容的可用性, 我查阅了很多资料, 这个内容路由器的实现一般都是通过DNS, 或者更专业的叫法叫 智能DNS, 虽然不知道智能DNS的具体流程, 但是其本身终归还是域名解析服务, 单纯通过域名是无法判断内容可用性的 , 因为连要访问的资源是什么都不知道, 又怎么能判断其有效性呢? 百度百科这里或许是指的非智能DNS的另一种实现, 也可能是我的理解错误。
  • CDN内容管理系统:
    • 不是必须的, 这里暂时不考虑.

基于分布式存储的CDN模型

  • 上述那个简陋的CDN模型中, 我们提到的缺点就是数据过于冗余, 负载不均衡等, 此时我们可以将我们的内容缓存设备的策略更换一下, 使用分布式的存储(不太了解), 再结合负载均衡, 以及我们的集群本身就是缓存层, 我天马行空的这样想象到, 我们的分布式的缓存数据应该是这样的:
  • cdn-cluster.png
  • 首先, 会根据数据热度来决策在整个缓存层的副本数量, 所以我们缓存副本的数量不是1 2 3..., 很可能是0.7+0.7+0.5的关系, (ps: 这可能也是我们在访问某些视频网站时, 一些热门的视频播放反而加载很快, 而特别冷门的视频却特别慢), 这也是一种负载均衡.
  • 然后, 是内容路由, 缓存层节点之间的内容路由, 同样需要负载均衡.
  • 我认为以上两点是我们之前跳过的内容交换机解决的问题, 内容缓存节点会缓存哪些数据, 以及缓存层内容缓存节点之间内部如何路由, 都是内容交换机来决策.

有疑问加站长微信联系(非本文作者))

入群交流(和以上内容无关):加入Go大咖交流群,或添加微信:liuxiaoyan-s 备注:入群;或加QQ群:692541889

4372 次点击  
加入收藏 微博
1 回复  |  直到 2020-06-03 22:01:26
colinrs
colinrs · #1 · 5年之前

CDN技术详解这本书不错

添加一条新回复 (您需要 登录 后才能回复 没有账号 ?)
  • 请尽量让自己的回复能够对别人有帮助
  • 支持 Markdown 格式, **粗体**、~~删除线~~、`单行代码`
  • 支持 @ 本站用户;支持表情(输入 : 提示),见 Emoji cheat sheet
  • 图片支持拖拽、截图粘贴等方式上传