Skip to content

Latest commit

 

History

History
185 lines (150 loc) · 6.05 KB

接口文档.md

File metadata and controls

185 lines (150 loc) · 6.05 KB

V1

总览

HTTP 请求成功一律返回 200 ,具体信息请参考业务码,通用业务码参考如下,具体业务的业务码请参见下面的接口文档

业务码 说明
200 MafuMafu~ 请求成功
401 Unauthorized! You are not Cocoa! 认证失败
405 Not Allowed! Cocoa is soooo kawaii, Do you still sure you really want to eat Cocoa??? 节点不允许该类型操作

监控接口

package monitor

/ or /v1 服务存活

供外部探测用

请求方式 Get
状态码 200(服务正常)【leader/follower】

/v1/badge 节点信息标识

GET 请求,一个 Badge ,展示节点信息,效果类似如下,右边自动替换为节点友好名称,建议节点友好名称不要超过 11 个英文字符

/metrics Prometheus 监控

Prometheus 标准输出,直接对接 Prometheus 即可,其配置文件增加以下内容

- job_name: "CocoaSyncer"

    static_configs:
      - targets: ["<IP>:<API 端口>"]

v1/status 查看本节点和服务信息

非程序访问接口,浏览器打开获取运行状态(密钥相关信息和节点代号不显示)

v1/getClusterInfo 获取集群信息

供程序使用的接口

请求方式 Post / json
参数 节点的 secret
业务状态码 200(服务正常)【leader/follower】{返回集群信息}
201(服务初始化成功,等待加入集群)【follower】

返回数据示例

{
    "statusCode": 200,
    "statusString": "MafuMafu~",
    "cocoaBasic": {
        "apiPort": 44443,
        "nodeName": "***",
        "nodeCode": "**",
        "nodeAddress": "http://127.0.0.1:44443",
        "workMode": "leader",
        "cocoaSecret": "***",
        "reverseProxy": true,
        "otherCocoaSyncer": [
            {
                "nodeName": "***",
                "nodeCode": "***",
                "nodeAddress": "http://127.0.0.1:44443",
                "workMode": "leader",
                "cocoaSecret": "999",
                "ISPs": [
                    "default",
                    "CT",
                    "OverSea"
                ],
                "networkType": "IPV4",
                "statusCode": 200,
                "watchDog": "2023-09-18T22:54:22.0765568+08:00",
                "cocoaManagedService": [
                    {
                        "serviceName": "测试",
                        "domain": "luckykeeper.site",
                        "record": "test",
                        "platformProvider": "Ali"
                    },
                    {
                        "serviceName": "测试2",
                        "domain": "luckykeeper.site",
                        "record": "test2",
                        "platformProvider": "Ali"
                    }
                ]
            },
            {
                "nodeName": "***",
                "nodeCode": "**",
                "nodeAddress": "http://127.0.0.1:44444",
                "workMode": "follower",
                "cocoaSecret": "***",
                "ISPs": [
                    "CU",
                    "CMCC",
                    "CNEdu"
                ],
                "networkType": "IPV4",
                "statusCode": 200,
                "watchDog": "2023-09-18T22:54:11.0115931+08:00",
                "cocoaManagedService": [
                    {
                        "serviceName": "测试",
                        "domain": "luckykeeper.site",
                        "record": "test",
                        "platformProvider": "Ali"
                    },
                    {
                        "serviceName": "测试2",
                        "domain": "luckykeeper.site",
                        "record": "test2",
                        "platformProvider": "Ali"
                    }
                ]
            }
        ],
        "cocoaManagedService": [
            {
                "serviceName": "测试",
                "domain": "luckykeeper.site",
                "record": "test",
                "platformProvider": "Ali"
            },
            {
                "serviceName": "测试2",
                "domain": "luckykeeper.site",
                "record": "test2",
                "platformProvider": "Ali"
            }
        ],
        "cloudPlatformInfo": [
            {
                "platformProvider": "Ali",
                "accessKey": "***",
                "accessSecret": "***"
            }
        ],
        "timeout": 10,
        "DataBaseType": "mysql",
        "Dsn": "root:***@tcp(192.168.1.2:3306)/cocoasyncer?charset=utf8mb4",
        "createdAt": "2023-09-07T15:52:46+08:00",
        "updatedAt": "2023-09-18T22:54:22+08:00",
        "configImported": true
    }
}

业务接口

数据推送:Leader 节点推向 Follower 节点,数据只存在此方向上的流动(看门狗数据除外),当 Leader 节点宕机,只能等待 Leader 节点再次启动才能对整个集群进行控制(此设计为业务场景原因)

Leader 节点

Leader 节点不提供业务接口

Follower 节点

v1/updateClusterInfo 加入集群&更新信息(节点、服务、云平台)

请求方式 Post / json
参数 节点的 secret,model.CocoaBasic
业务状态码 200 成功
405 非 follower 节点不允许调用

v1/cocoaSyncer/quit 退出集群

由 CLI 提供该能力