移动网络优化中的域名系统优化
时间:2020-10-20
由于其无线网络的特殊性,许多在个人电脑时代不需要考虑的问题将在移动互联网时代凸显出来,如本文提到的HTTP请求中的DNS解析。
在无线网络时代,网络稳定性差,应用流量敏感。应用程序和服务器之间的每个HTTP请求都需要DNS解析。关键是无线网络的域名解析通常不能像你所期望的那样工作。幸运的是,没有优化方法。
对于移动网络中各种各样的域名系统杂症,你也可以阅读:对杂症如移动终端中域名系统域名劫持的全面了解:技术原理、问题根源、解决方案等。
个人电脑时代的HTTP请求处理流程
移动网络优化中的域名系统优化
(1)浏览器或个人电脑客户端访问域名系统服务器并从域名中获取IP(一般来说,它是一个网络IP)
(2)浏览器或个人电脑客户端用IP访问引擎
(3)nginx将请求分配给实际处理HTTP请求的网络服务器
移动互联网时代的特征
(1)域名解析时间不可忽略
(2)一旦域名系统被劫持,整个应用程序都会死亡(还记得n年前百度域名被劫持吗?)
一种无域名解析的HTTP请求优化方案
移动网络优化中的域名系统优化
(1)第一次访问时,首先拉服务器的ip列表并保存在本地,访问过程与普通的HTTP访问相同
(2)将来访问时,客户端直接使用ip列表中的IP访问服务器,不再需要DNS
(3)如果域名系统被劫持,尝试直接在ip列表中使用IP访问
潜在问题
(1)尽管少了一步DNS查询和一步nginx传输,如何平衡负载?
答:应用程序随机访问ip列表中的IP
(2)使用nginx可以轻松增加后端服务。没有nginx,我们如何水平扩展?
答:将ip直接添加到ip列表中
(3)每次都必须访问ip-list,这仍然会浪费流量。还有其他优化方案吗?
答:添加版本号。当您第一次提取ip列表时,您不仅会将ip列表本地放入APP,还会获得版本号。将来,我们应该先得到版本号,而不是每次都得到ip列表。如果版本号不变,我们将直接使用本地ip列表。只有当版本号改变时,才需要再次拉ip列表
(4)还有什么其他好处?
答:使用nginx很难平衡异构服务器的负载,即很难根据后端服务的处理能力来分配负载。使用ip-list,只要添加一个权重参数,就可以实现异构服务器的负载分担,例如:
192.168.1.1,10
192.168.1.2,10
192.168.1.3,20
可以看出,第三个后端服务的处理能力是前两个的两倍,第二个参数可以在APP执行负载平衡时考虑。