网站的CDN节点并非越多越好,尤其一些免费CDN强行混搭
CDN的全称是Content Delivery Network,即内容分发网络。CDN是构建在网络之上内容分发网络,依靠在各地部署的缓存服务器,通过中心平台的负载均衡/内容分发/调度等功能模块,使用户可以就近获取所需要的内容,从而达到降低网络用塞,提高系统访问速度的技术。
CDN的思路是:通过在网络各处放节点服务器,这个服务器构成在现有网络基础之上的一层智能虚拟网络,CDN能够将用户的请求分发到距离用户最近的服务器节点上,提高用户访问速度。比如:100台CDN服务器分布在全国各地,如果从广东访问,会从最近的节点返回资源,这就是核心。
流量少+节点多=CDN减速
CDN节点过多的话,会导致命中率非常低,尤其是一些流量本来就不高的网站,使用过多节点反而是鸡肋,起到反向加速的效果!
这里我举一个例子来说明,假设网站有 5 位用户,分配了 3 台 CDN 节点,表示有 3 人可能成为该 CDN 节点的“第 1 位用户”,因为第 1 位用户的请求仍由源伺服器提供内容,只剩 2 人可以因为获取到 CDN 节点缓存的内容,而明显感受到速度加快,我们称此时的缓存命中率为 2/5。但如果网站仅使用 1 台 CDN 节点资源,则第 1 位用户访问后,CDN 节点上面将有缓存,剩馀的4位用户都可以享受到 CDN 带来的加速效果,因此缓存命中率上升到 4/5。拓展到更多的数据也是这样,例如有100个节点,只有20个访客,那么可能每个访客的访问的节点都不一样,缓存命中率直接0%,反而节点回源耗时导致网站体验不佳!
节点的布局比数量更重要
所谓内容分发网络,就是将原站的一些资源缓存在一些节点服务器上。理论上,节点离得访客越近,响应的时间也就越短,加速的效果进而越好。比如我在安徽联通的网络,去访问西藏移动的节点,可能延迟以及丢包的概率大大提高,但是西藏附近的网民访问这个节点就会好很多。
所以,需要根据自己网站的访问对象分布情况以及业务实际情况去选择一些CDN产品,甚至有更高需要的,可以进行节点定制!一般建议全国大块的区域上都有一两个节点,举个例子,四川分布一两个节点,蒙古分布一两个节点,浙江分布一两个节点,天津分布一两个节点,黑龙江分布一两个节点,这样基本就雨露均占了,当然,这只是我个人举得例子,未必真的合理,但是道理是这么个道理!在一个省份地区集中放置了10个节点,倒不如将节点散开。
为什么不建议混搭CDN
不建议混搭的原因之一是因为可能出现了意外,自己不能及时察觉到。同时使用三个CDN,你每个CDN都要进行设置。CDN的设置其实有很多的坑,尤其是使用的CDN系统不一样的话,各个设置都是挺乱七八糟的,保不准出现什么意外,导致一部分访客无法访问!
原因之二是,一般CDN厂商自己就对“节点布局”和“节点数量”进行了调度的智能优化,你这一乱混搭,直接把原本的优化整没了,甚至是反向优化,实在是捡个芝麻、丢个西瓜。
原因之三是,源站的ip白名单管理起来更加复杂,一个CDN品牌商虽然可能只给你三个节点,但是要求你加白名单的ip段可能直接几十个。当然,对于运维高手来说,也不是个事。
评价CDN的一些参考指标
其实选择CDN,主要还是根据自己的业务进行选择。下面也提供了一些指标可以参考。我个人还是不建议使用一些无证、无保障的免费CDN,除了节点质量差之外,甚至会引发自己源站的安全问题。
(1)节点分布,节点分布越合理,一般加速效果越好;
(2)首屏时间,用户第一次打开时间,这个指标越短,用户体验越好;
(3)节点延迟,用户侧到CDN节点延迟越短,说明网路链路效果越好;
(4)下载速度,用户下载文件速度很快,说明服务器性能和网络都很好;
(5)丢包率,用户侧丢包率很高,说明用户到CDN节点整体网络效果不好;
(6)回源率,从回源请求数比例和回源流量比例入手,越低越好,说明CDN帮你抗下了流量;
(7)命中率,命中率越高,说明CDN缓存资源越多,加速效果越好;
(8)平台功能是否丰富,基本功能是否完善,界面体验效果如何;
(9)运营团队响应速度,反馈后多久能给响应、处理;
(10)调度策略,观察服务商调度策略是否合理。