应用场景
通常情况来讲,当单节点接入量达到一定量级,服务能力急剧下降时,就需要考虑集群服务了。
假设单节点接入上限是10W,为了良好稳定的服务,会设一个阈值,比如:当接入量达到8W就需要扩节点,而不是真的等到接入10W。
集群部署就会遇到以下问题:
- 连接共享,终端与平台是通过三次握手建立的 TCP 连接,无法通过序列化持久化到数据库或 Redis 中,如何让每个节点互相感知到所建立的连接?
- 节点通信,下行命令时,如果命令由平台节点A下发给终端A。此时,终端A与平台节点B建立连接,平台节点A如何将命令消息通知到平台节点B?
实现方案
Netty 集群,无非围绕,节点通信、寻址、广播这几个要素,以下给出几种参考方案:
- Zookeeper、Nacos等注册中心,或自行实现具有服务发现及路由寻址方式
- Redis 消息订阅、发布方式
- MQ 消息广播方式
- Ignite 、Akka等 分布式数据共享方式
服务发现路由寻址方式,算是中规中矩的传统方案,在并发能力和时效性方面,不如其他方案。