SpringCloudConsul服务注册原理

本文深入探讨SpringCloud如何使用Consul进行服务注册。通过分析`ApplicationContextAware`和`ApplicationListener`接口的实现,揭示服务注册的自动配置过程,并详细阐述服务注册的完整流程,包括更新服务端口、健康检查等关键步骤。同时,简要介绍了Consul-API的Client设计及其与HTTP通信的关系。
摘要由CSDN通过智能技术生成

前言

consul是什么,大家如果还不知道的,可以先简单百度下,后续会出文章详细的介绍consul,大家可以把它当作服务治理框架,这里我们主要讲解它服务注册部分,在spring下它是怎么进行服务注册的。

按照SpringBoot的一贯作法来说这里会有一个starter pom 。

对于spring starter项目,我们一般首先看该文件:spring.provides 。

下面我们来看下spring-cloud-starter-consul,进入该meta-inf文件夹下的spring.provides:

provides: spring-cloud-consul-discovery

可以看到该starter会自动引入spring-cloud-consul-discovery包。

同样的,对于一个spring项目,我们一般首先查看该文件:spring.factories 。

下面我们来看下spring-cloud-consul-discovery,进入其meta-inf文件夹下的spring.factories:

org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
org.springframework.cloud.consul.discovery.RibbonConsulAutoConfiguration,\
org.springframework.cloud.consul.discovery.configclient.ConsulConfigServerAutoConfiguration,\
org.springframework.cloud.consul.serviceregistry.ConsulAutoServiceRegistrationAutoConfiguration,\
org.springframework.cloud.consul.serviceregistry.ConsulServiceRegistryAutoConfiguration,\
org.springframework.cloud.consul.discovery.ConsulDiscoveryClientConfiguration
org.springframework.cloud.bootstrap.BootstrapConfiguration=\
org.springframework.cloud.consul.discovery.configclient.ConsulDiscoveryClientConfigServiceBootstrapConfiguration

从上面我们可以看到,服务注册和自动服务注册,配置,服务发现等功能都提供了对应的自动注册的逻辑。

下面我们来看下自动服务注册的逻辑

服务自动注册

通过上面我们知道,在容器启动的时候,会执行ConsulAutoServiceRegistrationAutoConfiguration的自动配置。ConsulAutoServiceRegistrationAutoConfiguration部分代码如下:

@Bean
@ConditionalOnMissingBean
public ConsulAutoServiceRegistration consulAutoServiceRegistration(ConsulServiceRegistry registry, AutoServiceRegistrationProperties autoServiceRegistrationProperties, ConsulDiscoveryProperties properties, ConsulAutoRegistration consulRegistration) {
  return new ConsulAutoServiceRegistration(registry, autoServiceRegistrationProperties, properties, consulRegistration);
}

可以看到,这里通过@Bean自动注入了ConsulAutoServiceRegistration类 而ConsulAutoServiceRegistration又是继承的AbstractAutoServiceRegistration抽象类,自动注册的大部分逻辑都在这个类里面,下面

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值