
我一开始的思路是本地存储连接的 channel,如果要找到某一个连接,就使用 MQ 进行广播,所有客户端拿到消息后,在本地进行查找,如果有 channel,则进行通讯。
一开始用阿里的 rocketmq,进行的消息广播,没啥问题,就是一天每个 topic2 块钱。
看了一下 rabbitmq,广播模式也是发给交换机下的某些队列,rabbitmq 能不能多个消费者同时消费一个队列
或者有什么别的办法,弟万分感谢
1 q13859601 2018-11-30 12:27:58 +08:00 采用路由算法在连接的时候连接到指定 netty 服务器,然后通信的时候通过同样的算法直达 nettyserver,或者在注册的时候将连接信息保存到 zk 等介质存储,靠 mq 广播有点曲径救国吧,而且性能也很低下 |
2 cyhulk 2018-11-30 15:18:20 +08:00 用什么 mq 都不如用一个门面的 server 来的实在 |
3 skyFuture 2018-11-30 15:21:05 +08:00 netty 为啥叫做集群呢? netty 只是一个通信的框架呀~~ |
7 hcymk2 2018-11-30 17:00:46 +08:00 估是前面加个负载均衡器(haproxy , nginx tcp proxy ) |
8 javen73 OP 感谢以上大佬,我还是老老实实用阿里的 rocketmq 做吧,后期再研究 |
9 goodspb 2018-11-30 18:19:42 +08:00 via iPhone 所以是问有哪些来源的 mq 吗? |
10 honeycomb 2018-11-30 18:53:46 +08:00 via Android @javen73 还有个类似的办法是把 channel 和 netty 的示例关联信息缓存到 Redis ( zoo keeper 也是差不多的道理),你要查的时候直接问 Redis 就可以了,这样一来开发的任务量应该不会很大 |
13 zhaishunqi 2018-12-10 13:12:57 +08:00 @Kaiv2 我们也是这么做的.channel 上线的时候,把对应关系存到 redis.后来要广播,直接那到对应的 netty 服务器,然后直接告诉它要广播就行了. |