搭建 CDN

1. 搭建 cdn

CDN 的全称是 Content Delivery Network, 即内容分发网络。

其基本思路是尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节, 使内容传输的更快、更稳定。

市面上有很多 CDN 供应商, 比较着名有:

  • Akamai (全球最大)
  • webluker
  • cloudflare
  • chinacache(蓝汛)
  • 网宿 CDN
  • 帝联 CDN
  • 阿里 CDN(web cache server 叫 swift)
  • 腾讯 CDN
  • 七牛云融合 CDN

如果需要自己搭建 CDN 系统, 有 3 种主流方案可以选择: squid、varnish、Nginx+memcache.

  • 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 就是 CDN 删除缓存项的接口, 国内的 UGC 网站, 因为严厉的内容检查制度和泛滥的垃圾广告, 删帖子删图片特别频繁, 某些网站可能高达 40%(发 100 个贴, 有 40 个帖子可能被删除或者修改), 所以对 purge 的效率有要求。
squid 和 varnish 的 purge 效率都达不到国内这种强度要求, nginx+memcache purge 性能要好很多。
在当前的中国, 遇到突发事件后, 要是不及时删除指定的链接或内容, 后果可能会很严重(小到个人被炒, 大到公司被关都有可能)
某门户网站曾经发生过, 某个链接怎么也删不掉, 一慌张把 CDN 所有缓存都删了重启, 导致内网流量瞬间暴涨, 各业务线的服务器全线报警, 集体骂娘!

中小型网站直接买 CDN 服务就好, 现在 CDN 已经进行按需付费的云计算模式了, 性价比是可以准确计算的;

  • 外地部署单点, 推荐用 squid;
  • 准备在公司内部实施私有云战略, 推荐 nginx+memcache;
  • 不太建议使用 varnish。

原创文章,作者:优速盾-小U,如若转载,请注明出处:https://www.cdnb.net/bbs/archives/30474

(0)
优速盾-小U的头像优速盾-小U
上一篇 2025年6月18日 18:42
下一篇 2025年6月18日 23:04

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

优速盾注册领取大礼包www.cdnb.net
/sitemap.xml