简单程序自动发现组网协议

  cheney

Simple Program Autodiscovery

  • 为了方便调试,使用 http + json 的底层通信格式。

  • 网间通过配置文件互相发现。

  • 网内通过端口段自动尝试。

  • 通信频率为每节点 5 秒。

##发现逻辑

节点分为主节点和其他节点,每个子网共有 24 个主节点槽位。

主节点占用某个端口提供组网服务,尝试的优先级从 32123 ~ 32100 从高到低。

其他节点依赖主节点同步信息, 不提供组网服务。

所有节点主动轮询访问所有主节点槽位,更新自身信息。所有主节点共同维护服务发现表,所有主节点共同维护所有服务的状态。

从节点将自身拥有的信息报告到主节点。

状态表

{
  "services": {
    "example1": {
      "providers": [
        {
          "id": "0",
          "status": {
            "insertTime": 0,
            // 插入时间
  "deleteTime": 0
  // 移除的时间,当主动注销时才有, 超过一小时的真正移除记录。
  },
          "info": {
            "ip": "提供者信息可以自定义,不同服务不同"
  }
        }
      ],
      "probe": {
        "http": {
          "url": "http://xxx.xxx/xxx"
  },
        "tcp": {
          "ip": "0.0.0.0",
          "port": 0,
          "hex": "0000000000"
  }
      }
    }
  },
  "group": [
    {
      "id": "0",
      "ip": "",
      "port": 12,
      "status": ""
  }
  ]
}

注册服务

其他节点依赖主节点提供的注册服务上报自己的服务。将上报取消服务发送给任意一台服务器。

主节点内部的服务通过内部函数接口直接注册和取消。