初识CDN

什么是 CDN

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

一个简陋 CDN 模型

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

百度百科中 CDN 的介绍

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

  • 内容缓存设备:

    CDN
    nginx
    
  • 内容交换机:

    nginx
    
  • 内容路由器:

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

    • 不是必须的, 这里暂时不考虑.

基于分布式存储的 CDN 模型

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

已发表评论数()

相关站点

热门文章