Java 后端面试题库 / 全部题解免费阅读理解原理,有条理地回答

如何用 HTTP API 向 Consul 注册服务?

查看完整题解

参考回答

直接回答

向管理实例的 agent 发 PUT /v1/agent/service/register,请求体里用 Name 写服务名、ID 写实例标识,再给出地址、端口及可选检查。需要重试登记时,继续用原来的实例 ID。

讲清原理

Agent 会把注册和检查同步到目录。线上调用要用有对应服务写权限的令牌,并通过部署要求的加密入口访问。用同一 ID 替换整套检查时,可以显式打开 replace-existing-checks=true。

例子与易错点

本地开启 Consul 开发 agent,用 Bash 设置 CONSUL_URL 为可访问的 HTTP 入口,例如 http://127.0.0.1:8500。以下使用本机回环地址登记演示实例,无需在端口上启动服务。

curl -fsS -X PUT -H 'Content-Type: application/json' \
  --data '{"ID":"inventory-s056","Name":"inventory","Address":"127.0.0.1","Port":18080}' \
  "$CONSUL_URL/v1/agent/service/register"
curl -fsS "$CONSUL_URL/v1/health/service/inventory?passing=true"

健康查询应返回 ID 为 inventory-s056、端口为 18080 的实例。它没有登记业务探测,只能验证注册和查询通路。

延伸阅读 Consul 怎样实现服务注册? · 用 Consul HTTP API 如何查到可用实例? · 一项 Consul 注册从进程一直到消费者经历什么?

这道题,你掌握得怎么样?

掌握程度由你主动标记,阅读和收藏不会自动改变状态。