集群配置(cluster config)
所有节点共同维护同一份集群配置,共享集群内节点的相关配置信息:
{
node_1 = {addr = "127.0.0.1:10014", expire = "2024-01-01 00:00:00" },
node_2 = {addr = "127.0.0.1:10024", expire = "2024-01-01 00:00:00" },
-- ...
}
共享配置的方案:
- 以本地文件方式:配置以文件的形式保存在所有的节点路径下,节点通过访问本地文件获取集群内所有节点的配置信息;
- 以公共内存方式:配置由节点外的公共内存(比如数据库)维护,提供访问和更新接口,共享给所有节点。
维护配置的方案:
每个节点定时上报更新当前节点的配置,配置设置定时过期expire;上报时间间隔比过期时间短,当获取不到指定节点配置时,表明该节点已退出集群;
每个节点定时获取集群配置更新本地缓存,当发现失效节点时对应触发本节点上的相应处理;如当某一路由节点失效时,使用该节点的玩家节点需要重新分配新的路由节点;
跨机集群的核心实现
开启跨机消息管理服务,节点内所有需要跨进程投递的消息都通过此服务转发,通过网络送达集群内目标节点。
服务实现:每个进程开启服务,服务内缓存集群节点的配置信息,与每个节点建立通信连接(n * n),负责当前节点和其他集群内节点之间的消息通信;
- 根据当前节点配置监听集群消息入口(ip+port),开放与集群内节点的消息交互;
- 维护集群配置缓存,根据配置建立与其他节点的通信通道,并提供配置更新接口(reload),支持动态更新集群节点;
- 集群内节点状态监控,实现实时淘汰切换更新。