什么是信箱模式? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
The Go Programming Language
http://golang.org/
Go Playground
Go Projects
Revel Web Framework
chinaliuhan
V2EX    Go 编程语言

什么是信箱模式?

  •  
  •   chinaliuhan 2021-02-04 21:11:43 +08:00 3930 次点击
    这是一个创建于 1709 天前的主题,其中的信息可能已经有所发展或是发生改变。

    前几天在群里和大伙聊 IM 架构,有个朋友提出信箱模式是现在最流行也是最强悍的架构。 请问什么是信箱模式? 貌似搜不到,问他又说自己领悟。

    23 条回复    2021-02-05 17:26:17 +08:00
    dreasky
        1
    dreasky  
       2021-02-04 21:15:44 +08:00
    自己瞎掰的吧,最流行会搜不到?
    kran
        2
    kran  
       2021-02-04 21:21:51 +08:00 via Android
    Erlang 的并发模型?
    chinaliuhan
        3
    chinaliuhan  
    OP
       2021-02-04 21:22:21 +08:00
    @dreasky 我搜了好久,全是信箱相关的东西。所以我自己想了一套架构
    ETCD 服务注册于发现,集群之间启动之时通过 ETCD 注册。
    集群之间相互通过 TCP 连接
    Keyes
        4
    Keyes  
       2021-02-04 21:30:41 +08:00 via iPhone   11
    利益相关,我不能说太多,如果真有心的话你可以看看国外最近的那个 cs 论文,找不到的话说明你不适合这个行业。信箱模式有多强,行内人都知道,而且大厂内部早就已经用了很多年了,不然某些 im 怎么能扛那么大的用户量?你自己好好想想,为什么偏偏叫信箱模式,不叫 xx 模式?其实原理就在这个词中,回去好好领悟一下就明白了,懂与不懂只隔一层纸。好了我就说这么多,不然同行要打死我,毕竟都是靠这个吃饭的,拜师的话可以私聊,我很忙,有拜师门槛,你自己想清楚了可以来找我


    以上纯属扯淡,包括什么需要自己领悟的信箱模式
    westoy
        5
    westoy  
       2021-02-04 21:35:11 +08:00
    去看 erlang 或者 zeromq
    lix7
        6
    lix7  
       2021-02-04 21:40:27 +08:00
    就是把原有的读扩散改成写扩散,IM 可以理解成实时性更强的邮箱
    chinaliuhan
        7
    chinaliuhan  
    OP
       2021-02-04 21:44:00 +08:00
    @Keyes 哭了
    chinaliuhan
        8
    chinaliuhan  
    OP
       2021-02-04 21:46:17 +08:00
    @lix7 老哥,可以展开讲讲吗?写扩散,意思是发送消息的时候同时连接集群中所有的节点吗?
    caotian
        9
    caotian  
       2021-02-04 21:51:44 +08:00
    前几年有文章分析微信的协议,说 foxmail qqmail 是张小龙做的,微信消息协议是扩展的邮件的 sync 协议,难道指的是这里的信箱? google 微信协议 有几篇文章有详细介绍
    chinaliuhan
        10
    chinaliuhan  
    OP
       2021-02-04 21:52:03 +08:00
    @lix7 我大概搜了一下读扩散和写扩散,感觉这个更加适合于群聊啊。我们当时聊的是 IM 集群,跨节点聊天。
    比如我在 Server1 你在 Server2,咱俩聊天。我当时想做一个中间件分发,但是又怕中间件单机性能不够。想用 Zookeeper 又不了解,后来用了消息中间件相互订阅。
    他推荐我信箱模式
    luozic
        11
    luozic  
       2021-02-04 22:01:05 +08:00
    Yuiham
        12
    Yuiham  
       2021-02-04 22:08:25 +08:00 via Android
    @luozic actor model 吧
    lizytalk
        13
    lizytalk  
       2021-02-04 22:14:12 +08:00
    @Keyes 懂得都懂,听懂掌声
    Keyes
        14
    Keyes  
       2021-0204 22:34:12 +08:00 via iPhone
    @chinaliuhan 加了中间件分发就相当于做了一条总线嘛,用户量起来这条总线压力就太大了,小用户量没什么问题的
    zhlssg
        15
    zhlssg  
       2021-02-04 22:53:25 +08:00   1
    v2 也有谜语人了嘛
    BBCCBB
        16
    BBCCBB  
       2021-02-04 23:07:59 +08:00
    只知道读扩散和写扩散, timeline 模型. 这个信箱模式? 等一个答案
    littlewing
        17
    littlewing  
       2021-02-04 23:10:16 +08:00
    张小龙以前是做 QQ 邮箱的,现在你懂了吧
    YouLMAO
        18
    YouLMAO  
       2021-02-05 09:14:33 +08:00 via Android
    Actor 模型,信箱收消息干活
    ccc825
        19
    ccc825  
       2021-02-05 09:22:51 +08:00
    @lizytalk 老懂王了
    raysonlu
        20
    raysonlu  
       2021-02-05 11:06:46 +08:00
    @Keyes 以 Actor 模型为线索,稍微搜索了一下资料做了一下理解,不知道对不对(或者究竟是否沾边):
    其实所谓的“信箱”,归根到底,就是利用了一个“链”来存放消息,并且单步逐个消化“链”中的每一个消息。Actor 模型无非是有多个 Actor (例如处理信息的 Actor 若干个,组装信息的 Actor 若干个),每个 Actor 各自有自己的“信箱”并且根据信箱消息单步地干活。
    不知道这样理解是否为正确,我反观一下有点类似于把一个“进程”微服务化。
    fovecifer
        21
    fovecifer  
       2021-02-05 11:15:18 +08:00
    听起来像是 actor model?
    其实就是 CSP(Communicating Sequential Process)模型啊
    对应的传统的模型是 share memory
    woscaizi
        22
    woscaizi  
       2021-02-05 11:26:55 +08:00
    看你的描述应该是 Actor 模型
    zh5e
        23
    zh5e  
       2021-02-05 17:26:17 +08:00
    https://proto.actor/
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     1030 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 24ms UTC 18:38 PVG 02:38 LAX 11:38 JFK 14:38
    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