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

关于 Netty 集群的共享 channel 问题

  •  
  •   javen73 · 2018-11-30 11:37:35 +08:00 · 4119 次点击
    这是一个创建于 2179 天前的主题,其中的信息可能已经有所发展或是发生改变。

    我一开始的思路是本地存储连接的 channel,如果要找到某一个连接,就使用 MQ 进行广播,所有客户端拿到消息后,在本地进行查找,如果有 channel,则进行通讯。

    一开始用阿里的 rocketmq,进行的消息广播,没啥问题,就是一天每个 topic2 块钱。

    看了一下 rabbitmq,广播模式也是发给交换机下的某些队列,rabbitmq 能不能多个消费者同时消费一个队列

    或者有什么别的办法,小弟万分感谢

    13 条回复    2018-12-10 13:12:57 +08:00
    q13859601
        1
    q13859601  
       2018-11-30 12:27:58 +08:00   ❤️ 1
    采用路由算法在连接的时候连接到指定 netty 服务器,然后通信的时候通过同样的算法直达 nettyserver,或者在注册的时候将连接信息保存到 zk 等介质存储,靠 mq 广播有点曲径救国吧,而且性能也很低下
    cyhulk
        2
    cyhulk  
       2018-11-30 15:18:20 +08:00
    用什么 mq 都不如用一个门面的 server 来的实在
    skyFuture
        3
    skyFuture  
       2018-11-30 15:21:05 +08:00
    netty 为啥叫做集群呢? netty 只是一个通信的框架呀~~
    javen73
        4
    javen73  
    OP
       2018-11-30 16:55:27 +08:00
    @q13859601 这样开发成本会低点吧,至少我看来,因为我这边没什么研发时间,马上就要上线
    javen73
        5
    javen73  
    OP
       2018-11-30 16:55:39 +08:00
    @cyhulk 什么是门面 server
    javen73
        6
    javen73  
    OP
       2018-11-30 17:00:44 +08:00
    @skyFuture 我是说我写的 netty 程序。
    hcymk2
        7
    hcymk2  
       2018-11-30 17:00:46 +08:00
    估计是前面加个负载均衡器(haproxy , nginx tcp proxy )
    javen73
        8
    javen73  
    OP
       2018-11-30 17:01:18 +08:00
    感谢以上大佬,我还是老老实实用阿里的 rocketmq 做吧,后期再研究
    goodspb
        9
    goodspb  
       2018-11-30 18:19:42 +08:00 via iPhone
    所以是问有哪些来源的 mq 吗?
    honeycomb
        10
    honeycomb  
       2018-11-30 18:53:46 +08:00 via Android
    @javen73 还有个类似的办法是把 channel 和 netty 的示例关联信息缓存到 Redis ( zoo keeper 也是差不多的道理),你要查的时候直接问 Redis 就可以了,这样一来开发的任务量应该不会很大
    q13859601
        11
    q13859601  
       2018-11-30 23:19:54 +08:00
    @javen73 放 zk 或者 redis 的开发成本和 mq 差不多
    Kaiv2
        12
    Kaiv2  
       2018-12-04 16:34:57 +08:00
    @q13859601 是的,之前做消息推送,直接把对应关系存到了 redis,看看有没有其他方案。
    zhaishunqi
        13
    zhaishunqi  
       2018-12-10 13:12:57 +08:00
    @Kaiv2 我们也是这么做的.channel 上线的时候,把对应关系存到 redis.后来要广播,直接那到对应的 netty 服务器,然后直接告诉它要广播就行了.
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1037 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 21ms · UTC 18:59 · PVG 02:59 · LAX 10:59 · JFK 13:59
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.