V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
cdring
V2EX  ›  程序员

请教多域名请求问题

  •  
  •   cdring · 10 小时 20 分钟前 · 1171 次点击
    各位大神,后台 api 配置了多个域名。前端如何检测这些域名,哪个延迟低拿哪个域名请求后端 api 。这多个域名是存数据库后端返回给前端。还是直接写到 json 文件,前端请求 https://xx.com/domain.json 获取。哪个方案比较好,有没有其他更好的方案,谢谢。
    32 条回复    2024-10-25 18:36:18 +08:00
    proxytoworld
        1
    proxytoworld  
       10 小时 17 分钟前
    为什么不是后端监测哪个延迟低就用那个, 你这样配多个域名,还得多域名解析,检测
    InDom
        2
    InDom  
       10 小时 13 分钟前
    不要一直切换,发现失败或延迟高的时候再切换。

    不经常换就 json ,存数据库静态回到文件,或者重写 json url 到程序也一样,这里根本不是问题。
    lcy630409
        3
    lcy630409  
       10 小时 8 分钟前
    第一次的时候测试+设置里 手动切换
    cdring
        4
    cdring  
    OP
       10 小时 1 分钟前
    @proxytoworld 设计到海外用户,每个 api 域名套了不同厂商的 cdn 加速,所以每个国家的访问 api 域名延迟都不一样。直接前端请求域名延迟比较好吧。
    cdring
        5
    cdring  
    OP
       10 小时 1 分钟前
    @lcy630409 太麻烦了,还是自动方便些
    cdring
        6
    cdring  
    OP
       9 小时 59 分钟前
    @InDom 打开前端页面就检测哪个域名延迟低,然后就拿这个延迟低的域名请求后端。这样不好吗
    DesnLee
        7
    DesnLee  
       9 小时 58 分钟前
    每次请求都同时全部请求,拿第一个返回的结果,其他丢弃
    webszy
        8
    webszy  
       9 小时 52 分钟前
    @DesnLee 厉害,有道理
    cdring
        9
    cdring  
    OP
       9 小时 52 分钟前
    @DesnLee 万一第一个返回的域名延迟高呢。导致访问很慢
    spritecn
        10
    spritecn  
       9 小时 46 分钟前
    这个事前公司做过,通过自研壳浏览器做到的
    wangyongbo
        11
    wangyongbo  
       9 小时 46 分钟前
    @cdring DNS 可以根据 用户的 IP 所属的地域 , 把域名解析到不同的 IP. 这个功能满足不了你们的需要吗?
    jenson47
        12
    jenson47  
       9 小时 39 分钟前
    看具体需求,按道理 cdn 在某个地方应该是比较稳定的,或者说我们就认为心跳的响应时间在多少之内是 ok 的。
    第一次或者当超过响应时间,就触发一次选择 api ,前端并发的去请求,就用第一个回来的,其他都废弃,或者保留前三,轮着来?
    lasuar
        13
    lasuar  
       9 小时 35 分钟前
    你后来 多数据库的一致性问题呢
    liuliancao
        14
    liuliancao  
       9 小时 27 分钟前
    这个原始需求是希望用户使用最快的 cdn 链接吗 这个肯定在前端做好点 不过最好是自己搞一个域名 做一下区域 dns 不要写进代码里面 这个是可以测试的 不同区域哪个 cdn 好
    8355
        15
    8355  
       9 小时 24 分钟前
    这个 cdn 和云厂商都有相关的业务吧
    比如说阿里云叫全球加速
    yplam
        16
    yplam  
       9 小时 16 分钟前 via Android
    如果这个 JSON 请求同时用作测速的话用静态文件好点,不然你后端还要保证在不同 QPS 下响应速度一致
    cdring
        17
    cdring  
    OP
       9 小时 15 分钟前
    @spritecn 自研壳浏览器,你们公司厉害
    cdring
        18
    cdring  
    OP
       9 小时 14 分钟前
    @jenson47 这也是一种办法
    cdring
        19
    cdring  
    OP
       9 小时 13 分钟前
    @lasuar 不设计到多数据库
    cdring
        20
    cdring  
    OP
       9 小时 13 分钟前
    @8355 是的。
    cdring
        21
    cdring  
    OP
       9 小时 12 分钟前
    @yplam 目前是计划用静态资源做,我过来请教看有没有更好的方案
    8355
        22
    8355  
       9 小时 7 分钟前
    @cdring #20 除了自动加速以外主要是用二级域名指向不同的区域节点,比如欧洲/美国等等通常是为了某些业务的特殊性比如说欧洲的 GDPR 等等可以强制根据某些业务层面地址或者其他定位信息进行划分强制走某二级域名。
    cdring
        23
    cdring  
    OP
       8 小时 36 分钟前
    @8355 好的,谢谢
    ounxnpz
        24
    ounxnpz  
       8 小时 20 分钟前
    如果是网页的话,可以用同一个域名,用 DNS Geolocation 之类的方法(具体取决于 DNS 服务商)实现不同区域解析到不同的 IP
    sunchuo
        25
    sunchuo  
       7 小时 37 分钟前   ❤️ 1
    哎。这个项目感觉不太对劲。🤦
    iapplebear
        26
    iapplebear  
       7 小时 22 分钟前
    刚好昨天做了这个需求,在前面先 ping 所有节点,哪个快就存到本地,记录一个时间戳我们是 1 小时,下次对比时间戳再重新 ping
    perfectlife
        27
    perfectlife  
       7 小时 18 分钟前 via Android
    智能 dns 呢,同一个域名不同国家地区解析到不同的地址
    kaf
        28
    kaf  
       6 小时 57 分钟前
    后端开一个延迟检查接口,客户端定时访问所有域名的延迟时间,请求时读取延迟最小的。这样吗
    SenLief
        29
    SenLief  
       6 小时 48 分钟前
    我觉得你在做微信,自己内置 dns ,不走系统 dns ,哈哈。
    xiaochena
        30
    xiaochena  
       6 小时 41 分钟前
    正常的逻辑应该是同一个 api 域名套用多个不同厂商的 cdn 加速吧。哪有加一个国家加一个 api 域名的道理。。。emmm
    wunonglin
        31
    wunonglin  
       6 小时 26 分钟前
    Promise.race 解君愁
    wuhunyu
        32
    wuhunyu  
       5 小时 50 分钟前
    看描述,服务器应该是分别部署在不同的国家地域了。我比较好奇的是,如果前端根据延时来判断走哪个区域的服务,特殊情况下,一会儿访问这个国家的服务器,一会儿访问另一个国家的服务器,不同区域的数据是怎么同步的,跨地域的数据同步成本会比较,而且势必会存在数据不一致的问题,好奇你们的后端是怎么处理的。像是阿里云,他们的许多产品都是分地区的,比如上海,广州。而且很多时候不同区域的产品产生的数据他也不提供转区的服务。按我理解,区域 1 的前端最好就是访问区域的 1 的服务端,不然可能因为数据同步延迟导致一些奇怪的问题。如果是同一个区域的话,我又觉得没啥必要给同一个区域多个域名吧
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1793 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 16:26 · PVG 00:26 · LAX 09:26 · JFK 12:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.