技术控

    今日:386| 主题:57770
收藏本版 (1)
最新软件应用技术尽在掌握

[其他] CDN技术详解

[复制链接]
壹切全部崩塌 投递于 2016-10-10 01:09:12
196 5
CDN,全称为Content DeliveryNetwork,中文意为“内容分发网络“”。通过将网络内容发布到最靠近用户的『边缘节点』,使不同地区的用户在访问相同页面、图片或视频时就可以就近获取。
  这样能够减轻服务器的负载,也可以减少整个网络中流量分布不均的问题,既能够降低互联网公司的成本(硬件开销、能耗和管理成本),也能有效改善整个网络的性能。
   

CDN技术详解

CDN技术详解-1-技术控-IP地址,互联网,路由器,服务器,第三方


  所谓“边缘节点”指的是CDN服务商经过精心选择的距离用户距离最近的服务器节点,即在各地均有机房集群分布,变得仅是“一跳”距离(traceroute命令后查看经过路由的个数),也就是说用户在访问时不需要经过多个路由器,可以有效提高访问时间。
  我们来看如下图示:
   

CDN技术详解

CDN技术详解-2-技术控-IP地址,互联网,路由器,服务器,第三方


  从上图我们可以看到,在对某个需要CDN的域名解析时,是由智能CDN负载均衡系统选定的某个边缘节点的IP。用户利用这个IP地址访问边缘节点,然后通过该节点通过其内部DNS解析得到源服务器IP并发出请求来获取用户所需的页面或资源。若请求成功,边缘点会将此资源缓存(cache)下来,下次用户再访问时可以直接读取,而不需要每次都去访问源服务器。
  CDN架构

  可以使用第三方CDN平台,如果有需要也可以自建平台,平台资源用不了再拿出来卖,阿里云等就是这个样子发展的。
  那么我们这次就举例说明淘宝的CDN平台是如何架构的。
  淘宝网的CDN主要用户来支持用户购物,比如双11光棍节,有海量的图片请求。
  它的图片存储于后端的TFS集群中,CDN系统将这些图片缓存到用户最近的边缘节点。
  CDN系统采用2级缓存:L1和L2级缓存。用户在访问淘宝网的图片时,通过全局调度系统调度到某个L1级缓存节点,如果L1缓存命中,那么就直接将图片数据返回给用户;否则,即请求L2级缓存,并将返回的图片数据缓存到L1缓存节点。如果L2缓存节点被命中,直接将图片数据返回给L1级缓存节点。
  如果都没有命中,最后请求源图片服务器集群。此集群为一个个的Nginx的Web 服务器,它也会在本地做图片缓存,当本地缓存不命中再去请求后端的TFS集群。图片服务器集群和TFS集群会同时部署在同一个数据中心内。如下图:
   

CDN技术详解

CDN技术详解-3-技术控-IP地址,互联网,路由器,服务器,第三方


  淘宝网CDN整体架构
  针对于每个CDN节点,其内部通过LVS+HAProxy的方式进行负载均衡。也可以适当使用Keepalived等进行处理。
  LVS是四层负载均衡软件,能够支持灵活的负载均衡策略。通过其有机的结合两者,可以将不同的图片请求调度到不同的squid服务器。
  LVS通常vip+master+backup三类机器组成,其中vip是控制机器,其接收外界访问。master与backup为工作与热备节点。其可以实现下面Haproxy机器的健康检测与负载均衡,完成IP层的转发后,交给一台健康且相对负载较轻的Haproxy机器。
   Haproxy:7层负载均衡技术,将请求转发到真正的Web服务器上。 除此之外,还有:
  
       
  • Haproxy优化-支持长链接;
       
  • Haproxy调度算法优化-一致性哈希,根据访问内容(URL)来得出分配的机器
      
  每台图片服务器本质是一个人的Squid服务器,用来缓存图片的二进制数据。用户请求按照一定的策略发送到某台squid服务器,如果命中即返回,否则squid再去源服务器快取一份图片再缓存到本地,接着再把该图片数据返回给用户。
  数据通过一致性哈希分布到不同的squid服务器中,使得增加/删除服务器,只需要移动1/n(squid服务器总数)的对象。
  小结

  CDN本质是一种分布式缓存系统,无需考虑数据持久化,如果缓存服务器出现问题,在缓存集群中标记为删除即可。
  淘宝网CDN采用了分级存储,在Squid服务器上使用了SSD + SAS + SATA混合存储,图片随着热点变化而迁移,最热的图片存储在SSD上,中等热度的存储到SAS,轻热度的存储到SATA。通过此种方式,能够很好的结合几种存储介质的成本与优势。
  顺应摩尔定律,硬件技术的不断发展,SSD价格快速下降,大部分CDN缓存节点开始大规模配备SSD设备。
  另外,CDN缓存服务属于IO密集型,而非CPU密集型的服务,使用ATOM芯片能够有效整体降低功耗。
  需要我们注意的是,缓存系统访问量较大,更新、删除较少,但需要留意缓存与源服务器之间内容的一致性。比如源服务器更换了一张图片,或者删除了一个数据,需要能够相对实时的推送到CDN缓存节点。
  本文由21CTO社区原创,转载需经授权



上一篇:Android 浅谈View的测量measure
下一篇:控制学校广播跟女神全校表白!(三)
俊楠 投递于 2016-10-10 03:29:35
我来一个充满激情的回复
回复 支持 反对

使用道具 举报

飞槐 投递于 2016-10-17 12:51:08
我要做个下载软件,名字叫掩耳。因为迅雷不及掩耳。
回复 支持 反对

使用道具 举报

♀.}v__ 投递于 2016-11-15 08:44:15
有空一起交流一下
回复 支持 反对

使用道具 举报

ips3030 投递于 2016-11-16 06:29:47
恋爱就是无数个饭局,结婚就是一个饭局。  
回复 支持 反对

使用道具 举报

陪你搞怪 投递于 2016-11-21 06:37:15
听说摇动显示器可加壹切全部崩塌好友!
回复 支持 反对

使用道具 举报

我要投稿

推荐阅读


回页顶回复上一篇下一篇回列表
手机版/CoLaBug.com ( 粤ICP备05003221号 | 文网文[2010]257号 | 粤公网安备 44010402000842号 )

© 2001-2017 Comsenz Inc.

返回顶部 返回列表