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

比较好奇微信, qq, facebook 是如何管理 socket

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

    如题,毕竟以这些 app 的表现上来看,上亿人同时在线?那么 A 用户向 B 用户发送了一条消息,是如果精准的投递到 B 用户 app 上的?

    15 回复  |  直到 2019-07-14 18:41:51 +08:00
        1
    elfive   131 天前 via iPhone
    其他不知道,我就知道 QQ 主要以 UDP 协议为主,所以 socket 管理似乎不是很重要的事。
        2
    secondwtq   131 天前 via iPad
    QQ 早就不一定是 udp 为主了
        3
    watzds   131 天前 via Android
    每个在线用户都和微信服务器保持连接,每个连接都有用户 id 信息呗

    反正怎么都有用户 id,这有什么难的?
        4
    Wings0908   131 天前
    @elfive @secondwtq 感谢回复,以 UDP 为主的话,推送是个问题?
    @watzds 感谢回复,如果是这样,需要某个地方存储这个信息,缓存?上亿的数据,并且高实时性,还是不太清楚具体怎么做
        5
    mattx   131 天前
    基于可靠 UDP 的长连接, 推送不是问题吧? 推送一般对于短连接才是问题, 具体这么高流量和实时性, 你可以找下微信架构看看, 不像 12306 这样, 存在一个无法避免的热点, 会简单很多.
        7
    misaka19000   131 天前 via Android
    ps 现在单机都能支持数百万的链接了,上亿链接维持起来并不难
        8
    laravel   131 天前
    会 go 语言的话,看看 gopush-cluster 分布式推送系统 机会了
        9
    jaskle   131 天前 via Android
    又不是一台电脑,至于协议肯定是 tcp 为主,因为移动网络 udp 支持的非常差
        10
    watzds   131 天前 via Android
    @Wings0908 上亿没啥,分布式机器多就行。分区分而治之
        11
    uyhyygyug1234   131 天前
    新浪微博大 v 怎么给数千万的粉丝 push 消息
        12
    seeker   131 天前
    给你几个关键词:C10K problem, C10M problem.
        13
    Wings0908   131 天前
    @mattx @misaka19000 感谢回复,微信架构也看了,貌似没看到介绍如何管理连接的,所以就在这边问了下。
    @laravel @seeker 感谢回复,不过 C10k 这些貌似是单机问题?微信这种体量确实是分布式的。
    @uyhyygyug1234 微博这种的话,不太清楚是否对实时性要求很高。
        14
    dosmlp   130 天前
    dpdk 单机千万并发,全国布个几十台机器就可以了
        15
    tempdban   130 天前 via Android
    @dosmlp 协议栈?
    关于   ·   FAQ   ·   API   ·   我们的愿景   ·   广告投放   ·   感谢   ·   实用小工具   ·   1150 人在线   最高记录 5043   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.3 · 25ms · UTC 18:21 · PVG 02:21 · LAX 10:21 · JFK 13:21
    ♥ Do have faith in what you're doing.