我们知道 , 在整个 DNS 体系中 , 域名所有者指定的 DNS 是掌握域名最终解释权的一方 , 被称为权威服务器;而网络中其他的 DNS 则会缓存权威服务器的解释 , 它们所给出的答案 , 被称为非权威应答 。在“不可或缺的CDN”一节中提到过 , DNS 是帮助用户实现就近访问的关键 , 其奥义就在于资源站点域名的权威 DNS 会根据本地 DNS 的位置 , 就近分配 IP 地址 。“本地” , 是此法行之有效的前提 , 也就是终端用户与其所使用的 DNS 须同处一隅 。
也许是疏于防范 , 也许是有意为之 , 域名劫持现象屡见不鲜 , 侵蚀了作为互联网基石的 DNS 体系 。主打安全的公共 DNS 越来越受欢迎 , 许多用户开始放弃ISP 提供的本地 DNS , 转而使用公共 DNS 。有名的如 IBM 的9.9.9.9 , google 的8.8.8.8 , 以及中国电信的 114.114.114.114 , 这些 IP 地址远比大多数域名更加令人过目难忘 , 用作公共 DNS 地址 , 再合适不过了 。采用任播(AnyCast)技术的公共 DNS 面向全球用户提供域名解析服务 , 其自身不具有地域特征 , 这就使得上游的权威 DNS——即 CDN 厂商的 DNS——难以判断域名解析请求的真实来源 , 也就无法为其分配就近的边缘节点地址 。尽管随着 EDNS0 协议的落地 , 有望缓解这一矛盾 , 但是要求公共DNS 为每一个客户端单独缓存解析结果 , 从而百分之百地忠实于权威 DNS , 这在技术上是不太现实的 。因此 , 当GSLB 遇到公共 DNS 时 , DNS 污染的问题不可避免 。
公共 DNS 所引发的边缘节点错配 , 对于 CDN 是一个严肃的问题 。对于网站来说 , 如果坚持使用单一域名提供静态资源服务 , 依靠 DNS 来选择 CDN , 则可能导致更为严重的供应商错配的故障 。因此 , 我们需要以“动”制“静” , 在服务端动态页面程序中引入特定的 API , 具体分析每一个用户请求 , ?根据其来源 IP 地址判断终端用户所在区域或网络情况 , ?根据预先确定的策略分配静态资源域名 , 生成最终的静态资源 URL 返回给浏览器 , ?再由相应的 CDN 提供资源访问服务 。该接口的时间开销被限制在1毫秒以内(实际低于这个值) , 这个代价是可以承受的 。
采用多域名策略 , 不仅可以规避 DNS 污染的风险 , 还有利于减少客户端在域名解析(DNSLookup)环节的时间开销 。DNS 是一个层层递进的系统 , 遇到一个全新的域名时 , 客户端从发起解析请求到获得 IP 地址 , 中间消耗的时间可能长达数百毫秒甚至更久 , 关键的因素在于权威服务器的距离远近 。单一域名在全球不同区域的解析时间 , 势必有长有短 。而使用区域相关域名 , 比如国别域名 , 可以显著降低解析时间 , 这算是一个附带的好处 。

文章插图
站在开发人员的角度 , 依赖服务端 API 动态生成 URL , 当然不够直观 。然而 , 服务端的一刹那 , 换来的不止于更好的静态资源服务性能 , 也让我们具备了静态资源灰度发布能力 , 以及 CDN 级别的容灾能力 , 可谓一举多得 。应国际化而生的“动静结合”的理念 , 已孵化出一个集发布、部署、运维于一体的全新的静态资源解决方案 。
从动静分离到动静结合 , 始于动态 , 归于动态 , 真是天道好轮回 。
八、未来向何处去?爱因斯坦说过:时间是种幻觉 。然而 , 这种幻觉实实在在地驱动着我们的工作 。互联网让信息的传播速度出现了质的飞跃 , 却刺激着受众的灵魂 , 变得更加迫不及待 。4K 解析度和 120FPS 帧率超高清电视的出现 , 似乎在宣扬人类对于感官极限的追求永无止境 。
HTTP Archive 的报告显示 , 当前 PC 端 Web 页面的 onLoad 时间平均超过6秒 , 而移动端更是接近20秒 。作为全球领先的 OTA 公司 , 携程的数据要好看得多 , 这是自然的 , 也是应该的 , 但是秒级和百毫秒级的页面加载时间 , 距离已知的极限还很远 。HTTP/2 和 HTTP/3 不断挖掘现有传输网络的潜力 , 而我们的静态资源解决方案也会随之修正 。看起来 , 似乎还可以沿着当前的道路走很久 。
推荐阅读
- 一文理解HDFS
- 一文带你搞懂前端本地存储
- 一文带你了解不一样的SQL,惊喜多多
- iOS|iOS 16前的最后一个版本!iOS 15.5登场:一文了解详情
- 一文读懂Redis的dict字典数据结构
- 新疆维吾尔自治区|一文带你了解和田玉“前世今生”
- 为啥“不合格”却没有处罚 看懂路由器检测
- HDMI 2.0已淘汰!HDMI 2.1上位:一文看懂新接口优势
- 索尼|PS5存储扩容需要注意啥?一文读懂
- 一文读懂AI计算机视觉技术
