无线APP时代HTTP请求DNS优化-通用

简介: 无线时代,网络稳定性差,应用流量敏感,APP与server之间每次HTTP请求都需要DNS解析,有没有优化方法呢?

缘起:无线时代,网络稳定性差,应用流量敏感,APP与server之间每次HTTP请求都需要DNS解析,有没有优化方法呢?

一、PC时代,HTTP请求处理过程

image.png

(1)浏览器、或者PC客户端访问DNS服务器,由域名拿到IP(一般来说是个nginx的IP)

(2)浏览器、或者PC客户端用IP访问nginx

(3)nginx将请求分发给实际处理HTTP请求的web-server

二、无线APP时代的特点

(1)DNS解析的时间不能忽略

(2)一旦DNS被劫持,整个APP就挂了(还记得N年前baidu的域名被劫持的事情么?)

三、一种不需要DNS解析的HTTP请求优化方案

image.png

(1)第一次访问时,先拉取server的ip-list保存到本地,访问过程与普通HTTP访问过程相同

(2)未来访问时,客户端直接使用ip-list中的IP来访问server,不再需要DNS

(3)如果DNS被劫持,直接尝试使用ip-list中的IP访问

四、潜在的问题

(1)虽然少了一步DNS查询和一步nginx中转,那怎么做负载均衡呢?

答:APP随机访问ip-list中的IP

(2)使用nginx可以方便的增加后端的服务,不使用nginx如何做水平扩展呢?

答:直接在ip-list中增加ip即可

(3)每次访问都要访问ip-list,还是挺废流量的,还有其他优化方案么?

答:增加一个版本号,第一次拉取ip-list时,不但把ip-list放到APP本地,并把版本号也拿到。未来不用每次都拿ip-list,而是先拿版本号,如果版本号不变,直接使用本地的ip-list。只有版本号变化时,才需要重新拉取ip-list

(4)还有其他什么好处?

答:使用nginx不好做异构服务器的负载均衡,即难以根据后端服务的处理能力来分配负载。使用ip-list,只要加上一个权重参数,即可实现异构服务器的负载均,例如:

192.168.1.1, 10

192.168.1.2, 10

192.168.1.3, 20

可以看到,第三个后端服务的处理能力是前两个的两倍,APP做负载均衡时考虑上第二个参数即可

五、再次总结这种方案的好处

(1)不需要每次请求做DNS解析,节省时间

(2)不需要每次请求做nginx转发,节省时间

(3)不需要每次拉取拉取ip-list,节省流量

(4)DNS被劫持时仍可以使用本地ip

目录
相关文章
|
2月前
|
JSON 监控 API
掌握使用 requests 库发送各种 HTTP 请求和处理 API 响应
本课程全面讲解了使用 Python 的 requests 库进行 API 请求与响应处理,内容涵盖环境搭建、GET 与 POST 请求、参数传递、错误处理、请求头设置及实战项目开发。通过实例教学,学员可掌握基础到高级技巧,并完成天气查询应用等实际项目,适合初学者快速上手网络编程与 API 调用。
387 130
|
3月前
HTTP协议中请求方式GET 与 POST 什么区别 ?
GET和POST的主要区别在于参数传递方式、安全性和应用场景。GET通过URL传递参数,长度受限且安全性较低,适合获取数据;而POST通过请求体传递参数,安全性更高,适合提交数据。
447 2
|
4月前
|
Go 定位技术
Golang中设置HTTP请求代理的策略
在实际应用中,可能还需要处理代理服务器的连接稳定性、响应时间、以及错误处理等。因此,建议在使用代理时增加适当的错误重试机制,以确保网络请求的健壮性。此外,由于网络编程涉及的细节较多,彻底测试以确认代理配置符合预期的行为也是十分重要的。
188 8
|
3月前
|
JSON JavaScript API
Python模拟HTTP请求实现APP自动签到
Python模拟HTTP请求实现APP自动签到
|
3月前
|
数据采集 JSON Go
Go语言实战案例:实现HTTP客户端请求并解析响应
本文是 Go 网络与并发实战系列的第 2 篇,详细介绍如何使用 Go 构建 HTTP 客户端,涵盖请求发送、响应解析、错误处理、Header 与 Body 提取等流程,并通过实战代码演示如何并发请求多个 URL,适合希望掌握 Go 网络编程基础的开发者。
|
4月前
|
缓存 JavaScript 前端开发
Vue 3 HTTP请求封装导致响应结果无法在浏览器中获取,尽管实际请求已成功。
通过逐项检查和调试,最终可以定位问题所在,修复后便能正常在浏览器中获取响应结果。
198 0
|
4月前
|
Go
如何在Go语言的HTTP请求中设置使用代理服务器
当使用特定的代理时,在某些情况下可能需要认证信息,认证信息可以在代理URL中提供,格式通常是:
336 0
|
21天前
|
缓存 移动开发 JavaScript
如何优化UniApp开发的App的启动速度?
如何优化UniApp开发的App的启动速度?
302 139
|
21天前
|
移动开发 JavaScript weex
UniApp开发的App在启动速度方面有哪些优势和劣势?
UniApp开发的App在启动速度方面有哪些优势和劣势?
249 137

相关产品

  • 云解析DNS
  • 推荐镜像

    更多
  • DNS