本文最后更新于:2020年11月10日 晚上
DNS全局负载均衡过程:
1、如客户端访问某域名时(example.com),会先请求本地DNS解析器,本地DNS解析器会查看本地缓存是否有该域名的记录,有则直接使用,无则请求本地DNS服务器;
2、本地DNS服务器一般部署在数据中心或者所在运营商网络中,本地DNS服务器查看是否有缓存,若无缓存,则请求根DNS服务器;
3、根DNS服务器解析会,会提供管理.com域名的顶级域名服务器地址,本地DNS服务器继续请求该地址;
4、顶级域名服务器解析后,则提供管理example.com的权威域名服务器地址,本地DNS服务器继续请求该地址;
5、在example.com的权威域名服务器中,一般会以CNAME的方式配置example.com的别名,然后让本地DNS服务器请求GSLB解析这个别名,GSLB 就可以在解析这个域名的过程中,通过自己的策略实现负载均衡,返回给客户端对应的IP地址。
传统DNS存在的问题:
1、域名缓存问题;2、域名转发问题;3、域名更新问题;4、解析延迟问题
HttpDNS的工作模式:
HttpDNS往往在移动端使用,客户端的SDK动态的请求服务端,获取HttpDNS服务器的IP列表缓存在本地,当手机要请求一个网址时,会优先使用本地缓存,若本地无对应缓存,则请求HttpDNS服务器,由服务器返回要访问的网站的IP列表
HttpDNS的缓存设计:
HttpDNS 的缓存设计策略分为客户端、缓存、数据源三层。对应手机客户端、DNS缓存、HttpDNS服务器。
客户端SDK中的缓存会严格按照缓存过期时间,如果缓存未命中或过期,会发起一次解析,保障记录是最新的;
解析分为同步和异步两种方式:
1、同步解析:
直接调用 HttpDNS 的接口,返回最新的记录,更新缓存;优点是实时性好;缺点是如果有多个请求都发现过期的时候,同时会请求HttpDNS 多次,造成资源浪费;
同步更新的方式对应到应用架构中缓存的 Cache-Aside 机制,也即先读缓存,不命中读数据库,同时将结果写入缓存。
2、异步解析:
添加一个解析任务到后台,由后台任务调用 HttpDNS 的接口;优点是,可以将多个请求都发现过期的情况,合并为一个对于 HttpDNS 的请求任务,只执行一次,减少 HttpDNS 的压力。同时可以在即将过期的时候,就创建一个任务进行预加载,防止过期之后再刷新,称为预加载;缺点是当前请求拿到过期数据的时候,如果客户端允许使用过期数据,则存在过期数据不能访问风险。
异步更新的机制对应到应用架构中缓存的 Refresh-Ahead 机制,即业务仅仅访问缓存,当过期的时候定期刷新。
HttpDNS调度设计:
1、在客户端,客户端的SDK会收集手机的位置、运营商、网络情况等信息,HttpDNS 服务端根据这些信息,选择最佳的服务节点返回。
2、在服务端,应用可以通过调用 HttpDNS 的管理接口,配置不同服务质量的优先级、权重。HttpDNS 会根据这些策略综合地理位置和线路状况算出一个排序,优先访问当前那些优质的、时延低的 IP 地址。
CDN(内容分发网络):
CDN加速意思就是在用户和我们的服务器之间加一个缓存机制,通过这个缓存机制动态获取IP地址根据地理位置,让用户到最近的服务器访问。
CDN系统能实时的根据网络流量和各节点的连接,负载状况及用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上,其目的是使用户能就近的获取请求数据,解决网络拥堵,提高访问速度,解决由于网络带宽小,用户访问量大,网点分布不均等原因导致的访问速度慢的问题。
CDN分发过程:
用户向浏览器提供需要访问的域名;
浏览器调用域名解析库对域名进行解析,由于CDN对域名解析过程进行了调整,所以解析函数库一般得到的是该域名对应的CNAME记录,为了得到实际的IP地址,浏览器需要再次对获得的CNAME域名进行解析以得到实际的IP地址;在此过程中,使用的全局负载均衡DNS解析。如根据地理位置信息解析对应的IP地址,使得用户能就近访问;
此次解析得到CDN缓存服务器的IP地址,浏览器在得到实际的ip地址之后,向缓存服务器发出访问请求;
缓存服务器根据浏览器提供的要访问的域名,通过Cache内部专用DNS解析得到此域名的实际IP地址,再由缓存服务器向此实际IP地址提交访问请求;
缓存服务器从实际IP地址得到内容以后,一方面在本地进行保存,以备以后使用,二方面把获取的数据放回给客户端,完成数据服务过程;
客户端得到由缓存服务器返回的数据以后显示出来并完成整个浏览的数据请求过程。
动态CDN:
1、边缘计算模式:定时从源数据那里同步存储的数据,然后在边缘进行计算得到结果。
2、路径优化模式:数据的计算在源站生产,数据下发通过CDN网络,并对路径进行优化.
本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!