跨机集群节点管理方案

集群配置(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" },
    -- ...
}

共享配置的方案:

  1. 以本地文件方式:配置以文件的形式保存在所有的节点路径下,节点通过访问本地文件获取集群内所有节点的配置信息;
  2. 以公共内存方式:配置由节点外的公共内存(比如数据库)维护,提供访问和更新接口,共享给所有节点。

维护配置的方案

每个节点定时上报更新当前节点的配置,配置设置定时过期expire;上报时间间隔比过期时间短,当获取不到指定节点配置时,表明该节点已退出集群;

每个节点定时获取集群配置更新本地缓存,当发现失效节点时对应触发本节点上的相应处理;如当某一路由节点失效时,使用该节点的玩家节点需要重新分配新的路由节点;

跨机集群的核心实现

开启跨机消息管理服务,节点内所有需要跨进程投递的消息都通过此服务转发,通过网络送达集群内目标节点。

服务实现:每个进程开启服务,服务内缓存集群节点的配置信息,与每个节点建立通信连接(n * n),负责当前节点和其他集群内节点之间的消息通信;

  1. 根据当前节点配置监听集群消息入口(ip+port),开放与集群内节点的消息交互;
  2. 维护集群配置缓存,根据配置建立与其他节点的通信通道,并提供配置更新接口(reload),支持动态更新集群节点;
  3. 集群内节点状态监控,实现实时淘汰切换更新。