Eureka REST 相关接口


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

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

对于 XML/JSON,HTTP 的 ACCEPT 类型以及提供的 content-type 必须分别包含 application/xml 或 application/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 (失败)


相关推荐
csdn_aspnet3 小时前
构建、运行与管理容器的 18 个常用 Docker 命令
docker·容器·eureka·command
我不会起名字3221 天前
服务注册了却调不通:注册中心与心跳的 3 个时间参数
微服务·nacos·注册中心·排查
一级新生6 天前
Dify 日常使用手册(小白版)
人工智能·docker·云原生·eureka·dify·ai工具
xixiaoyunya7 天前
Docker 常用命令与实战:从入门到部署一个简单应用
docker·容器·eureka
pirateeee7 天前
在ubuntu中通过 docker 搭建 yocto 开发环境
ubuntu·docker·eureka
江湖有缘9 天前
Docker实战 | 使用Docker部署Imagor Studio图片编辑工具
java·docker·eureka
林森i11 天前
ida 安装教程
eureka
江湖有缘11 天前
Docker实战 | 使用Docker部署Reubah文件转换器和图像处理器
docker·容器·eureka
JavaPub-rodert12 天前
Docker 日志为什么能把磁盘写爆?讲透 json-file、local、journald、日志轮转与 docker logs
docker·eureka·json
逃逸线LOF12 天前
Cloud服务注册中心异同点对比Nacos|Eureka|zookeeper|consul
zookeeper·eureka·consul