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


相关推荐
努力努力再努力wz5 天前
【Docker入门系列】从 LXC 到 containerd:一文梳理 Docker 容器运行时架构演进与轻量化原理
docker·eureka·架构
梅梅绵绵冰8 天前
Docker容器化平台
docker·容器·eureka
jiao糖瓜子8 天前
Docker 完全指南:从镜像容器到生产部署
docker·容器·eureka·镜像·仓库
yanwumuxi9 天前
Milvus使用和改进
云原生·eureka·milvus
xhaxy10 天前
docker
docker·容器·eureka
一技安身10 天前
【信创】Docker‑Compose V2 两种离线部署(独立模式、插件模式)简易教程
java·docker·eureka
重生之我是Java开发战士11 天前
【Spring Cloud】Eureka服务注册发现与LoadBalancer负载均衡
spring cloud·eureka·负载均衡
重生之我来学Python12 天前
Docker套装的简介、安装、超级详细教程
linux·docker·容器·eureka·github
起名真的太难了12 天前
Docker 项目部署
docker·容器·eureka
码力斜杠哥12 天前
Docker Compose快速入门笔记
笔记·docker·eureka