Eureka REST 相关接口


可供非 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)请求体:

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 (失败)


相关推荐
偷萧逸苦茶1 天前
docker常见命令
docker·容器·eureka
高山莫衣2 天前
Docker Desktop导致存储空间不足时的解决方案
docker·容器·eureka
LuckyLay2 天前
Compose 常用命令详解——AI教你学Docker
docker·容器·eureka
没有名字的小羊2 天前
7.可视化的docker界面——portainer
docker·容器·eureka
被困者12 天前
Linux部署Sonic前后端(详细版)(腾讯云)
spring cloud·云原生·eureka
微信公众号:AI创造财富12 天前
Docker 安装 ModelScope(推荐流程)
spring cloud·docker·eureka
2501_9111212314 天前
Docker 高级管理笔记
云原生·eureka
yuren_xia14 天前
Eureka 和 Feign(二)
云原生·eureka
yuren_xia14 天前
Eureka 与 Feign(一)
spring cloud·eureka
mall_090514 天前
Spring Cloud使用Eureka调用接口,超时设置(二)
java·spring cloud·eureka