我前面说了流量的概念,流量是使用网络时经常要考虑的一个因素--如何才能更快的使用流量,如何才能节省流量使用的成本,对于这样的问题,你可能要了解一下什么是cdn,什么是p2p。

(1)cdn是什么

cdn是一个基于已有的internet网络而进行扩展的网络系统,叫作内容分发网络,content delivery network。

搭建cdn网络的思路,是在网络边缘,也就是接入网络的设备(用户)的地方,增加服务结点,再通过各种策略,把用户划分到不同的cdn结点,并让用户能在最短的时间获取到数据。

为什么可以更快拿到数据?我可以更简单地解释:在没有cdn之前,你需要到经过一个很曲折的小路去看电影,而有了cdn后,cdn直接把电影缓存过来了,而且,cdn就在你面前,你直接看电影就好了,这个道理,跟“就近救援”或“就近配送”是一个道理。所以,cdn的根本就是缓存(而它跟源服务间是高速公路,数据很快就传过来),让用户就近取数据,而不是走长长的小路去取数据--极端一点,每个用户都配一台缓存服务器。

cdn的基本意图,是让用户更快更稳地取得数据。cdn最基本的作用是加速,但随着时代的发展,cdn提供的服务已经远不仅加速的功能,还有预缓存、支持https等诸多功能。

为了提升服务体验,以及其它考虑,很多公司都接入了cdn,或自建cdn。

cdn服务商有很少,比如阿里云cdn、百度、腾讯、七牛、网宿等。

这时,不可避免要考虑一个问题,cdn的使用,是占用带宽的(当然,不使用cdn而使用缓存服务器,也一样占用带宽),而这个带宽的使用,相当使用了运营商修建的道路,是要给钱的。一般来说,按带宽的使用来计费(具体可能按月的带宽峰值,也可能按实际使用来分摊到月,等等。),而在某些场景,比如直播、视频播放等,在客户端从cdn或缓存服务器获取数据时,服务器占用了很大的带宽。

加一个题外话,怎么从流量换算出带宽?一般来说,很容易统计到文件下载(或被试听)的次数,根据文件的大小与一天的下载的次数,就可以算出一天产生的流量,比如小程的服务器的一个语音文件是250kB,如果一天有100次播放,那一天的流量就是(250*100)=25000kB。再把流量分摊到每一秒,就是带宽(bps):25000*1024*8/(24*60*60)=204800000/86400=2370bps,也就是一天占用的带宽是2.3k左右。这是一天的带宽,一般来说,一个月内会产生峰值(比如活动日或周末等),这时的带宽可能是正常的几倍,比如3倍,那就是6.9k。然后,根据这个6.9k来计算要给多少钱(先问一下运营商或cdn服务商,1m带宽要多少钱)。

那么,有没有办法,减少服务器带宽的占用,从而节省费用的开销呢?

(2)p2p是什么

p2p,peer to peer,是点到点的数据交换的网络技术。

对比cdn跟p2p的网络结构,很容易看出它们的差别。对于cdn,客户端之间的数据交换,需要经过cdn服务器来转发,因此,服务器带宽成本是一个问题(如上所述)。对于p2p,客户端之间可以直接交换数据而不经cdn服务器,所以理论上可以大幅节省带宽成本。注意,客户端间直接交换数据,会使用用户的流量,但一般是在wifi或带宽网络下才使用流量,而带宽网络一般是以带宽或速度来收费的,也就是这时使用多少流量并不需要用户来买单。

所以,如果为了节省cdn的带宽成本,p2p是一个可以考虑的技术。

一个简单的p2p应用的结构图是这样的:


网络应用(3):CDN与P2P的概念的更多相关文章

  1. CDN(Content Distribution Network)概念

    CDN的全称是Content Delivery Network,即内容分发网络.其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳定.通过在网络各处放置节 ...

  2. P2P金融

    P2P金融又叫P2P信贷,是互联网金融(ITFIN)的一种.意思是:点对点. P2P金融指不同的网络节点之间的小额借贷交易(一般指个人),需要借助电子商务专业网络平台帮助借贷双方确立借贷关系并完成相关 ...

  3. 阿里云有对手了!CDN横评:腾讯云优势明显

    如今,云计算产品越来越多,像国内的BAT三大巨头都提供了云主机(腾讯云CVM.阿里云ECS.百度云BCC),另外还有存储.数据库.安全等相关云服务.在这其中,CDN也是一项重要的云服务,CDN指的是内 ...

  4. python练习七—P2P下载

    最近有些事儿比较忙,python的学习就断断续续,这个练习来得比预期的晚,不过还好,不管做什么,我都希望能认真对待,认真做好每一件事. 引入 这个练习原书中称作“使用XML-RPC进行文件共享”,题目 ...

  5. 大直播时代,P2P才是降低成本的必杀技

    在流媒体传输分发领域,CDN和P2P一直是经常被拿来进行对比和讨论的一大热点,虽然不少大型视频企业目前同时使用着CDN和P2P两套分发机制,但相对于CDN,很多人对于P2P技术知之甚少.整体来说,P2 ...

  6. 《c# 实现p2p文件分享与传输系统》 一、 模型

    c#实现P2P文件分享与传输系统 一.模型 P2P的概念大家都不陌生,也就是所谓的“点对点传输”,即不直接通过服务器,在两台或多台客户端之间传输数据,实现信息交流和资源共享.P2P技术已经发展了很多年 ...

  7. 斗鱼 H5 直播原理解析,它是如何省了 80% 的 CDN 流量?

    斗鱼直播相信大家都听说过,打开斗鱼官网就可以直接在浏览器中观看直播.那么斗鱼是如何实现浏览器视频直播的呢?本篇文章就来解析斗鱼是如何实现直播的,以及它是如何节省 80% 的 CDN 流量,要知道视频直 ...

  8. Web 应用架构基础课(转载)

    Web 应用架构基础课 初级 web 应用开发者必学的基础网络架构概念 web 应用主流架构概览 上图便是我司(Storyblocks)网络架构的很好展现.如果你还没成为经验老道的 web 工程师,可 ...

  9. iOS开发——网络篇——HTTP/NSURLConnection(请求、响应)、http响应状态码大全

    一.网络基础 1.基本概念> 为什么要学习网络编程在移动互联网时代,移动应用的特征有几乎所有应用都需要用到网络,比如QQ.微博.网易新闻.优酷.百度地图只有通过网络跟外界进行数据交互.数据更新, ...

随机推荐

  1. 囤题&&发布记录

    声明 && 温馨提示 by ljh2000 听说有人很喜欢狙我......看我不把你们抓起来嘿嘿嘿! 为了采取措施,不让被狙成为生活常态(雾   ,我要闭关锁国辣,我要开始(屯田)囤题 ...

  2. node 渲染html模板配置

    node 渲染html模板配置 安装swig模块 npm install swig--save - dev 加载swig模块 var swig = require('swig'); 模板配置 //第一 ...

  3. JAVA发送手机短信

    <p><span>JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注册 ...

  4. Cuckoo hash算法分析——其根本思想和bloom filter一致 增加hash函数来解决碰撞 节省了空间但代价是查找次数增加

    基本思想: cuckoo hash是一种解决hash冲突的方法,其目的是使用简单的hash 函数来提高hash table的利用率,同时保证O(1)的查询时间 基本思想是使用2个hash函数来处理碰撞 ...

  5. Java集合类--->入门下篇

    HashSet集合 在上篇大概了解了什么是集合类,知道它可以存储任意类型的对象,并且比数组灵活,集合类的长度可以变化.这里将接着介绍一下,Set接口的实现类之一,HashSet集合,Set集合:元素不 ...

  6. vue2.0项目实战使用axios发送请求

    在Vue1.0的时候有一个官方推荐的 ajax 插件 vue-resource,但是自从 Vue 更新到 2.0 之后,官方就不再更新 vue-resource. 关于为什么放弃推荐? -> 尤 ...

  7. Git_学习_06_ 放弃本地修改

    一.未使用 git add 缓存代码时 git checkout -- filepathname // 放弃某个文件 git checkout . // 放弃所有文件 git checkout . 用 ...

  8. BEC listen and translation exercise 46

    录音文件 https://pan.baidu.com/s/1qYYZGWO The process of learning and exploring a subject can lead to a ...

  9. Oracle中spool命令实现的两种方法比较

    ---恢复内容开始--- 要输出符合要求格式的数据文件只需在select时用字符连接来规范格式.比如有如下表 SQL>; select id,username,password from myu ...

  10. CSS之EM相对单位

    之前以为em单位只是在font-size中起到继承作用, 后来慢慢觉得,继承,应该是在几乎所有样式中都可以是实现的,比如height,width,border... 今天才简单测试了下,果真是可以实现 ...