手机 APP 怎么做到动态切换域名?
在手机 APP 初始化配置了域名 A 和域名 B ,如果域名 A 访问慢,切换到域名 B 访问,我们是根据 ping 值,或者无法访问作为一个判断的依据。
这样有没有问题,请教诸位大神,或者有更好的思路不吝赐教。
500 就切换,以防万一逻辑可以做在客户端,再另外配置域名拉域名名单,每个域名再配置拉最新名单
这个不是应该在 dns 负载那头动脑筋嘛?
就像楼上说的 dns 负载均衡,或者你分区域分运营商解析。
要么直接用 cdn 。
不过你这访问响应,能根据用户的 ping 值?
直接用腾讯云 DNS 解析,付费就能开通 IGTM 做故障监测自动切换,不需要理解高深的 HA 架构、不需要改动代码解决。
这个有点类似翻墙软件的负载均衡,选择最快的节点,可以定时检测,使用一条 URL 检查响应时间
根据 ping 值切换是不是有些草率了?
可以用一个简单接口代替 ping ,其他都没有问题
各位,关键问题是 A 域名是天朝,B 域名是某国,这些都无效,这些 DNS 可能无法用上
你服务器 ip 和域名无关。
你分区域解析,不就行了。
难道你以为同一服务器,绑定不同国别域名,访问速度就会不一样?
如果你是个正经的 app ,就不要在国内上架能访问海外的,反之亦然
搞个小文件放到两个域名,客户端在网络切换或者其他有必要的场景下,去下载文件竞速,选择更快的域名
正统的做法是用一个域名做智能 dns ,国内用户返回国内 ip ,国外用户返回国外 ip 。
如果你要做竞速,建议别用 ping ,直接用 tcp/https 发起第一个请求,看哪个请求先有回复就用哪个。因为有些网络环境(例如 fakeip )是没法 ping 的。
楼上正解,智能 DNS
接#12 为什么不要用 ping ,因为有些网络环境,例如 fakeip 环境解析出的 ip 地址是假 ip (常见 198.18.x.x ),ping 是毫无意义的,另外某些网络防火墙可能会屏蔽 icmp 或者 tcp 包,出现 ping 不通但 tcp 通 或者 ping 通但是 tcp 不通的情况。
如果你需要多服务器竞速,可以专门做一个 api 接口简单返回“OK”数据包,在 app 启动/网络切换/连接出错时,同时对多个服务器发起这个 api 请求,看哪个先返回就优先哪个。
用户的网络情况可能是很复杂的,即便是在没有防火墙的国家,也可能会遇到比如连接了需要登录的 Wi-Fi 之类的情况,所有域名解析都会被拦截并跳转到 Wi-Fi 登录页面,所以 ping 、tcp ping 、普通 http 请求都是不可靠的。
所以 #12/#14 正解,但是服务器竞速比较常用的方法是提供一个 http 的 /generate_204 接口(/generate_204 属于事实上的标准,虽然没有定义标准,但大部分网站选择遵守),这个接口没有任何逻辑,仅返回 HTTP 状态码 204 ,且没有 body 。业务需要判断接口返回的状态码是 204 而非其他。
在 /generate_204 正常返回之前,都属于网络未连接的状态,应当以一定时间间隔(通常时间间隔越来越大)重试,直到最先返回的就是最快的。后续定期检查更新网络状态。
谢谢各位 V 友的解答,各位新年快乐!
而且手机似乎会在网络变化 dns 服务器变更的时候 dns 记录自动失效,已经建立的连接也会断开,这样分区解析会自动更新,毕竟手机是移动的
一般来说,负载均衡是优先在服务器侧做的,对外入口是负载均衡网关,网关做健康监测和转发。
在此之上客户端做的是 fallback ,这个一般用连接超时和响应异常,不推荐用 ping ( icmp echo ),而且很多环境只管 tcp udp 能不能通的。
参考 bilibili 请求一个接口,返回这个地域可用的 api ip 即可。。
bilibili 很多接口都没 https 直接抓包能看到不少东西
{
"dns":[
{
"host":"app.bilibili.com",
"client_ip":"58.19.1.96",
"ips":[
"221.15.71.67",
"221.15.71.66",
"221.15.71.65",
"61.240.206.10",
"221.15.71.64",
"61.240.206.13",
"112.83.140.13",
"112.83.140.12",
"61.240.206.11",
"61.240.206.12",
"112.83.140.11",
"112.83.140.14"
],
"type":1,
"ttl":52,
"origin_ttl":90
}
]
这是 bilibili 请求
203.107.1.34:80/191607/resolve?host=app.bilibili.com&query=4
你说他是怎么做的?。特殊地区返回特殊 ip
刚买的威联通 NAS 和一块京东自营的希捷 16T 硬盘和淘宝南京总代的西数 16T 硬盘,刚才发现在 nas 系统里面,两块盘速度相差特别大,新手小白不知道这是否正常,淘宝店…
公司有 APP ,小程序,PC 各端 ,我是负责小程序开发的,整体进度比 APP 落后很多,功能就是不断的同步 APP 的功能。 然后我问后端要接口,他让我自己去用 APP 抓…
想把 NAS 里的接近 2T 的文件存到 google drive 里,感觉花钱的总归会靠谱些。 看到 google one 年付一年 99 刀,可以接受,但是还想请问下除了年…