Eureka REST 相关接口

发布于:2025-06-06 ⋅ 阅读:(17) ⋅ 点赞:(0)

可供非 Java 应用程序使用的 Eureka REST 操作。

appID 是应用程序的名称,instanceID 是与实例关联的唯一标识符。在 AWS 云中,instanceID 是实例的实例 ID;在其他数据中心,它是实例的主机名。

对于 XML/JSON,HTTP 的 ACCEPT 类型以及提供的 content-type 必须分别包含 application/xmlapplication/json

操作 HTTP 动作 描述
注册新应用程序实例 POST /eureka/v2/apps/{appID} 输入: JSON/XML 负载
HTTP 状态码: 成功时返回 204
注销应用程序实例 DELETE /eureka/v2/apps/{appID}/{instanceID} HTTP 状态码: 成功时返回 200
发送应用程序实例心跳 PUT /eureka/v2/apps/{appID}/{instanceID} HTTP 状态码:
* 成功时返回 200
* 如果 instanceID 不存在则返回 404
查询所有实例 GET /eureka/v2/apps HTTP 状态码: 成功时返回 200
输出: JSON/XML
查询特定 appID 的所有实例 GET /eureka/v2/apps/{appID} HTTP 状态码: 成功时返回 200
输出: JSON/XML
查询特定 appID/instanceID GET /eureka/v2/apps/{appID}/{instanceID} HTTP 状态码: 成功时返回 200
输出: JSON/XML
查询特定 instanceID GET /eureka/v2/instances/{instanceID} HTTP 状态码: 成功时返回 200
输出: JSON/XML
将实例移出服务 PUT /eureka/v2/apps/{appID}/{instanceID}/status?value=OUT_OF_SERVICE HTTP 状态码:
* 成功时返回 200
* 失败时返回 500
将实例移回服务(移除覆盖状态) DELETE /eureka/v2/apps/{appID}/{instanceID}/status?value=UP HTTP 状态码:
* 成功时返回 200
* 失败时返回 500
(value=UP 是可选的,它作为移除覆盖状态后回退状态的建议值)
更新元数据 PUT /eureka/v2/apps/{appID}/{instanceID}/metadata?key=value HTTP 状态码:
* 成功时返回 200
* 失败时返回 500
查询特定 vip 地址下的所有实例 GET /eureka/v2/vips/{vipAddress} HTTP 状态码:
* 成功时返回 200,输出:JSON/XML
* 如果 vipAddress 不存在则返回 404
查询特定安全 vip 地址下的所有实例 GET /eureka/v2/svips/{svipAddress} HTTP 状态码:
* 成功时返回 200,输出:JSON/XML
* 如果 svipAddress 不存在则返回 404

注册 (REGISTER)

注册时,需要提交一个符合以下 XSD 的 XML(或 JSON)请求体:

{
  "$schema": "http://json-schema.org/draft-04/schema#",
  "title": "Eureka Instance Registration",
  "type": "object",
  "required": [
    "hostName",
    "app",
    "ipAddr",
    "vipAddress",
    "secureVipAddress",
    "status",
    "securePort",
    "homePageUrl",
    "statusPageUrl",
    "healthCheckUrl",
    "dataCenterInfo"
  ],
  "properties": {
    "hostName": {
      "type": "string",
      "description": "在 EC2 中应为公共 DNS 名称(在 EC2 内部解析为私有 IP)"
    },
    "app": {
      "type": "string",
      "description": "应用程序名称 (appID)"
    },
    "ipAddr": {
      "type": "string",
      "description": "实例的 IP 地址"
    },
    "vipAddress": {
      "type": "string",
      "description": "虚拟 IP 地址"
    },
    "secureVipAddress": {
      "type": "string",
      "description": "安全虚拟 IP 地址"
    },
    "status": {
      "type": "string",
      "enum": ["UP", "DOWN", "STARTING", "OUT_OF_SERVICE", "UNKNOWN"],
      "description": "实例状态"
    },
    "port": {
      "type": "integer",
      "minimum": 1,
      "description": "服务端口(可选)"
    },
    "securePort": {
      "type": "integer",
      "minimum": 1,
      "description": "安全端口"
    },
    "homePageUrl": {
      "type": "string",
      "description": "主页 URL"
    },
    "statusPageUrl": {
      "type": "string",
      "description": "状态页 URL"
    },
    "healthCheckUrl": {
      "type": "string",
      "description": "健康检查 URL"
    },
    "dataCenterInfo": {
      "type": "object",
      "required": ["name"],
      "properties": {
        "name": {
          "type": "string",
          "enum": ["MyOwn", "Amazon"],
          "description": "数据中心名称"
        },
        "metadata": {
          "type": "object",
          "properties": {
            "ami-launch-index": {"type": "string"},
            "local-hostname": {"type": "string"},
            "availability-zone": {"type": "string"},
            "instance-id": {"type": "string"},
            "public-ipv4": {"type": "string"},
            "public-hostname": {"type": "string"},
            "ami-manifest-path": {"type": "string"},
            "local-ipv4": {"type": "string"},
            "hostname": {"type": "string"},
            "ami-id": {"type": "string"},
            "instance-type": {"type": "string"}
          },
          "description": "仅当 name 为 Amazon 时需要 AWS 元数据",
          "additionalProperties": false
        }
      },
      "additionalProperties": false
    },
    "leaseInfo": {
      "type": "object",
      "properties": {
        "evictionDurationInSecs": {
          "type": "integer",
          "minimum": 1,
          "description": "租约驱逐时间(秒),默认为 90 秒(可选)"
        }
      },
      "additionalProperties": false
    },
    "metadata": {
      "type": "object",
      "description": "应用特定的键值对元数据(可选)",
      "additionalProperties": {
        "type": ["string", "number", "boolean", "null"]
      }
    }
  },
  "additionalProperties": false
}

续约 (RENEW)

示例: PUT /eureka/v2/apps/MYAPP/i-6589ef6

响应:
• 状态码: 200 (成功)

• 状态码: 404 (Eureka 不认识该实例,请先注册)

• 状态码: 500 (失败)

注销 (CANCEL)

(如果 Eureka 在 evictionDurationInSecs(驱逐持续时间)内未收到服务节点的心跳,则该节点将自动注销)

示例: DELETE /eureka/v2/apps/MYAPP/i-6589ef6

响应:
• 状态码: 200 (成功)

• 状态码: 500 (失败)



网站公告

今日签到

点亮在社区的每一天
去签到