APP还在用域名连接后端?用IP提速N倍!

简介: 无线时代,网络稳定性差,应用流量敏感,APP与Server之间每次HTTP请求都需要进行DNS解析,有没有可能直接使用IP来提速呢?

原创: 58沈剑 架构师之路 原文3月8日


无线时代,网络稳定性差,应用流量敏感,APP与Server之间每次HTTP请求都需要进行DNS解析,有没有可能直接使用IP来提速呢?

典型HTTP请求处理过程如何?

image.png

第一步,客户端访问DNS服务器,由域名拿到Nginx的外网IP;

第二步,客户端使用外网IP访问Nginx;

第三步,Nginx将请求分发给实际处理HTTP请求的Web-server;

移动时代APP的访问特点如何?

(1)网络慢,DNS解析的时间不能忽略;

(2)一旦DNS被劫持,整个APP就挂了;

APP能够把Web-server的ip-list内置,从而跳过DNS解析,跳过Nginx中转,直接通过IP访问后端的Web-server么?

不行,Web-server的扩展性较差,增加IP时APP没办法得到通知。

画外音:Nginx可以保证Web-server的高可用,去掉Nginx后,需要APP重试,或者Web-server做高可用。

如何进行优化呢?

image.png

不要将ip-list内置在APP里,而是通过HTPP请求来拉取:

(1)APP第一次访问时,先拉取Web-server的ip-list保存到APP本地;

画外音:使用域名拉取ip-list,只1次访问。

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

画外音:使用IP访问业务Web-server,所有业务请求。

跳过了Nginx,如何对Web-server怎么做负载均衡呢?

APP随机访问ip-list中的IP。

跳过了Nginx,如何对Web-server做水平扩展呢?

直接在ip-list中增加IP即可。

新的问题又来了,在ip-list里增加了IP,新的用户能访问到新的IP,旧的APP已经将ip-list拉取到APP本地了,此时如何更新本地的ip-list呢?

版本号,是架构设计中,减少拉取流量的同时,又能保证数据随时更新的好办法:

(1)ip-list增加一个版本号,每次拉取ip-list时,同时拿到版本号;

(2)如果版本号与本地ip-list版本号一致,则直接使用本地ip-list;

画外音:节省流量,不用每次拉取文件。

(3)版本号变化时,重新拉取ip-list保存到本地;

画外音:保证数据能够得到更新。

总结

无线时代,可使用“IP直通车”来加速APP访问:

不需要每次请求做DNS解析,节省时间,避免DNS劫持

不需要每次请求做Nginx转发,节省时间

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

通过ip-list可以对Web-server做水平扩展

通过版本号可以保证ip-list的数据一致性

思路比结论更重要。

image.png

架构师之路-分享通俗易懂的技术文章

目录
相关文章
|
JSON 自然语言处理 前端开发
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
763 72
【01】对APP进行语言包功能开发-APP自动识别地区ip后分配对应的语言功能复杂吗?-成熟app项目语言包功能定制开发-前端以uniapp-基于vue.js后端以laravel基于php为例项目实战-优雅草卓伊凡
|
网络协议
【Azure App Service】App Service 如何配置私网域名以及证书呢?
本文解答了关于 Azure App Service 如何配置私网域名及证书的问题。App Service 不支持私网域名,自定义域名需配置在公共 DNS 服务器上。文章引用官方文档详细说明了映射自定义 DNS 的步骤,并附带参考资料链接,帮助用户深入了解相关配置方法。
365 6
|
前端开发 Java 数据库连接
Java后端开发-使用springboot进行Mybatis连接数据库步骤
本文介绍了使用Java和IDEA进行数据库操作的详细步骤,涵盖从数据库准备到测试类编写及运行的全过程。主要内容包括: 1. **数据库准备**:创建数据库和表。 2. **查询数据库**:验证数据库是否可用。 3. **IDEA代码配置**:构建实体类并配置数据库连接。 4. **测试类编写**:编写并运行测试类以确保一切正常。
846 2
|
域名解析 存储 缓存
域名解析 DNS:连接数字世界的关键枢纽
在数字世界中,DNS(域名解析系统)如同一位至关重要的引路人,将我们输入的域名与对应的IP地址相连,使我们可以轻松访问各种网站和服务。它通过多级服务器查询,将易于记忆的域名转换为复杂的IP地址,极大提升了互联网的易用性和普及度。尽管面临网络延迟和域名数量激增等挑战,通过分布式系统和缓存技术等创新方案,DNS 系统将持续发展,为用户提供更安全、高效的网络体验。
403 2
|
前端开发 Java
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
文章介绍了如何使用SpringBoot创建简单的后端服务器来处理HTTP请求,包括建立连接、编写Controller处理请求,并返回响应给前端或网址。
570 0
学习SpringMVC,建立连接,请求,响应 SpringBoot初学,如何前后端交互(后端版)?最简单的能通过网址访问的后端服务器代码举例
|
缓存 网络协议 API
【API管理 APIM】APIM中对后端API服务的DNS域名缓存问题
【API管理 APIM】APIM中对后端API服务的DNS域名缓存问题
273 4
|
网络协议 安全 前端开发
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
【应用服务 App Service】Azure 应用服务测试网络访问其他域名及请求超时限制(4分钟 ≈ 230秒)
237 2
若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
若依修改,若依部署在本地运行时的注意事项,后端连接了服务器,本地的vue.config.js要先改成localhost:端口号与后端匹配,部署的时候再改公网IP:端口号
|
前端开发 NoSQL 数据库
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
部署常用的流程,可以用后端,连接宝塔,将IP地址修改好,本地只要连接好了,在本地上前后端跑起来,前端能够跑起来,改好了config.js资料,后端修改好数据库和连接redis,本地上跑成功了,再改
|
网络协议
【Azure 应用服务】App Service与Application Gateway组合使用时发生的域名跳转问题如何解决呢?
【Azure 应用服务】App Service与Application Gateway组合使用时发生的域名跳转问题如何解决呢?
230 0