如何将 netty Channel 对象存储在 Redis 数据库或任何其他解决方案中?
How to store netty Channel object in Redis database or any other solution?
因为我正在使用 netty 进行聊天 application.As 我有 netty 服务器集群。
因为我将所有客户端的通道 ID 存储在 Redis 中,以参考连接到 netty 服务器的所有通道。
我想将所有 Channel 对象存储到 Redis,这样我就可以从任何节点或实例获取所有客户端 Channel 对象,因为如果我想在该节点上获取在其他节点上创建的其他客户端 Channel,如何获取驻留在其他节点或实例上的那些客户端 Channel 对象?
所以最好将客户端 Channel 对象存储到 redis,这样我就可以从任何节点获取任何客户端 Channel 对象。但是实现 class 的通道在 netty 中不是可序列化的。
- 那么如何在Redis中存储Channel对象呢?
- 通过扩展 Channel 来序列化 Channel 对象是个好主意吗
对象和实现 Serializable 接口?
- 如果这个解决方案不好,那么如何获取任意客户端Channel
来自 netty 集群中任何节点的对象?
谢谢。
Netty 中的通道隐含地包含所有网络方面(套接字、nio 支持、tcp 或 udp 或...),因此您无法对其进行序列化(无法序列化网络连接)。
但是你可以序列化远程地址。但请注意,"id" 不可配置,这意味着您不能为一个通道强制设置它的值。所以你可以使用类似的东西:
在 Redis 左右:(你的 id 是关键)
- 你的身份证
- 远程主机地址(可能还有端口)
- 上下文的任何数据
在您的 JVM(节点)中:(您的 id 是键的映射)
- 你的身份证
- 频道对象
不,您可以在 Map 中存储或保留 Netty 通道,但 Redis.Because 通道对象不可序列化。
因为我正在使用 netty 进行聊天 application.As 我有 netty 服务器集群。
因为我将所有客户端的通道 ID 存储在 Redis 中,以参考连接到 netty 服务器的所有通道。
我想将所有 Channel 对象存储到 Redis,这样我就可以从任何节点或实例获取所有客户端 Channel 对象,因为如果我想在该节点上获取在其他节点上创建的其他客户端 Channel,如何获取驻留在其他节点或实例上的那些客户端 Channel 对象?
所以最好将客户端 Channel 对象存储到 redis,这样我就可以从任何节点获取任何客户端 Channel 对象。但是实现 class 的通道在 netty 中不是可序列化的。
- 那么如何在Redis中存储Channel对象呢?
- 通过扩展 Channel 来序列化 Channel 对象是个好主意吗 对象和实现 Serializable 接口?
- 如果这个解决方案不好,那么如何获取任意客户端Channel 来自 netty 集群中任何节点的对象?
谢谢。
Netty 中的通道隐含地包含所有网络方面(套接字、nio 支持、tcp 或 udp 或...),因此您无法对其进行序列化(无法序列化网络连接)。
但是你可以序列化远程地址。但请注意,"id" 不可配置,这意味着您不能为一个通道强制设置它的值。所以你可以使用类似的东西:
在 Redis 左右:(你的 id 是关键)
- 你的身份证
- 远程主机地址(可能还有端口)
- 上下文的任何数据
在您的 JVM(节点)中:(您的 id 是键的映射)
- 你的身份证
- 频道对象
不,您可以在 Map 中存储或保留 Netty 通道,但 Redis.Because 通道对象不可序列化。