自建CDN技术选型: squid varnish nginx
CDN的全称是Content Delivery Network,即内容分发网络。其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定。
使用CDN有3个好处
- 优化跨ISP网络访问速度,在国内大联通和大电信之间是世界上最远的距离,在国外,中国和其他地区很平行,用cdn可以优化全球响应速度
- 节约流量成本,CDN机房都一般都放在带宽便宜的小城市,带宽成本大概是BGP机房的1/3
- 快速提升性能,对于结构复杂的系统,部署CDN可以在不改动代码段情况提升网站整体性能,立竿见影
市面上有很多CDN供应商,比较著名有
- Akamai (全球最大)
- chinacache
- webluker
- cloudflare
- chinacache
如果需要自己搭建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性能 要好很多
在当前的中国,遇到突发事件,你要不及时删除指定的链接,你的老板就可能会去拍下面这种相片
某门户网站曾经发生过,某个链接怎么也删不掉,一慌张把CDN所有缓存都删了重启,导致内网流量瞬间暴涨,各业务线的服务器全线报警,集体骂娘。
推荐CDN方案
- 中小型网站直接买服务就好,现在CDN已经进按需付费的云计算模式了,性价比是可以准确计算的
- 外地部署单点,推荐用squid
- 准备在公司内部实施私有云战略,推荐nginx+memcache
不建议使用varnish
以前的工作中,我力主把一个CDN集群从squid迁移到varnish,持续运行了2年,就是如上感受,严重不推荐.
http://lutaf.com/163.htm
自建CDN技术选型: squid varnish nginx相关推荐
- squid,Varnish,nginx cache,ats,btw 区别
Varnish是一款高性能的开源HTTP加速器,挪威最大的在线报纸 Verdens Gang 使用3台Varnish代替了原来的12台Squid,性能比以前更好. Squid是一个高性能的代理缓存服务 ...
- Nginx自建CDN以及ngx_cache_purge清除缓存
Nginx自建CDN在<智能解析 + Nginx反向代理,自建CDN加速节点>已经介绍过,有兴趣的童鞋可参考,不过可以在这篇文章基础上继续完善,比如添加ngx_cache_purge模块来 ...
- nginx ats squid varnish使用场景对比介绍
下面,我们将介绍自建CDN的具体建设规划,主要从以下几个方面进行考量:硬件成本.带宽成本.架构设计.实际部署. 硬件成本 在硬件上,我们选型的需求是在1U的基础上具有强劲的性能,同时性价比要高. 相关 ...
- 自建CDN防御DDoS(2):架构设计、成本与部署细节
在本系列的第一篇文章中,我们介绍了我们客服系统遇到DDoS攻击的情况,以及我们为什么决定采用自建CDN的方式来解决这个问题的原因. \ 下面,我们将介绍自建CDN的具体建设规划,主要从以下几个方面进行 ...
- 阿里云CDN技术掌舵人文景:相爱相杀一路狂奔的这十年
提到阿里云CDN,不得不提技术掌舵人姚伟斌(文景),虽然他不是团队中最"老"的同学,但他却历经了淘宝业务发展最为飞速的几年,见证了从最初服务淘宝和集团内部的CDN,到如今国内服务客 ...
- [推荐] 一个 Node.js 技术选型案例:使用 CARMEN 作为卡牌手游技术栈
作者 @超人张宝胜 ,原文地址:https://zhuanlan.zhihu.com/p/103724412,如需转载请联系作者授权. 前言 本文介绍了在资金.人员.时间上全面告急.云服务提供商不确定 ...
- 关于短视频平台框架搭建与技术选型探讨
近年来,互联网高速发展,电视等传统媒体加速向媒体融合方向迈进,在三网融合等政策推动以及视频云技术.互动技术.大数据分析等新技术加速应用的背景下,无视频,不网络,短视频成为最重要的信息载体之一.构建高效 ...
- proxyServer squid / varnish / apache traffic server / ATS
apache traffic server http://gwan.com/benchmark/index.html http://zymlinux.net/ 赵永明(阿里) / 旺旺群:7543 ...
- 华为云专家私房课:视频传输技术选型的三大法宝
摘要:华为云视频架构师黄挺,将从视频传输现状入手,剖析不同业务选择不同视频传输方式的背后逻辑,分享华为云新媒体网络价值主张. 音视频行业的发展,用户对音视频画质的清晰度.播放的流畅度.互动的低延迟.突 ...
最新文章
- mysql 建复合索引_关于mysql建立索引 复合索引 索引类型
- C++实用技巧(一)
- 显卡在电脑什么位置_DIY组装电脑教程,新手也能学会自己组装电脑
- for遍历和foreach遍历的一个细小差别
- Numpy基础(part1)--ndarray数组
- 对接口编程:接口和抽象类
- 【CodeForces - 508B】Anton and currency you all know (思维贪心)
- 利用中继攻击解锁并开走汽车,本田不打算修复(含视频)
- html5应用开发大赛
- ie浏览器在线使用_关于登录深圳市住房公积金管理中心网站在线办理平台的温馨提示...
- vmare 如何与主机共享相应的文件
- Leetcode加一 (java、python3)
- Yacc 和 Bison
- 在电脑窗口中截取长图/滚动截图
- PCM音频数据的声音分贝值计算
- PS CC —— 键盘快捷键
- 联想小新固态硬盘安装Win7或者win10过程
- 分享109个PHP源码,总有一款适合您
- angularjs 猜大小
- 【FFmpeg+Qt开发】转码流程 H.264 转(mov、mp4、avi、flv)等视频格式 示例详解