《CDN技术详解》 - CDN知多少?
开发时间久了,就会接触到性能和并发方面的问题,如果说,在自己还是菜鸟的时候完全不用理会这种问题或者说有其他的高手去处理这类问题,那么,随着经验的丰富起来,自己必须要独立去处理了。或者,知道思路也行,毕竟当下,分工如此精细,你也不太可能啥都干!
面对高性能高并发的应用场景,在开发者的层面可以做很多,如使用优化的代码,优化的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技术详解》一书,对于概念的东西有一定的了解了,但是对于实践,还有很长的路要走,或者说不太必要也不太有机会实践。理解、提升就好。
不要害怕今日的苦,你要相信明天,更苦!