如何用 HTTP API 向 Consul 注册服务?
先说出你的答案
定义边界、关键机制、一个反例;P8题再补容量、失败与验证。
查看完整题解
参考回答
直接回答
向管理实例的 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 注册从进程一直到消费者经历什么?
和评分标准对照,你能独立回答到哪一步?
自评会安排下一次复习,不保存你的口述内容。
这道题,你掌握得怎么样?
掌握程度由你主动标记,阅读和收藏不会自动改变状态。