关于 Netty 集群的共享 channel 问题

2018-11-30 11:37:35 +08:00
 javen73

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

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

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

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

4118 次点击
所在节点    Java
13 条回复
q13859601
2018-11-30 12:27:58 +08:00
采用路由算法在连接的时候连接到指定 netty 服务器,然后通信的时候通过同样的算法直达 nettyserver,或者在注册的时候将连接信息保存到 zk 等介质存储,靠 mq 广播有点曲径救国吧,而且性能也很低下
cyhulk
2018-11-30 15:18:20 +08:00
用什么 mq 都不如用一个门面的 server 来的实在
skyFuture
2018-11-30 15:21:05 +08:00
netty 为啥叫做集群呢? netty 只是一个通信的框架呀~~
javen73
2018-11-30 16:55:27 +08:00
@q13859601 这样开发成本会低点吧,至少我看来,因为我这边没什么研发时间,马上就要上线
javen73
2018-11-30 16:55:39 +08:00
@cyhulk 什么是门面 server
javen73
2018-11-30 17:00:44 +08:00
@skyFuture 我是说我写的 netty 程序。
hcymk2
2018-11-30 17:00:46 +08:00
估计是前面加个负载均衡器(haproxy , nginx tcp proxy )
javen73
2018-11-30 17:01:18 +08:00
感谢以上大佬,我还是老老实实用阿里的 rocketmq 做吧,后期再研究
goodspb
2018-11-30 18:19:42 +08:00
所以是问有哪些来源的 mq 吗?
honeycomb
2018-11-30 18:53:46 +08:00
@javen73 还有个类似的办法是把 channel 和 netty 的示例关联信息缓存到 Redis ( zoo keeper 也是差不多的道理),你要查的时候直接问 Redis 就可以了,这样一来开发的任务量应该不会很大
q13859601
2018-11-30 23:19:54 +08:00
@javen73 放 zk 或者 redis 的开发成本和 mq 差不多
Kaiv2
2018-12-04 16:34:57 +08:00
@q13859601 是的,之前做消息推送,直接把对应关系存到了 redis,看看有没有其他方案。
zhaishunqi
2018-12-10 13:12:57 +08:00
@Kaiv2 我们也是这么做的.channel 上线的时候,把对应关系存到 redis.后来要广播,直接那到对应的 netty 服务器,然后直接告诉它要广播就行了.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/513016

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX