使用consul进行服务发现的两种正确姿势

读完本文只需30秒。少刷一套抖音,多学一点技术,足足矣。

consul的服务发现功能有两种使用方式,大家可以在项目中根据需要选择适合自己的方式:

1. DNS接口

默认情况下,所有的DNS name都在 consul namespace, 这个是可以配置的

某个服务的dns名字为:NAME.service.consul

查询:

# dig @127.0.0.1 -p 8600 web.service.consul

2. http api方式

# curl http://localhost:8500/v1/catalog/service/web

注意:

如果想过滤健康的服务实例(health check为success的服务),则需要调用:

# curl 'http://localhost:8500/v1/health/service/web?passing'

而DNS接口的方式会自动过滤并返回健康的服务实例,这里有一个例子:

https://learn.hashicorp.com/consul/getting-started/services

在这个例子里,你会发现,虽然你成功注册了一个服务,但是health check 是fail的,所以执行:

# dig @127.0.0.1 -p 8600 web.service.consul

并未返回对应的服务!

以上就是通过consul进行服务发现的两种方式,你学会了吗?

每天学习一点点,早日踏上大神路。

原文链接:,转发请注明来源!