知识卡片
多CDN与多云存储互备的容灾设计
内容
短视频服务高度依赖CDN和云存储这类外部资源,美拍的容灾设计因此格外强调”不能只信任单一厂商”这条原则,具体体现在三个层面。cache容灾:借鉴微博的多级cache机制——核心cache资源配置主备节点,避免单一节点挂掉后请求穿透到后端数据库把DB压垮;对请求量特别大的热点资源,还会在前面再加一层L1的LRU cache来进一步规避和缓解压力,形成”L1本地cache→分片cache主备→数据库”的多级防线。CDN容灾:通过接入多家供应商实现互备,用基调等工具持续检测各服务商的链路和服务状态,一旦发现某家有问题,就通过DNS做区域切换;因为不同CDN厂商的服务表现并不对等,选型时需要综合考察可用性、节点布点和链路状况、回源量、资源冗余量、晚高峰链路状况,以及是否针对多媒体场景做过单独优化,才能判断一家CDN是否真正”靠谱”。云存储容灾:美拍主要采用两家云存储互备的方式——因为国内网络链路状况容易出问题,可能导致个别上传请求失败,甚至云服务商本身出现故障,所以上传时优先走主云服务,一旦失败就自动切到备用云服务;服务端层面还可以做整体降级,直接从主云服务降级读写到备用云服务。团队基于每日统计发现,这套双云互备方式至少能提升上传可用性0.1%以上,某些极端情况下可提升到1%,它的主要作用不在于让日常表现有多亮眼,而在于当某个云服务商节点出现短暂或长时间不可用时,不会对整体服务造成太大影响。这三层容灾设计共同体现了一条通用原则:任何外部依赖(无论是CDN还是云存储)本质上都是不受自己控制的单点风险,只有引入多家供应商互备、并配上能自动或半自动切换的检测机制,才能把外部厂商的不可靠性转化成对自己服务可控的、有限的影响。
参考来源
- 位置:《高可用架构(第1卷)》第1章《高可用架构案例精选》"1.6 亿级短视频社交美拍架构实战"节,"1.6.4 为支持亿级用户,美拍架构所做的一些改进"(源文件:_epub-src/OEBPS/Text/Chapter1_6_5.xhtml)
- 结论依据:原文说明"CDN容灾主要通过接入多家供应商进行互备……当发现服务有问题的时候,通过DNS进行区域的切换……云存储容灾,目前美拍也主要使用两家互备的方式……通过这个方式至少提升上传的0.1%以上的可用性",直接支撑本卡片结论。
- 原始内容:CDN容灾主要通过接入多家供应商进行互备,然后通过一些基调检测不同服务厂商的链路和服务状态……目前的做法是上传优先走主的云服务,如果上传失败的话,那么就会启用备的云服务……基于每天的统计来看,通过这个方式至少提升上传的0.1%以上的可用性。