对一个接口进行优化的方式有很多,这里浅介绍一下 CDN 加速,为读者提供一种新的优化思路。
何为 CDN ?
CDN 即 Content Delivery Network 译为 内容分发网络
字面简单理解就是将同一份资源分发部署到多个服务器上,根据用户的请求来决定分配导向到某台服务器
为何使用 CDN ?
现如今许多人仍在使用百度搜索,试想如果百度公司在国内仅有一台服务器承接流量,那么这台服务器存放的位置就至关重要,如果服务器处于北京,那么北京网民发送的请求可以很快到达服务器,网络延迟会很低,但是远在海南的网友可就遭重了,网络请求需要经过“漫长”的时间才能抵达位于北京的服务器,这样上网的体验肯定不会很好。
在这样的背景下,无论怎样规划服务器选址都无法保证所有用户体验,所以增加服务器数量是唯一解,现在很多大型IT公司都会在全国部署多个节点服务器,采用就近访问分发用户请求来降低延迟。
但是很多的小中型企业没有充足的预算支持去全国部署服务器,所以这些大型IT公司就提供了一种 CDN 解决方案,它们负责提供全国节点服务器,小中公司只需要购买服务提供资源就可以享受 CDN。
如何实现 CDN ?
想要实现 CDN ,必须考虑以下问题:
1. 需要获取用户的位置信息
2. 根据用户位置信息分配距离最近的服务器
针对第一个问题,只需要解析用户请求 IP 地址即可
第二个问题比较复杂,
当我们访问一个网站时,本质就是将域名通过 DNS 解析到该域名对应的 IP 地址,再通过 Http 请求包将数据发送到这个 IP 地址,DNS 解析可以看作一个 Map 的映射关系,{域名:IP地址} ,通过域名获取对应的 IP 地址,但是仅仅这样是无法实现 CDN 多服务器 IP 地址挑选的,因为正常情况下一个域名对应一个 IP 地址。
所以我们需要使用各大 CDN 服务提供商的 DNS 解析服务才行,这时候我们就会用到代理域名,例如通过 {代理域名:真正域名} => {真正域名:IP地址} 起到一个中转代理的作用
在这个基础上如果想要使用厂商提供的 CDN 服务,只需将真正域名 对应到 厂商提供的DNS服务器域名即可,DNS解析识别到这个域名对应了一个专用的DNS解析服务器,就会自动导向这个服务器, 再经过这个厂商提供专用DNS服务器内部分配到最近的服务器IP地址即可
{真正域名:厂商代理DNS服务} => {厂商代理DNS服务:距离最近的服务器IP地址}