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

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

相关实践学习
基于函数计算快速搭建Hexo博客系统
本场景介绍如何使用阿里云函数计算服务命令行工具快速搭建一个Hexo博客。
目录
相关文章
|
1月前
|
开发者 iOS开发
【教程】无法验证 app 需要互联网连接以验证是否信任开发者
【教程】无法验证 app 需要互联网连接以验证是否信任开发者
|
3月前
|
域名解析 缓存 网络协议
当使用IP地址可以访问应用系统,但通过域名无法访问时
【1月更文挑战第14天】【1月更文挑战第68篇】当使用IP地址可以访问应用系统,但通过域名无法访问时
44 6
|
4月前
|
域名解析 应用服务中间件 网络安全
自己的ip地址被别人的域名解析到?已解决
自己的ip地址被别人的域名解析到?已解决
|
4月前
|
移动开发
钉钉H5微应用配置IP,应用首页地址报错:app url exceeds max length limit,这个怎么处理?
钉钉H5微应用配置IP,应用首页地址报错:app url exceeds max length limit,这个怎么处理?
298 0
|
10天前
|
网络协议 Ubuntu Linux
|
1月前
|
移动开发 数据安全/隐私保护
HC05蓝牙模块与手机APP连接
HC05蓝牙模块与手机APP连接
41 1
|
1月前
uni-app 63egg.js后端用户上线和下线深度剖析
uni-app 63egg.js后端用户上线和下线深度剖析
16 1
|
1月前
uni-app 62websocket连接权限验证和强制下线
uni-app 62websocket连接权限验证和强制下线
20 3
|
1月前
|
API
uni-app 25后端api开发和前后端交互(51-60)
uni-app 25后端api开发和前后端交互(51-60)
28 2
uni-app 25后端api开发和前后端交互(51-60)
|
1月前
|
中间件 API 数据库
uni-app 25后端api开发和前后端交互(1-50)
uni-app 25后端api开发和前后端交互(1-50)
100 0
uni-app 25后端api开发和前后端交互(1-50)