我们公司做东南亚跨境电商,去年双11之前,我把CDN从Cloudflare迁到了Azure CDN——不是因为Azure技术更牛,纯粹是因为我们整套后端(虚拟机、数据库、Kubernetes集群)全在Azure上,图个“全家桶”便利,一年跑下来,结合A/B测试和真实用户数据,我想说说Azure CDN的里子和面子。

Azure CDN实测,亚洲电商场景下,它能扛住双11吗?
先说延迟,我们用New Relic在印尼、泰国、越南、菲律宾四个主要市场埋点,测静态资源(图片、CSS、JS)的TTFB和首屏加载时间,Azure CDN在东南亚有两个核心POP:新加坡和香港,这个覆盖范围跟AWS CloudFront比,少了一截——CloudFront在东南亚至少有四个节点(新加坡、香港、雅加达、曼谷),Cloudflare更夸张,每个国家少说两个节点,实际测下来:在雅加达,Azure CDN的图片TTFB平均是68ms,CloudFront是41ms,Cloudflare是35ms,差距很明显,因为雅加达请求要绕到新加坡,在曼谷,Azure CDN更是跌到92ms,而CloudFront只有55ms,但在新加坡本地,三家的延迟几乎一样,都在10ms左右,所以如果你的用户高度集中在某个有Azure节点的城市,Azure体验不错;一旦用户分散,尤其像印尼这样群岛国家,Azure的短板就暴露了。
缓存命中率是另一个关键,我们主要用Azure CDN做动静分离:静态文件缓存,动态API走Azure Front Door的加速,Azure CDN的Standard层用的是微软自家的Akamai技术(微软收购了部分Akamai能力),按量计费,缓存策略遵循HTTP头,我们配置了强缓存(Cache-Control: max-age=86400),一个月下来平均缓存命中率在72%左右,同一套文件放到CloudFront,命中率能到85%,原因很简单:CloudFront的边缘节点更多、更本地化,热数据更容易留在边缘,Cloudflare因为Anycast网络和巨大的免费用户基数,命中率最高,能到91%,不过Cloudflare的免费套餐不支持自定义缓存键,对于需要按用户群体缓存不同版本的商品图(比如A/B测试)比较麻烦,Azure CDN支持自定义规则,可以用URL参数或Header做缓存键,这块灵活性比CloudFront稍弱但够用。
成本是老板最关心的,我们用10TB月流量做参考(其中70%来自东南亚,30%来自欧美),Azure CDN Standard层在东南亚区域价格是0.087美元/GB(前10TB),亚太其他区域0.12美元/GB,北美0.073美元/GB,CloudFront在东南亚是0.085美元/GB,Cloudflare的付费Pro套餐(含CDN)是固定20美元/月加上超量流量费,但10TB流量全走Cloudflare Pro需要付流量费,综合下来Cloudflare反而贵,但是Cloudflare有免费套餐,如果流量小(<1TB)完全免费,我们的实际账单显示,同样10TB,Azure比CloudFront贵了约6%,但比Cloudflare Pro便宜15%,要注意Azure CDN有个坑:请求数计费,我们的网站每天约300万次请求,Azure每万次请求收0.02美元,CloudFront收了0.01美元,Cloudflare免费套餐包含无限请求,这一项每月就多出几百美元,对于高请求低流量的场景(比如小文件多),Azure的请求费会明显拉高总成本。
再说运维体验,Azure CDN跟Azure生态的集成度确实高,直接在Portal里就能关联App Service、Storage Account,自动生成CDN端点,SSL证书也可以自动绑定Azure Key Vault,我们用Azure DevOps做CI/CD,部署新版本时一键更新CDN缓存规则,非常丝滑,CloudFront需要独立配置Origin Access Identity,跟S3配合虽好但跨云管理麻烦,Cloudflare则是另一套控制台,跟Azure没有原生集成,每次改配置要手动复制API令牌,不过Azure CDN的日志和监控不够精细:它只提供基础的请求数、带宽、4xx/5xx比例,没有按URL、按国家、按设备类型的详细报表,我们要看某个商品页在印尼的加载耗时,得自己写脚本把CDN日志导到Log Analytics里分析,CloudFront有丰富的CloudWatch指标和实时日志流,Cloudflare的Analytics dashboard做得最好,开箱即用能看几十个维度。
稳定性,双11当天,我们流量峰值达到日常的4倍,约40Gbps,Azure CDN表现平稳,没有出现缓存雪崩或回源过载,唯一一次故障是去年9月,Azure CDN亚太区域出现过约45分钟的延迟升高,原因是新加坡节点的一台核心路由器故障,微软后来发了事故报告,CloudFront在东南亚的历史故障次数略少,Cloudflare因为Anycast加上冗余设计,几乎没碰到过区域级故障,但Cloudflare的免费用户偶尔会遇到DNS解析延迟(他们默认用Anycast DNS),付费用户则好很多。
Azure CDN适合“深度绑定Azure生态且用户集中在Azure有POP的城市”的场景。 如果你的后端正从AWS向Azure迁移,或者你的主力用户在新加坡、香港、日本这些Azure强覆盖地区,Azure CDN能帮你降低运维复杂度,成本也处于合理区间,但如果你像我们一样,在东南亚欠发达地区(印尼二三线城市、越南农村)有大量用户,或者你需要极致的延迟和缓存命中率,那Azure目前还拼不过CloudFront和Cloudflare,如果对请求数敏感,一定要把请求费用算进TCO里,不然月底看到账单会懵,这不是黑Azure,而是实话:没有完美的CDN,只有最适合你业务的CDN。
发表评论