服务 API 全球访问应该怎么部署 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
lllllliu
V2EX    程序员

服务 API 全球访问应该怎么部署

  •  
  •   lllllliu 2019-09-04 11:42:00 +08:00 4851 次点击
    这是一个创建于 2231 天前的主题,其中的信息可能已经有所发展或是发生改变。

    目前有一款应用的 API 是面向全球的

    我自己想的部署方案是

    1. 国内外主机服务数据都分离,通过 DNS 智能区分海内外。

    2. 国内外多节点部署,DNS 解析,但是数据中心实时同步。

    3. 国内外只用一个香港或其他地区的国外主机。

    第一个感觉有时候会出问题,因为用户在国内注册的话在国外就用不了,不符合本应用的需求。

    第二个感觉同步起来会慢,虽然读>写。

    第三个感觉对很多地区的用户不友好比较慢。

    emmmm,好纠结呀,大家还有没有其他的方案呀。

    文件上传下载因为用了云存储可以部署多节点和 CDN 加速所以很方便。。。 就是 API 这边和数据同步这边比较脑袋大。

    问题就在 UC 同步这里,不知道现有的方案全球多点 MySQL 实时同步的可行性和速度上面问题大不大。

    也想过用云数据库,貌似木有找到自己配置从服务器在国外的这个功能。

    CDN 也想过,可是只能缓存一些 GET 的,其他请求还是慢呀。

    ps:虽然目前应用使用人数预估的很少,但是要打好招牌呀~~~要让国际友人也用的虚浮。

    22 条回复    2019-09-05 09:20:53 +08:00
    upday7
        1
    upday7  
       2019-09-04 12:02:42 +08:00 via iPhone   1
    关注 ....
    swulling
        2
    swulling  
       2019-09-04 12:13:35 +08:00   1
    不存在全球多点 MySQL 实时同步这个东西。

    你可以全球都放满从库,读请求可以读从库,有同步延迟(秒级别往上,看你能不能保障同步的链路)
    写请求只能写一个地点的主库
    opengps
        3
    opengps  
       2019-09-04 12:13:54 +08:00 via Android   2
    套用全球加速的 cdn
    msg7086
        4
    msg7086  
       2019-09-04 12:41:03 +08:00   1
    @swulling 姑且是有 Galera 集群这样一个东西的。

    @lllllliu 建议先考虑:预算和期望延迟。
    比如说中国到美西延迟可以控制在 180ms 内,美西到欧洲大多也能在 180ms 内。
    如果不考虑非洲的话,放在美西是个折中的方案。
    预算好的话弄条 CN2 岂不美哉。

    然后两者可以双管齐下,比如美西和美东双主集群,美西管国内,美东管欧美。
    swulling
        5
    swulling  
       2019-09-04 12:56:38 +08:00   1
    @msg7086 Galera 解决不了全球多点实时同步,全球 200ms 起的延时他扛不住。如果真放全球,还要实时强一致,性能就弱到根本没法用了.

    Galera 一般是在同城搭建多活集群用
    swulling
        6
    swulling  
       2019-09-04 13:07:49 +08:00
    理论上,全球多点实时( ms 级)同步是违反物理学规律的,物理延迟就在哪里放着,咋个突破?

    这方面做的最好的关系数据库是 Google 的 Spanner,目前还没有相媲美的开源实现。但是 Spanner 的写事务也无法突破光速,也是比较慢的,当然 Spanner 有批量事务来缓解这种速度
    lllllliu
        7
    lllllliu  
    OP
       2019-09-04 13:09:36 +08:00
    @swulling 双主多从可以嘛。国外一个写入节点,国内一个写入节点,其他地域的都是从。
    @msg7086 CN2 前期预算是不可能的啦。
    lllllliu
        8
    lllllliu  
    OP
       2019-09-04 13:10:28 +08:00
    @swulling 木有事务关系,可以存在一定的延迟,只要保证 UC 是一套就行
    swulling
        9
    swulling  
       2019-09-04 13:15:49 +08:00   1
    @lllllliu 能接受延迟就找一个网络质量最好的地方做单主呗。

    Google 的 Spanner 叼一方面是别人架构 NB,另一方面也是 Google 有全球多冗余专线保证跨洲的链路质量。

    你只要在国内到国外租一根专线,就不受公网的质量低下影响,单主也是很好的

    不过专线很贵就是了,而且国内使用有很严格的政策要求
    lllllliu
        10
    lllllliu  
    OP
       2019-09-04 13:19:41 +08:00
    @swulling 好的,我前期先试验一下单主多从,公司绑定 HuaWeiYun
    mornlight
        11
    mornlight  
       2019-09-04 13:25:48 +08:00   1
    个人想法,「全球加速」从 API 层入手,而不要在后端服务上做同步,小应用后端只在一个地方就行。想办法加速跨境回源的过程。
    V2EX 本身就是你说的这种场景。
    msg7086
        12
    msg7086  
       2019-09-04 13:38:40 +08:00 via Android   1
    @msg7086 不需要全球集群,只需要减少部分延迟即可。
    200ms 的距离不需要把 200ms 全压在集群上,也是有集群解决 100ms,剩下 100ms 让用户吃掉的选择的。
    lllllliu
        13
    lllllliu  
    OP
       2019-09-04 13:40:01 +08:00
    @mornlight 好的。我去研究下 CDN 和代理
    Moker
        14
    Moker  
       2019-09-04 13:42:12 +08:00   1
    平均响应时间 现在是多少 敏感吗?不敏感的话直接可以套层国内厂商 CDN (预防被 Q ),海外再用一层 CDN,比如 Cloudflare 或者 GCP,用户进入第一跳网络之后全部会走他们自身的内部网络回到源站(海外),当然也可以直接第一步,具体看测试结果和应用场景。
    lllllliu
        15
    lllllliu  
    OP
       2019-09-04 14:57:34 +08:00
    @mornlight 哎,大锅,有木有 V2 后端架构的相关文章和资料呀,搜了一下木有找到哎。
    @Livid 大大锅~~求助一哈,请问 v2 的后端是怎么部署的呀。
    rxzxf1993
        16
    rxzxf1993  
       2019-09-04 14:59:49 +08:00   1
    一般来说 国外比如新加坡一个节点 然后 和国内同步 双方互通
    Livid
        17
    Livid  
    MOD
    PRO
       2019-09-04 17:09:44 +08:00   1
    如果你要找可以全球同步的边缘数据库,还真有类似这个概念的产品:

    https://azure.microsoft.com/en-us/services/cosmos-db/
    vveexx
        18
    vveexx  
       2019-09-04 17:25:11 +08:00   1
    如果这些服务不是高度中心化的,多放几个节点,这几个节点都是 master,然后自己做数据同步应该就够用了吧。毕竟用户不可能 200ms 出国...
    shixinyu
        19
    shixinyu  
       2019-09-04 17:26:20 +08:00   1
    AWS Global Accelerator 了解下。
    MMMMMMMMMMMMMMMM
        20
    MMMMMMMMMMMMMMMM  
       2019-09-04 17:27:25 +08:00   1
    不太清楚楼主的调用场景;

    如果仅有部分数据为高频调用
    可以买各大厂带全球加速的对象存储服务,一般比数据库便宜不少。
    缓存一下这些高频调用的结果,剩下低频调用的就直接走直连,慢点就慢点把。
    server
        21
    server  
       2019-09-04 17:37:19 +08:00   1
    m 下,小道测试说 aws 骨干线路跳数极低。有老铁体验 QUIC 不,准备在端上试试,
    lllllliu
        22
    lllllliu  
    OP
       2019-09-05 09:20:53 +08:00
    @shixinyu @MMMMMMMMMMMMMMMM @server @Livid 谢谢各位的已经,目前采用 DNS 解析到最近节点,多主多从同步,不管延迟了。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     983 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 34ms UTC 22:30 PVG 06:30 LAX 15:30 JFK 18:30
    Do have faith in what you're doing.
    ubao snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86