Spring Cloud Consul—HTTP健康检查
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Spring Cloud Consul—HTTP健康检查相关的知识,希望对你有一定的参考价值。
Consul实例的运行状况检查默认为“/ health”,这是Spring Boot执行器应用程序中有用端点的默认位置。如果您使用非默认上下文路径或servlet路径(例如server.servletPath=/foo)或管理端点路径(例如management.context-path=/admin),则需要更改这些,即使是执行器应用程序。也可以配置Consul用于检查运行状况端点的间隔。“10s”和“1m”分别表示10秒和1分钟。例:
application.yml
spring:
cloud:
consul:
discovery:
healthCheckPath: ${management.context-path}/health
healthCheckInterval: 15s
元数据和Consul标签
Consul尚未支持服务元数据。Spring Cloud的ServiceInstance有一个Map metadata字段。Spring Cloud Consul使用Consul标签来近似元数据,直到Consul正式支持元数据。使用key=value形式的标签将被分割并分别用作Map键和值。标签没有相同的=符号,将被用作键和值两者。
spring:
cloud:
consul:
discovery:
tags: foo=bar, baz
上述配置将导致具有foo→bar和baz→baz的映射。
使Consul实例ID唯一
默认情况下,一个领事实体注册了一个等于其Spring应用程序上下文ID的ID。默认情况下,Spring应用程序上下文ID为${spring.application.name}:comma,separated,profiles:${server.port}。在大多数情况下,这将允许一个服务的多个实例在一台机器上运行。如果需要进一步的唯一性,使用Spring Cloud,您可以通过在spring.cloud.consul.discovery.instanceId中提供唯一的标识来覆盖此。例如:
spring:
cloud:
consul:
discovery:
instanceId: ${spring.application.name}:${vcap.application.instance_id:${spring.application.instance_id:${random.value}}}
使用这个元数据和在localhost上部署的多个服务实例,随机值将在那里进行,以使实例是唯一的。在Cloudfoundry中,vcap.application.instance_id将在Spring Boot应用程序中自动填充,因此不需要随机值。
使用DiscoveryClient
Spring Cloud支持Feign(REST客户端构建器),Spring RestTemplate使用逻辑服务名称而不是物理URL。
您还可以使用org.springframework.cloud.client.discovery.DiscoveryClient,它为Netflix不特定的发现客户端提供了一个简单的API,例如
@Autowired
private DiscoveryClient discoveryClient;
public String serviceUrl() {
List list = discoveryClient.getInstances("STORES");
if (list != null && list.size() > 0 ) {
return list.get(0).getUri();
}
return null;
}
以上是关于Spring Cloud Consul—HTTP健康检查的主要内容,如果未能解决你的问题,请参考以下文章
Spring Cloud——Consul服务注册中心的介绍安装与使用
Spring Cloud——Consul服务注册中心的介绍安装与使用
spring-cloud-starter-consul-config 和 spring-cloud-consul-config 区别是什么?从网上没有搜到答案,待跟进。