Chinaunix

标题: CDN实现 [打印本页]

作者: ujjidt    时间: 2007-01-08 09:00
标题: CDN实现
如题,各位CU高人,那位曾经做过CDN项目.麻烦简单的介绍下CDN的具体流程...非常感谢~比较急,在线等~
作者: HonestQiao    时间: 2007-01-08 09:24
 在描述CDN的实现原理,让我们先看传统的未加缓存服务的访问过程,以便了解CDN缓存访问方式与未加缓存访问方式的差

用户访问未使用CDN缓存网站的过程为:
1) 用户向浏览器提供要访问的域名;
  2) 浏览器调用域名解析函数库对域名进行解析,以得到此域名对应的IP地址;
  3) 浏览器使用所得到的IP地址,域名的服务主机发出数据访问请求;
  4) 浏览器根据域名主机返回的数据显示网页的内容。
  通过以上四个步骤,浏览器完成从用户处接收用户要访问的域名到从域名服务主机处获取数据的整个过程。CDN网络是在用户和服务器之间增加Cache层,如何将用户的请求引导到Cache上获得源服务器的数据,主要是通过接管DNS实现,下面让我们看看访问使用CDN缓存后的网站的过程:
使用了CDN缓存后的网站的访问过程变为:
1) 用户向浏览器提供要访问的域名;
  2) 浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析,如根据地理位置信息解析对应的IP地址,使得用户能就近访问。
  3) 此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的IP地址以后,向缓存服务器发出访问请求;
  4) 缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
  5) 缓存服务器从实际IP地址得得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据返回给客户端,完成数据服务过程;
  6) 客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
通过以上的分析我们可以得到,为了实现既要对普通用户透明(即加入缓存以后用户客户端无需进行任何设置,直接使用被加速网站原有的域名即可访问),又要在为指定的网站提供加速服务的同时降低对ICP的影响,只要修改整个访问过程中的域名解析部分,以实现透明的加速服务,  下面是CDN网络实现的具体操作过程。
  1) 作为ICP,只需要把域名解释权交给CDN运营商,其他方面不需要进行任何的修改;操作时,ICP修改自己域名的解析记录,一般用cname方式指向CDN网络Cache服务器的地址。
  2) 作为CDN运营商,首先需要为ICP的域名提供公开的解析,为了实现sortlist,一般是把ICP的域名解释结果指向一个CNAME记录;
  3) 当需要进行sorlist时,CDN运营商可以利用DNS对CNAME指向的域名解析过程进行特殊处理,使DNS服务器在接收到客户端请求时可以根据客户端的IP地址,返回相同域名的不同IP地址;
  4) 由于从cname获得的IP地址,并且带有hostname信息,请求到达Cache之后,Cache必须知道源服务器的IP地址,所以在CDN运营商内部维护一个内部DNS服务器,用于解释用户所访问的域名的真实IP地址;
  5) 在维护内部DNS服务器时,还需要维护一台授权服务器,控制哪些域名可以进行缓存,而哪些又不进行缓存,以免发生开放代理的情况。
作者: HonestQiao    时间: 2007-01-08 09:26
从最简单的角度来说,就是:
1. 智能DNS:根据网通电信铁通吉通教育网等用户来解析服务器对应的IP
2. 就近分布服务器:为各大网络节点提供缓存服务器,用户就近访问(非完全针对物理距离,而是根据网络分布状况)

另外,你是自己公司应用,还是提供CDN服务?
作者: ujjidt    时间: 2007-01-08 09:30
恩,谢谢楼上兄弟的二帖~请问那具体可以用Bind+Squid来实现吗?Thank~
作者: HonestQiao    时间: 2007-01-08 09:37
原帖由 ujjidt 于 2007-1-8 09:30 发表
恩,谢谢楼上兄弟的二帖~请问那具体可以用Bind+Squid来实现吗?Thank~


基本使用这个来实现的。

但是注意,管理是一个挑战。
作者: ujjidt    时间: 2007-01-08 09:38
最近一段也都是泡在CU里面,关于Bind智能解析IP地址的选项是否就只是Sortlist 或者是View。Sortlist看http://www.zytrax.com/books/dns/ch7/queries.html应该就是我应该应用的可以实现智能返回IP地址的。。可是View Option是不是针对不同的Zone来Query不同的ADDR呢? 实在的很糊涂。请赐教~~谢谢
我是想用Bind+Squid实现CDN的功能
作者: HonestQiao    时间: 2007-01-08 09:40
http://bbs.chinaunix.net/viewthread.php?tid=714996
作者: HonestQiao    时间: 2007-01-08 09:41
原帖由 ujjidt 于 2007-1-8 09:38 发表
最近一段也都是泡在CU里面,关于Bind智能解析IP地址的选项是否就只是Sortlist 或者是View。Sortlist看http://www.zytrax.com/books/dns/ch7/queries.html应该就是我应该应用的可以实现智能返回IP地址的 ...


squid是放在各大网络节点的。

例如:
北京网通一个、山东网通一个、武汉电信一个、广东电信一个

这样子对于那个地区的用户来说,就会就近访问了。
作者: ujjidt    时间: 2007-01-08 10:31
能给小弟介绍一下Sortlist 和View 的作用和区别吗?
作者: 网络    时间: 2007-09-15 23:36
能对个 别名对所在服务器全部虚拟主机站点 进行缓存加速技术吗?




欢迎光临 Chinaunix (http://bbs.chinaunix.net/) Powered by Discuz! X3.2