设为首页 收藏本站
查看: 1138|回复: 0

[经验分享] 自建CDN技术选型: squid varnish nginx-msorry的博客

[复制链接]

尚未签到

发表于 2018-12-27 09:48:54 | 显示全部楼层 |阅读模式
  CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
使用CDN有3个好处

  •   优化跨ISP网络访问速度,在国内大联通和大电信之间是世界上最远的距离,在国外,中国和其他地区很平行,用cdn可以优化全球响应速度
  •   节约流量成本,CDN机房都一般都放在带宽便宜的小城市,带宽成本大概是BGP机房的1/3
  •   快速提升性能,对于结构复杂的系统,部署CDN可以在不改动代码段情况提升网站整体性能,立竿见影
  市面上有很多CDN供应商,比较著名有

  •   Akamai (全球最大)
  •   chinacache
  •   webluker
  •   cloudflare
  如果需要自己搭建CDN系统,有3种主流方案可以选择

  •   squid
  •   varnish
  •   Nginx+memcache
软件存储模式性能配置复杂度purge效率共享存储squid硬盘较高简单低可以并联,但是配置复杂varnish硬盘/内存高比较简单低不能nginx内存高需要编程高可以,支持一致性存储典型用户

  •   Squid http://www.squid-cache.org,大多数CDN供应商都用squid
  •   varnish http://www.varnish-cache.org,用户较少,sina微博在用
  •   nginx+memcache 搜狐CDN集群,淘宝的部分业务
存储共享
  对于大规模网站的CDN,存储共享是个强需求。为了消除单点,不可能只使用一台CDN服务器,如果只是简单做负载均衡,单台CDN server 上需要存储全部数据,存储利用率太低了

  •   squid支持几个实例并联,实际使用的人不多
  •   varnish 只能用单实例
  •   nginx+memcache 天然的分布式存储
  当然,采用squid/varnish 也有解决办法: 需要在它们前面部署一个支持url hash的负载均衡设备(硬件,软件均可,比如说haproxy)
内存存储的代价
  如果CDN把缓存放在内存当中,固然性能会有提升,但是当服务遭遇故障重启之后,全部数据都会丢失需要重建,这个时候

  •   会给后端应用服务器带来很大的短时压力
  •   服务需要较长的时间才能完全恢复
  而实际运行当中,由于各种原因,CDN服务重启的概率相当高
一个很悲剧的事实
  对动态网页使用CDN,无论squid还是varnish都不能直接用,都需定制代码。
  例如 varnish 会判断response的header,如果发现里面有set-cookie项,它就认为这个页面不应该被缓存。对于规模庞大/OOP封装严密的网站,普通程序员根本意识不到调用哪一个fucntion会输出set-cookie,这个会导致CDN命中率急剧降低。但你也无力去对每行代码做code review,没有办法,只能去修改varnish代码了,这又引入一个新的维护成本. Squid也有这个问题
purge效率
  purge就是CDN删除缓存项的接口,国内的UGC网站,因为严厉的内容检查制度和泛滥的垃圾广告,删帖子删图片特别频繁,某些网站可能高达40%(发100个贴,有40个帖子可能被删除或者修改),所以对purge的效率有要求。
  squid和varnish purge效率都达不到国内这种强度要求,nginx+memcache purge性能 要好很多
  在当前的中国,遇到突发事件,你要不及时删除指定的链接,你的老板就可能会去拍下面这种相片
DSC0000.jpg

  某门户网站曾经发生过,某个链接怎么也删不掉,一慌张把CDN所有缓存都删了重启,导致内网流量瞬间暴涨,各业务线的服务器全线报警,集体骂娘。
推荐CDN方案

  •   中小型网站直接买服务就好,现在CDN已经进按需付费的云计算模式了,性价比是可以准确计算的
  •   外地部署单点,推荐用squid
  •   准备在公司内部实施私有云战略,推荐nginx+memcache
不建议使用varnish
  以前的工作中,我力主把一个CDN集群从squid迁移到varnish,持续运行了2年,就是如上感受,严重不推荐.
  via http://www.linuxde.net/2013/05/13492.html
本文内容由 linux 提供

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-656342-1-1.html 上篇帖子: Squid 3.0 配置方法 下篇帖子: squid服务器
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表