开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了。或者,知道思路也行,毕竟当下,分工如此精细,你也不太可能啥都干!
  面对高性能高并发的应用场景,在开发者的层面可以做很多,如使用优化的代码,优化的sql,读写分离,nosql缓存,页面静态化等等。但是代码毕竟不能做所有的事,服务器集群,CDN则是更高级的手段。CDN到底如何工作的呢,让我们来大概了解一下!
  CDN的基础百科资料也很多了,我也稍等提一下。CDN,Content Distribute Network,即内容颁发网络。

【百度百科解释】

  其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。通过在网络各处放置节点服务器所构成的在现有的互联网基础之上的一层智能虚拟网络,CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。其目的是使用户可就近取得所需内容,解决 Internet网络拥挤的状况,提高用户访问网站的响应速度。
  转化一下我别扭的理解就是,CDN是CDN服务商在全国各地部署许多服务器集群,通过某种协议拦截用户访问,为用户提供就近服务,从而提高服务能力,减轻源站压力,减轻国家主干网压力的一种手段。

【拦截用户访问的方式】

  基于DNS解析的拦截!提供网络边缘服务。

  1)、用户向浏览器提供要访问的域名;
  2)、浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
  3)、此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
  4)、缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
  5)、缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,另一方面把获取的数据返回给客户端,完成数据服务过程;
  6)、客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
【CDN负载均衡集群】
  集群分三种:计算集群、负载均衡集群、高可用集群。
  负载均衡集群(GSLB)就是,将多台彼此互联的服务器共同分担计算任务,将负载尽可能平均的分配到各台服务器上进行处理,从而提高处理能力!
  CND缓存服务器核心思想:在用户和内容服务器之间架构缓存服务器,将用户最近访问过的媒体数据缓存在离用户较近的地方,以供后续重复访问使用,部署集群充分利用各节点形成的强大计算能力。
【负载均衡原理分类】
  按照协议分类可以分为:四层负载均衡(L4)、七层负载均衡(L7)。四层如:LVS,七层如:Nginx。
【GSLB全局负载均衡的实现方式】
  基于DNS的解析方式,使用较多。
  基于HTTP重定向方式的实现方式,流媒体使用较多。
  基于IP路由方式,使用范围有限,暂无商用!
【流媒体相关的几个协议】
  RTP(Realtime Transport Protocol)实时传输协议、RTCP(Realtime Transport Control Protocol)实时传输控制协议。
  RTMP(Real Time Messaging Protocol)实时消息传送协议。
  HTTP Streaming,Progressive Download 渐近式下载的发展结果,目前最广泛的流化协议。
【防盗链机制实现】
  利用HTTP Referer字段。
  利用登录验证。
  利用cookie携带验证信息。
  使用POST下载。
  使用图形验证码。
  使用动态密钥。
  在内容中插入数据。
  打包下载,使用哈希码验证。
【SSL加速】
  SSL加速板卡。
  SSL加速设备。
  
【自行搭建CDN试验工具】
  安装KVM。
  安装apache httpd。
  安装squid代理缓存服务器。
  安装LVS负载均衡服务器。
  安装BIND域名服务器。
  安装Nginx负载均衡服务器。
  
  以上内容,来自《CDN技术详解》一书,对于概念的东西有一定的了解了,但是对于实践,还有很长的路要走,或者说不太必要也不太有机会实践。理解、提升就好。
 

《CDN技术详解》 - CDN知多少?的更多相关文章

  1. CDN技术详解及实现原理

    CDN技术详解 一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精 ...

  2. CDN技术详解笔记

    1.影响网络传输的四个因素(1)“第一公里”:网站服务器接入互联网的链路所能提供的带宽.(2)“最后一公里”:用户接入带宽.(3)对等互联关口:不同网络之间的互联互通带宽.(4)长途骨干传输:首先是长 ...

  3. CDN技术详解

    CDN,全称为Content DeliveryNetwork,中文意为"内容分发网络"".通过将网络内容发布到最靠近用户的『边缘节点』,使不同地区的用户在访问相同页面.图 ...

  4. CDN 技术详解(DNS,GSLB,Cache)

    CDN 是什么 CDN(Content Delivery Network,内容分发网络),即全网内容加速服务.为了尽可能的避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快.更稳 ...

  5. CDN技术详解(七)

    动态内容加速服务的实现 随着Web2.0的兴起,产生了动态网页.个性化内容.电子交易数据等内容的加速,这些就涉及了动态内容加速技术. 静态内容的加速,都是对于表现层的加速,对于动态页面等内容的加速,则 ...

  6. CDN学习笔记二(技术详解)

    一本好的入门书是带你进入陌生领域的明灯,<CDN技术详解>绝对是带你进入CDN行业的那盏最亮的明灯.因此,虽然只是纯粹的重点抄录,我也要把<CDN技术详解>的精华放上网.公诸同 ...

  7. Zookeeper系列二:分布式架构详解、分布式技术详解、分布式事务

    一.分布式架构详解 1.分布式发展历程 1.1 单点集中式 特点:App.DB.FileServer都部署在一台机器上.并且访问请求量较少 1.2  应用服务和数据服务拆分  特点:App.DB.Fi ...

  8. Protocol Buffer技术详解(数据编码)

    Protocol Buffer技术详解(数据编码) 之前已经发了三篇有关Protocol Buffer的技术博客,其中第一篇介绍了Protocol Buffer的语言规范,而后两篇则分别基于C++和J ...

  9. P2P技术详解(二):P2P中的NAT穿越(打洞)方案详解

    1.内容概述 P2P即点对点通信,或称为对等联网,与传统的服务器客户端模式(如下图"P2P结构模型"所示)有着明显的区别,在即时通讯方案中应用广泛(比如IM应用中的实时音视频通信. ...

随机推荐

  1. group_concat函数详解

    来自: http://hchmsguo.iteye.com/blog/555543 MySQL中group_concat函数 完整的语法如下: group_concat([DISTINCT] 要连接的 ...

  2. 那年有关 return ; 的一切

    现在只知道在dev C++里面声明了函数的返回类型不为void就不能写return; ,但是如果返回值为void就可以写return; ,而且如你所愿.

  3. 尝试u3d中将代码与编辑器分离

    最近与朋友交流,他一直是做端游,最近接触了u3d以后无法忍受代码与配置文件,美术资源全部纠缠在一起的状况,于是一直在琢磨怎么将编辑器与代码彻底分离. 自己也抽空研究一下,碰到一些问题先记录下来. 首先 ...

  4. Object-C内存管理-对象引用计数的特例

    看到OC中内存管理这块,其中的引用计数部分,部分10.5上的EBOOK示例已经在10.9上不能运行正确了,比如下面的代码: NSString * str1 = @"string 1" ...

  5. C#学习之Stream

    上节课老师主要讲了stream及其一些运用和实例,下面我们就来讨论讨论Stream. 我们知道,C#中常用的stream有文件流(FileSteam),内存流(MemoryStream),压缩流(GZ ...

  6. 一些有用的Javascript Function :-)

    1.验证完整的日期格式:(yyyy-MM-dd)function checkDate(RQ) { var date = RQ; var result = date.match(/^(\d{1,4})( ...

  7. 使用Spring注解来简化ssh框架的代码编写

     目的:主要是通过使用Spring注解的方式来简化ssh框架的代码编写. 首先:我们浏览一下原始的applicationContext.xml文件中的部分配置. <bean id="m ...

  8. linux编译php的c扩展

    第一步:安装php5 第二步:打开终端[为来方便,这里使用root用户],使用CD命令进入到php5源码包的ext目录 第三步:在终端键入以下命令 ./ext_skel --extname=extes ...

  9. spark on centos6.5 安装

    第一步在centos 6.5上安装java 运行环境 http://www.oracle.com/technetwork/java/javase/downloads/jdk7-downloads-18 ...

  10. 避开WebForm天坑,拥抱ASP.Net MVC吧

    有鹏友在如鹏网的QQ群中提了一个问题: 请问,在ASP.Net中如何隐藏一个MenuItem,我想根据不同的权限,对功能菜单进行隐藏,用style不行. 如果要仅仅解答这个问题,很好解答,答案很简单: ...