• 请不要在回答技术问题时复制粘贴 AI 生成的内容
wKong753900
V2EX  ›  程序员

今天周二,人多,有没架构大佬帮忙看看,讨论讨论,有兴趣的也可以一起参与

  •  1
     
  •   wKong753900 ·
    Kun-GitHub · 7h 17m ago · 3578 views

    前提:
    公司是全球性的硬件公司,类似影石,做户外运动相机,硬件方面做了很多年一直都是卖硬件(我们 toB ,不 toC),然后用合作厂商开发的 APP 给用户用,现在今年自己开发软件,我们在国内已经有一套架构(Go+k8s 集群)了,所以此次我想请教的是全球化的架构应该怎么搭。

    目前考虑部的点:北美,东南亚(新加坡),欧洲(法国),迪拜,非洲(这个地方客户比较多)

    问题:
    1 、简单的做法,就是一个点位一套,但这样就没法数据同步,在北美注册的用户,在非洲得重新注册。这个体验不好,想还是实现全球化
    2 、用 GeoDNS ,用统一域名设置多个 ip ,如果设备和 APP ,在某些边缘区域,ip 是不是会经常飘来飘去的
    3 、因为是相机,所以很多音视频文件,全球化的话,音视频文件同步,一个是同步占用带宽,一个是占用空间,这两个量大的话,都难搞,怎么处理
    4 、这几年硬件成本上升,所以公司资金不是很雄厚,有没有高端(用大厂),中端(性价比),低端(当地小厂)的架构推荐?

    暂时想到的是这些,有继续想到再补充

    44 replies    2026-09-08 16:23:14 +08:00
    wKong753900
        1
    wKong753900  
    OP
       7h 11m ago
    软件架构上主要有自建的流媒体服务,P2P 使用的 turn 服务,Go 微服务后端加各种中间件集群(Minio 集群,Pgsql 集群,Redis 集群,Mqtt 集群,RocketMQ 集群等等)
    evill
        2
    evill  
       7h 8m ago
    做过类似的(北爱尔兰、美西、新加坡)
    以新加坡做用户服务主服务,强一致性注册;同步用户回对应区域的服务器,后续登录等对应区域自己完成。
    其他所有服务(支付除外)每个区域完整部署一套。

    用户夸区域时,当前服务接受请求,gateway 确认区域 走亚马逊内网 proxy 到用户注册区域。
    wKong753900
        3
    wKong753900  
    OP
       7h 5m ago
    @evill 谢谢哈,请问用户数据同步是用什么方案?然后“用户夸区域时,当前服务接受请求”,这个需不需要一个统一的访问入口?还是让 GeoDNS 来做?
    xwayway
        4
    xwayway  
       7h 5m ago
    分主数据,业务数据,多媒体数据。主数据全球同步,业务数据和多媒体数据只存一个 region ,通过边缘网关按 region 转发业务请求,多媒体上 cdn
    sentinelK
        5
    sentinelK  
       7h 3m ago
    这个要看你业务的轻重而定。就是你需要再全球不同节点同步多大量的数据。如果只是类似会员,或者设备注册信息,那就完全可以选择异步慢慢同步。

    毕竟你的用户不可能在 A 地注册后,瞬移到 B 地。所以不存在热切节点的可能性。
    然后容错措施可以优先同步一个最近信息节点 ID (类似于最新时间戳),实在没同步过来就主动发起拉取。

    不过从行业做法来讲,跨地域的注册信息其实价值没那么大。甚至会因为政策原因,反过来限制跨地域账号。
    wKong753900
        6
    wKong753900  
    OP
       7h 2m ago
    @xwayway 谢谢哈,"分主数据,业务数据,多媒体数据",这样的话,岂不是得拆得很细,然后把服务分开?然后再请教下如果多媒体数据,很多都是看回放的话,用户跨区了,是不是还是得同步?有想过边缘网关做缓存,就是遇到跨区要怎么同步
    wKong753900
        7
    wKong753900  
    OP
       7h 0m ago
    @sentinelK 谢谢哈,我也在想这个跨区其实是不是就很少一部分情况,大部分还是都会集中在一个点的,需不需要为了解决这么少部分,而考虑那么多呢
    evill
        8
    evill  
       6h 56m ago
    @wKong753900 这个是 10 年前做的了,具体现在是什么方案不清楚了
    用户数据同步是很粗暴的方式:注册时新加坡服直接 call 对应区域写入接口
    没有统一访问接口当时是 APP ,服务器会下发所有域名好像 app 根据延迟选择的,还有一些兜底的规则
    Quarry
        9
    Quarry  
       6h 53m ago
    又不说日活和未来预计日活,你都知道用 k8 搭微服务,为什么还搞自建流服务,没用过 OSS 相关的吗
    Mithril
        10
    Mithril  
       6h 47m ago   ❤️ 1
    额外说一点,需要提前考虑各地区的隐私策略与合规。特别是欧洲的 GDPR ,还有 Cookie 设置啥的。不然可能直接被搞一波集体诉讼。所以你很可能还是要按地区切分出去。
    xianyu191031
        11
    xianyu191031  
       6h 46m ago
    搞三个,美区,欧区,glo, 合规不严格的其他地区都走 glo 。跨区另外做
    cloudzhou
        12
    cloudzhou  
       6h 45m ago
    很有意思的问题,典型一个多点登录同时需要同步全球的场景

    我的建议是:
    1. 单点写,一对多复制,一旦用户固定点写入,那么设定用户持续单点写
    2. 算法判断用户变迁,设置新的固定写入点,所有请求一定会转发到固定写入点
    3. 读取的话可多地,但是如果用户读自己数据,强制写入点

    按真实情况,用户 90% 其实不变化的,一些小的 case 解决变化即可
    wKong753900
        13
    wKong753900  
    OP
       6h 45m ago
    @Quarry 一年出货量大概 100 万台设备吧,按 10%日活,前期是打算用 OSS 的,后面量上来了得自己搭
    wKong753900
        14
    wKong753900  
    OP
       6h 42m ago
    @Mithril 谢谢,这个是有考虑到的,不过也是得具体实施了才知道什么情况

    @xianyu191031 谢谢哈,glo 是?

    @cloudzhou 对的,主要这个数据同步比较头疼
    wKong753900
        15
    wKong753900  
    OP
       6h 40m ago
    @Quarry 谢谢哈,另一个要自建流服务得原因是有款设备主推非洲,然后芯片能力很低,不是标准流,都是传图,所以要自己写协议,主打非洲,一个设备卖 10 块钱以内。
    xwayway
        16
    xwayway  
       6h 39m ago
    @wKong753900 #6 不会啊,主数据也不是所有都同步啊,就是最简单的,甚至可能就一张用户表,这样保证用户注册/登录这样的基本接口,然后就能把其他所有请求通过边缘网关转发或者直接返回对应 region 的域名,去对应 region 请求具体的业务数据了。多媒体你是准备自建?直接用厂商对象存储然后 cdn 回源呗,没必要自己折腾一套吧
    Quarry
        17
    Quarry  
       6h 38m ago
    @wKong753900 后面量上来,资源服务器的费用确定抗得住?论成本明显海外云存储性价比更高
    wKong753900
        18
    wKong753900  
    OP
       6h 30m ago
    @Quarry 一个方面在找性价比高的服务器厂商,另一个方面也在看海外云存储支不支持非标准的媒体流
    xianyu191031
        19
    xianyu191031  
       6h 27m ago
    @wKong753900 global 全球区。 美欧的合规比其他地区严狠毒,要做的话要考虑本地部署(量小的话可能监管不鸟你)
    Quarry
        20
    Quarry  
       6h 13m ago
    @wKong753900 真的存在高性价比服务商吗,不至于某些流媒体大厂需要建多个仓库来存数据,自建流备份还原少说几十台机器够你们运维玩的了
    cominghome
        21
    cominghome  
       6h 9m ago
    北美、欧洲是必须要独立部署的,其他地区可以新加坡一把梭,非洲用户多单独在中东或者南非起一套也行。

    账号这一块,注册的时候让用户选 base 地或者给默认值,认证的时候统一入口加一个网关确认账户 base 然后去对应集群拉数。业务这一块前端 CDN 一把梭,后端不同集群不同域名直接调就行(不要试图帮用户解决网络问题)。

    搞不懂你总是在这里同步同步什么,有什么好同步的,政商关系不硬等下 GDPR 砸下来直接按营收 10%罚
    wKong753900
        22
    wKong753900  
    OP
       6h 0m ago
    @cominghome 谢谢哈,主要没海外的经验,所以容易陷进某个点
    mooyo
        23
    mooyo  
       5h 58m ago
    单地中心化存储,多点部署 gateway 内网反代过去就行了。不考虑境内外互联,纯境外国际网间的话,流量费不算特别贵。
    mooyo
        24
    mooyo  
       5h 58m ago
    GDPR 啥的另说哈
    jarytom
        25
    jarytom  
       5h 54m ago
    服务器可以用裸金属服务器,性价比比较高,比云主机好多了.推荐一下我们自己用的,鲨鱼的服务器,可以注册账号看看
    aHR0cHM6Ly9wb3J0YWwuc2hhcmt0ZWNoLm5ldC9hZmYucGhwP2FmZj0xNjcx
    cnleon
        26
    cnleon  
       5h 43m ago
    1 、简单的做法,就是一个点位一套,但这样就没法数据同步,在北美注册的用户,在非洲得重新注册。这个体验不好,想还是实现全球化
    2 、用 GeoDNS ,用统一域名设置多个 ip ,如果设备和 APP ,在某些边缘区域,ip 是不是会经常飘来飘去的
    3 、因为是相机,所以很多音视频文件,全球化的话,音视频文件同步,一个是同步占用带宽,一个是占用空间,这两个量大的话,都难搞,怎么处理
    wKong753900
        27
    wKong753900  
    OP
       5h 43m ago
    @xianyu191031 ok ,谢谢,本地部署基本是要的了

    @Quarry 确实,我也觉得挺麻烦的,因为有设备是非标的

    @mooyo 好的,谢谢,暂时不考虑境内外互联

    @jarytom ok ,我看下
    cnleon
        28
    cnleon  
       5h 41m ago
    1 、简单的做法,就是一个点位一套,但这样就没法数据同步,在北美注册的用户,在非洲得重新注册。这个体验不好,想还是实现全球化

    当然是一个地方一套啊,速度也快,也符合很多当地的法律法规。 至于用户注册,这个就一套就行了,其他地区同步这一套的账户体系就行

    2 、用 GeoDNS ,用统一域名设置多个 ip ,如果设备和 APP ,在某些边缘区域,ip 是不是会经常飘来飘去的

    肯定不能啊,这样非常容易被打,自然是主动推送 ip 啊。


    3 、因为是相机,所以很多音视频文件,全球化的话,音视频文件同步,一个是同步占用带宽,一个是占用空间,这两个量大的话,都难搞,怎么处理

    s3+cdn 来处理啊
    wKong753900
        29
    wKong753900  
    OP
       5h 39m ago
    @cnleon 谢谢,方案渐渐清晰了
    MindMindMax
        30
    MindMindMax  
       3h 28m ago
    如果没运维能力,还是考虑依赖 CF 的 R2 吧。 非洲的带宽成本并不低(相比北美和欧洲)
    让黑哥们多掏点云存储的钱。
    yyttrr
        31
    yyttrr  
       3h 10m ago
    可以看看阿里云的 nis 之类的工具看看延迟,要求不高的话新加坡+美东双中心就足够了,数据同步的涉及业务要具体分析,大概是读写分离,缓存在本地,定时双向同步什么的
    7beloved
        32
    7beloved  
       3h 7m ago
    好帖子
    wKong753900
        33
    wKong753900  
    OP
       2h 46m ago
    @MindMindMax 羊毛出在羊身上,只能是这样,海外的带宽比较贵

    @yyttrr 好的,谢谢
    287854442
        34
    287854442  
       2h 19m ago via Android
    @xwayway 目前看这个是最佳方案,灵活性也很高。
    lixintcwdsg
        35
    lixintcwdsg  
       2h 11m ago
    只有个疑问:

    你应该只能要求用户注册的时候就必须选定区域,然后用户访问不同地区直接用不同子域名(最彻底),或者统一域名做网关转发分流(其实也算是有风险,本地网关转外网)。

    一个基本问题是 欧洲 北美 东南亚 印度 这些你必须要做数据隐私合规隔离的(不记得印度是不是要单独做了,东南亚不用,北美没经验),尤其是欧洲,欧洲用户数据就不能存在其他区域,用户跨区数据的转移等应该要有用户协议先做法律上的风险(你们公司做全球,那么法务部,数据隐私安全合规应该有同事来处理这方面问题)。

    当然你要是觉得自己是小厂,觉得暂时这些事不会找上门来另说,我这里就提示一下做全球服务这是一个基本问题。后面的架构什么的反而都简单后端没多复杂问 AI 都行。
    lixintcwdsg
        36
    lixintcwdsg  
       2h 10m ago
    一般来说你们自己的后台系统,都不能看欧洲的用户数据,只能欧洲那边的运营团队自己看和操作。
    数据安全隐私合规就有一些欧洲具体的规定了,比如必须 https 未成年不能存 什么信息不能收集 哪些需要脱敏等等。
    lixintcwdsg
        37
    lixintcwdsg  
       2h 8m ago
    我看回复有人做过也提出这个问题,你的思路如果还是全球数据访问延迟和成本之类的,恐怕的确关注错了方向~
    nexttick
        38
    nexttick  
       2h 3m ago
    观摩大佬们的讨论😶‍🌫️
    lovedebug
        39
    lovedebug  
       2h 3m ago
    用户注册和 onboarding 入口放在一个 site 上,onboarding 时选择绑定的地区(其他 site ),可以上 CDN 等,账号数据进入后再同步到其他 site ,后续用户登录请求先访问主 site ,并根据绑定区域跳转到对应的 site ,目前我们的做法是这样的。
    lovedebug
        40
    lovedebug  
       2h 1m ago
    关于文件,建议考虑直接使用云厂商的云存储,目前我们用的 Azure blob ,这个难题就让微软头疼吧。
    remarrexxar
        41
    remarrexxar  
       1h 36m ago
    北美和欧洲的数据合规要当心,不同类型的数据怎么存存哪里存多久都有不同的要求。
    wKong753900
        42
    wKong753900  
    OP
       1h 1m ago
    @lixintcwdsg 我已经综合了讨论加上查到的合规信息,重新定制方案,不纠结全球化问题了

    @remarrexxar 是的,这块有查到
    IvanCrancy
        43
    IvanCrancy  
       28 mins ago
    这帖子让我梦回 5-6 年前的 V 站氛围 挺好挺好;
    COW
        44
    COW  
       23 mins ago
    我理解应该有张全局的表,负责用户 id 、地域标识等元数据,因为要考虑隐私合规,实际使用会根据这张表路由到绑定地域的集群上,真正的用户信息表是在这个集群上的,另外设计时还要考虑用户、设备实际位置变动的情况。
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   5367 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 95ms · UTC 08:47 · PVG 16:47 · LAX 01:47 · JFK 04:47
    ♥ Do have faith in what you're doing.