CDN-内容分发网络

来自于今日头条:

https://www.toutiao.com/a6531234862563590663/?tt_from=weixin&utm_campaign=client_share&timestamp=1520761010&app=news_article&utm_source=weixin&iid=24063074966&utm_medium=toutiao_android&wxshare_count=1

CDN,中文名称是内容分发网络,可以用来分发直播、点播、网页静态文件、小文件等等,几乎我们日常用到的互联网产品都是有CDN在背后提供支持。现在有很多公司在提供云服务,这是在CDN的基础上,提供了更丰富的一站式接入的云服务能力。例如PP云服务为客户提供直播、点播、静态文件、短视频等多种云服务和CDN加速能力

以直播为例:

直播的主播通过自己的手机把“视频图”发给了观众,观众收到后,在APP里把每个图显示出来,形成了视频。现实的情况是,一个主播不可能只为一个观众服务,可能有很多个观众需要观看,如果是3个观众,那么就会是这样了:

图里的方式是主播把相同的数据同时传给3个不同的观众,这当然是非常愚蠢的方式,同样的数据被传了3次,主播端的瓶颈非常明显,比如有1000个观众同时观看的时候,主播端根本无法承担这么多的数据传输。

第一台服务器出现了

所以呢,很容易想到的方法是,主播把数据传给一个中间服务器,由服务器充当把数据发给不同用户的角色,也就是这样(图片1-6我们先用“数据”代替了):

这样的话,就用了性能强大的服务器来代替了主播传输数据的工作,给服务器提出的要求是:

1、能够接收来自主播的传输数据

2、能够把数据下发到观众APP

服务器这时候便被定义了两个身份:

【1】推流:推流节点(接收来自主播端的上行推流)

【2】分发:分发节点(把视频流分发给不同的观众)

由于服务器的强大能力,它不甘心只把数据接收过来再分发下去,而是要干更多的事情。比如说,给主播的脸上做个特效、给直播画面上加上公司的logo水印、或者是担心有主播直播违禁的画面,在服务器上做个鉴黄等。这时候,服务器的定义又发生了改变,它被称为了“流媒体处理中心”。

观众数进一步增大会怎样?

服务器也是有瓶颈的,例如,通常服务器的网卡是1G的,一路直播视频的带宽需求是1M左右,不考虑别的因素,一台服务器的网卡最多可以同时分发1000路直播就达到瓶颈了。那么,如果有3000个观众观看的时候,怎么办?当然,我们可以放3个服务器嘛,每个服务器分发1000路,总共就3000路了。于是就变成了这样:

又发现问题了,主播又要向服务器1、2、3分别发送3份数据了,按照之前的思路,我们可以这么来优化:在服务器1、2、3之前,放一个服务器-0,它的作用是接收主播推流,再把数据交给服务器1、2、3.由于服务器1、2、3给1000名观众分发数据都是一样的,所以呢,他们就把数据在自己服务器上存储了一份。

在这样的架构下,会延伸出这样几个概念:

1、负载均衡:根据一定的策略来做资源的分配

当观众人数不太多的时候,例如总共只有1000人,那么是选择让某一台服务器服务这1000人,还是3台服务器分担1000人,还是2台?机器也会有新旧之分,老机器只能抗800数量,那要怎么来分配呢?等等问题。这里就需要有一个策略来做资源的分配

2、CDN缓存:

因为观众看到的数据都是一样的,所以呢,数据会在服务器1、2、3上都存储一份。这个概念叫做:CDN缓存。

3、回源  & 源站

当分配到服务器1的第一个观众进入时,服务器1是没有存储数据的,它会向服务器-0获取数据,这个过程叫做:回源

相应的,服务器-0被称为:源站

4、缓存命中

观众请求的数据如果由CDN缓存提供,叫做缓存命中

5、缓存命中率

所有用户请求的缓存命中比例叫做缓存命中率,它是衡量CDN质量的关键指标。

6、就近原则

一名新进入的观众会被分配到哪一台服务器上呢?理论上,这台服务器距离用户的网络链路越短、不跨网,数据的传输的稳定性就越好,这个叫做:就近原则。

跨地区、多运营商覆盖的CDN

由于就近原则的存在,为了满足全国甚至全世界不同地方的人,那我们就需要把服务器分布在不同的地区。又由于不同的网络运营商之间的网络传输会有稳定性问题,那么就需要在不同的网络运营商里也放置服务器,于是,一个CDN网络就成型了:

随着规模越来越大,例如现在的PP云,就变成了这样:

002/CDN-内容分发网络的更多相关文章

  1. CDN 内容分发网络技术

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  2. EasyDSS高性能RTMP、HLS(m3u8)、HTTP-FLV、RTSP流媒体服务器解决方案之CDN内容分发网络

    背景分析 EasyDSS流媒体解决方案提供一站式的转码.点播.直播.录像.检索.时移回放服务,极大地简化了开发和集成的工作,并且EasyDSS支持多种特性,完全能够满足企业视频信息化建设方面的需求.其 ...

  3. 深度剖析:CDN内容分发网络技术原理--转载

    1.前言 Internet的高速发展,给人们的工作和生活带来了极大的便利,对Internet的服务品质和访问速度要求越来越高,虽然带宽不断增加,用户数量也在不断增加,受Web服务器的负荷和传输距离等因 ...

  4. CDN内容分发网络

    CDN的全称是Content Delivery Network,即内容分发网络,其设计思想是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定. CDN系统是在网络 ...

  5. 史上最全的CDN内容分发网络实战技巧(网络优化)

    今天来给大家分享下关于 CDN 的东西,以及我自己的一些发现.一些个人的拙见.总共分为 3 个部分:原理.详解.各种坑. 首先说一下 CDN 的基本原理部分,主要分 4 块来描述:CDN 的由来.调度 ...

  6. 什么是CDN内容分发网络?【刘新宇】

    CDN 使用第三方OSS服务的好处是集成了CDN服务,下面来了解一下什么是CDN. CDN 全称:Content Delivery Network或Content Distribute Network ...

  7. CDN 内容分发网络

    第一步,HTML的文件引用:HTML的文件头(也有文件中,文件尾)那边常有其他文件引用,比如CSS以及JS的引用. 就以bootstrap常用的引用来举个栗子你常见的引用可能会是这样的: <he ...

  8. jquery CDN(内容分发网络)使用

    jquery CDN 给开发者提供一种捷径,即不下载jquary 就通过CDN能使用各个版本的jquery. 使用方法很简单,就是在HTML 文档中引用相关版本的jquery. 例如:我用百度的CDN ...

  9. 缓存---CDN(内容分发网络)

    4.CDN   内容分发网络(content distribution network,CDN)是一种互联的网络系统,它利用更靠近用户的服务器从而更快更可靠的将静态资源分发给用户. cdn主要有以下优 ...

  10. http 协议_DNS_域名解析 DNS 服务器_内容分发网络 CDN_缓存机制_HTML5 浏览器存储技术_cookie_sessionStorage_localStorage

    TCP/IP 协议族 是按层次去划分的 应用层    决定了向用户提供应用服务时通信的活动. FTP 协议(文件传输协议)DNS(域名协议)HTTP(超文本传输协议) 传输层    提供处于网络连接中 ...

随机推荐

  1. OneDrive网盘资源下载教程

    目录 1. 本文地址 2. 下载流程 3. 打赏&支持 1. 本文地址 博客园:https://www.cnblogs.com/coco56/p/11161530.html CSDN:http ...

  2. 001-supervisor

    supervisor 使用教程(转) 原文地址:https://word.gw1770df.cc/2016-08-04/linux/supervisor-%E4%BD%BF%E7%94%A8%E6%9 ...

  3. Java并发——线程间通信与同步技术

    传统的线程间通信与同步技术为Object上的wait().notify().notifyAll()等方法,Java在显示锁上增加了Condition对象,该对象也可以实现线程间通信与同步.本文会介绍有 ...

  4. Codeforces 918 括号匹配 SGdp[i][j][k]

    A B C #include <bits/stdc++.h> #define PI acos(-1.0) #define mem(a,b) memset((a),b,sizeof(a)) ...

  5. Python核心技术与实战——九|面向对象

    在搞清了各种数据类型.赋值判断.循环以后如果是从C++.Java语言入手的,就会有一个深坑要过:OOP(object oriented programming):公私有保护.多重继承.多态派生.纯函数 ...

  6. Stylus-富有表现力的、动态的、健壮的CSS

    今天总结一下Stylus记一些常用的也是最基本的用法 一.  选择器 Stylus是基于缩进的这让我们可以更快捷的编写css比如 body { margin:; paddind:; font-size ...

  7. vue2.0 之 过渡动画transtion

    过渡的类名: 在进入/离开的过渡中,会有 6 个 class 切换 (v 是前缀,name = v) v-enter:定义进入过渡的开始状态.在元素被插入时生效,在下一个帧移除. v-enter-ac ...

  8. 【JavaScript】DOM之BOM

    BOM 1.BOM是什么 提供了独立页面内容,与浏览器相关的一系列对象,管理窗口之间通信 2.Window对象 具有双重角色,对象即是允许JS访问浏览器窗口的一个对象,和ECMAScript规范中的G ...

  9. 运行biggan demo

    http://www.zhuanzhi.ai/document/8705953a704e1bf8e051c161d1587d88

  10. F5设备部署

    旁挂组网(组网模式一) 所谓旁挂组网模式,就是指在BIG-IP LTM上只配置一个Vlan,使用一个端口(或者Trunk端口)连接在网络中,所有的处理均在这一个Vlan中运行.通常有三种常见配置模式. ...