微信这种等级的软件是如何实现全球用户在统一的数据库里,并且用户在不同的大陆能隔着老远发消息的? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
abcbuzhiming
V2EX    程序员

微信这种等级的软件是如何实现全球用户在统一的数据库里,并且用户在不同的大陆能隔着老远发消息的?

  •  
  •   abcbuzhiming 2020-09-19 17:00:46 +08:00 5335 次点击
    这是一个创建于 1848 天前的主题,其中的信息可能已经有所发展或是发生改变。
    微信,非死不可,WhatsApp,基本都接近实现了全球部署。我能猜到他们肯定需要在当地部署服务器进行就近服务,但是大部分在当地部署服务的网站 api 类应用,都是没有实现统一数据库的,即所谓的“国内国外用户分开”处理方式。但是这类超级 app 不仅实现了统一数据库(所有用户可视为在一个服)。还能在不同的大陆隔着老远发消息。

    统一数据库现在有不少分布式论文,虽然不完美但是如果愿意放弃一些特性的话,有可用实现。不同的大陆隔着那么远的海洋他们还能发消息,这个消息的延迟现在能压低到多少了,他们是怎么实现这个的,是不同的服务器之间拉专线光纤来实现互通吗,还是有什么特殊套路?
    22 条回复    2020-11-11 14:41:29 +08:00
    opengps
        1
    opengps  
       2020-09-19 17:16:13 +08:00 via Android
    实际并不是一个 /台 /区服务器,而是跨地域的多 set
    abcbuzhiming
        2
    abcbuzhiming  
    OP
       2020-09-19 17:21:19 +08:00
    @opengps 多 set 是指的什么意思?
    imn1
        3
    imn1  
       2020-09-19 17:31:31 +08:00
    那些服务器的技术我不懂,我只知道
    先发送,后保存
    先保存,后发送
    两者区别很大
    cloverstd
        4
    cloverstd  
       2020-09-19 17:46:50 +08:00
    不同的用户可以存在不同的机房,比如大陆的用户,存在大陆机房,海外的在海外的机房
    用户打上机房的标签,同机房的用户给同机房的发消息,可以不跨机房
    如果发送时,发现是其他机房的用户,就路由到对应的机房去,延迟的话,跨机房走专线,基本就是物理上的延迟了

    上面是我猜的
    Stain5
        5
    Stain5  
       2020-09-19 17:55:47 +08:00
    参考下电信运营商怎么做的 能够解决你很多问题
    laminux29
        6
    laminux29  
       2020-09-19 17:56:52 +08:00
    题主觉得跨大陆信息传输的延迟很高吗?想想 PUBG ?
    TimePPT
        7
    TimePPT  
    PRO
       2020-09-19 18:29:21 +08:00 via Android
    异地多活同步啊,大厂都这么玩
    wysnylc
        8
    wysnylc  
       2020-09-19 18:30:39 +08:00
    你可以从 DNS 分地区负载开始看起
    Lynalmost
        9
    Lynalmost  
       2020-09-19 19:11:01 +08:00 via iPhone
    @cloverstd 可以这样理解
    whileFalse
        10
    whileFalse  
       2020-09-19 19:14:19 +08:00 via iPhone
    我记得有个文章说过,他们分杭州服和北美服。用户注册是哪个服就不会变了。
    locoz
        11
    locoz  
       2020-09-19 19:14:20 +08:00 via Android
    微信的技术人员有写过他们的技术实现,你可以搜一下,我记得是类似于 #4 说的那种
    yangbonis
        12
    yangbonis  
       2020-09-19 19:17:09 +08:00 via iPhone
    统一不统一没有你想象的差异那么大,都是在不同层面做相同的事情罢了。
    kerro1990
        13
    kerro1990  
       2020-09-19 19:25:54 +08:00
    首先反代服务器 IP 估计是广播的方式,然后调度到附近的数据中心,不同数据中心用专线跨机房数据同步,消息发送看怎么路由的了,微信 ID 肯定包含了路由信息,只不过是加密的
    chinvo
        14
    chinvo  
       2020-09-19 19:35:52 +08:00   3
    flynaj
        15
    flynaj  
       2020-09-19 19:48:15 +08:00 via Android
    微信都是你发送到服务器,然后服务器又转发出去,所以有些东西你是发不出去的。
    Jerami
        16
    Jerami  
       2020-09-19 20:24:28 +08:00 via Android
    运营商-微信 pop-腾讯骨干网-数据中心
    运营商 A-微信 pop-腾讯骨干网-微信 pop-运营商 B
    Jerami
        17
    Jerami  
       2020-09-19 20:24:59 +08:00 via Android
    所以说美国禁止与微信的对等互联了嘛
    gaius
        18
    gaius  
       2020-09-20 02:24:50 +08:00 via Android
    统一用户服务,分布式数据裤呗
    opengps
        19
    opengps  
       2020-09-20 08:42:39 +08:00
    @abcbuzhiming 刚刚留意到漏掉了你的问题,搜一下“SET 化”,也可以了解下“异地多活”类的信息
    再给你举一个例子(数据为印象中的大概值):天津港当年事故期间,腾讯天津机房距离爆炸中心不足 5 公里,其负载了 2-3 亿,随时面临断电风险,因此腾讯紧急切换了负载,对外表现为用户无感知
    opengps
        20
    opengps  
       2020-09-20 08:48:46 +08:00
    @gaius IM 应用相对而言,更重要的是消息转发,而非数据库存储。

    IM 应用最大的资源是骨干贷款,多个机房之间使用骨干网络线路转发。用户到就近 IDC 最然是普通家庭级网络线路,但是 IDC 与 IDC 之前最起码是企业级骨干网络线路。(这同样也解释了“游戏加速器”的原理:就近找个接入点,剩余路线走企业级骨干线路)

    PS:网络结构上的近,只是约等于地理位置上的近,比如北上广之间必然有高带宽多线路,但是往西部来看,网络延迟就表现出来了
    lc7029
        21
    lc7029  
       2020-09-20 13:50:53 +08:00
    异地多活,BGP Anycast,机房内负载均衡
    eawinL
        22
    ZeawinL  
       2020-11-11 14:41:29 +08:00
    感觉不是统一数据库 我电脑上保存的自定义表情 在手机上都看不到 只能在手机上再添加一次
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     5221 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 27ms UTC 09:21 PVG 17:21 LAX 02:21 JFK 05:21
    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