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

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

  •  
  •   lllllliu · 71 天前 · 1818 次点击
    这是一个创建于 71 天前的主题,其中的信息可能已经有所发展或是发生改变。

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

    我自己想的部署方案是

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

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

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

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

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

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

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

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

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

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

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

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

    22 回复  |  直到 2019-09-05 09:20:53 +08:00
        1
    upday7   71 天前 via iPhone   ♥ 1
    关注 ....
        2
    swulling   70 天前   ♥ 1
    不存在全球多点 MySQL 实时同步这个东西。

    你可以全球都放满从库,读请求可以读从库,有同步延迟(秒级别往上,看你能不能保障同步的链路)
    写请求只能写一个地点的主库
        3
    opengps   70 天前 via Android   ♥ 2
    套用全球加速的 cdn
        4
    msg7086   70 天前   ♥ 1
    @swulling 姑且是有 Galera 集群这样一个东西的。

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

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

    Galera 一般是在同城搭建多活集群用
        6
    swulling   70 天前
    理论上,全球多点实时( ms 级)同步是违反物理学规律的,物理延迟就在哪里放着,咋个突破?

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

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

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

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

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

    如果仅有部分数据为高频调用
    可以买各大厂带全球加速的对象存储服务,一般比数据库便宜不少。
    缓存一下这些高频调用的结果,剩下低频调用的就直接走直连,慢点就慢点把。
        21
    server   70 天前   ♥ 1
    m 下,小道测试说 aws 骨干线路跳数极低。有老铁体验 QUIC 不,准备在端上试试,😈️
        22
    lllllliu   70 天前
    @shixinyu @MMMMMMMMMMMMMMMM @server @Livid 谢谢各位的已经,目前采用 DNS 解析到最近节点,多主多从同步,不管延迟了。
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   3846 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 23ms · UTC 04:05 · PVG 12:05 · LAX 20:05 · JFK 23:05
    ♥ Do have faith in what you're doing.