Serie SpringCloud: componente de registro de servicios --- cónsul

¡Continúe creando, acelere el crecimiento! Este es el 7º día de mi participación en el "Nuggets Daily New Plan · June Update Challenge", haz clic para ver los detalles del evento

Plataforma de autor

| CSDN: blog.csdn.net/qq_41153943

| Pepitas: juejin.cn/user/651387…

| Zhihu: www.zhihu.com/people/1024…

| GitHub: github.com/JiangXia-10…

| Cuenta pública de WeChat: 1024 Notas

Este artículo tiene un total de 2163 palabras y se espera que se lea durante 10 minutos.

prefacio

El artículo anterior Serie SpringCloud: Registro de servicios y componentes de descubrimiento - Eureka (arriba) presenta componentes comunes de registro y descubrimiento de servicios: eureka de netflix, zookeeper (para zk, puede consultar el artículo anterior: tutorial de zookeeper: Primeros pasos ), cónsul y Los nacos de Ali.

Entre ellos, SpringCloud: Building Nacos Services and Service Discovery presenta cómo usar nacos como registro de servicios y cómo realizar el registro de servicios. El artículo Tutorial de Zookeeper: Primeros pasos presenta algunos conocimientos relacionados con zookeeper. Zookeeper también se puede utilizar como un centro de registro de servicios, pero no tiene una página de administración de servicios. Necesita ver el registro de servicios a través del shell, lo cual es problemático para usar. Los artículos SpringCloud Series: Service Registration and Discovery Component-Eureka (arriba)SpringCloud Series: Service Registration and Discovery Component-Eureka (abajo) presentan cómo el servidor eureka actúa como un registro de servicios y cómo realizar el registro de servicios. Sin embargo, como registro de servicios, eureka no solo necesita desarrollar microservicios por sí mismo, sino que también necesita usar el servidor eureka para desarrollar un registro de servicios, y la versión actual de eureka 2.0 ha dejado de incubarse.

El registro de servicio común casi se ha introducido y todavía falta consul.Hoy, aprendamos cómo se puede usar consul como un registro de servicio.

Introducción al cónsul

Consul es un marco de servicios distribuidos que puede proporcionar servicios como descubrimiento de servicios, verificación de estado, múltiples centros de datos y almacenamiento de clave/valor. Se utiliza para realizar el descubrimiento de servicios y la configuración de sistemas distribuidos. En comparación con otros esquemas de descubrimiento y registro de servicios distribuidos, el uso de consul es relativamente simple. Consul se implementa utilizando golang, por lo que es portátil. El paquete de instalación es solo un archivo ejecutable para una fácil instalación. También es muy cómodo de usar con Docker.

Más sobre el cónsul: www.consul.io/docs/intro

Dirección del sitio web oficial del cónsul: www.consul.io/

Dirección de descarga de Cónsul: www.consul.io/downloads

Descargar e instalar cónsul

consul下载地址:www.consul.io/downloads。可…

imagen

下载后是一个压缩文件,解压后是一个exe文件。命令行进入到该exe文件的文件夹下(文件路径不要有中文。)或者直接该文件夹下输入cmd:

imagen

然后输入命令:

consul agent -dev    # 以开发模式启动(测试使用)
consul agent -service   # 以服务器的模式启动(需要集群)
复制代码

启动consul服务。

imagen

然后打开浏览器地址栏输入:

localhost:8500
复制代码

imagen

如果不想每次都进入该目录可以将该路径配置进环境变量的path路径即可。

imagen

service表示当前注册的服务。默认consul server启动的同时注册自己,所以一开始就有一个consul服务。

imagen

nodes表示consul的集群节点。

dc1表示数据中心名称,默认是dc1(datacenter的缩写),可以通过下述命令启动时修改默认的数据中心名称:

# 启动时自定义数据中心名称
consul agent -dev -client=0.0.0.0 --datacenter=jiangxia
复制代码

consul下载安装并且启动完成之后就可以开发对应的微服务,然后在consul中进行服务注册了。

微服务开发以及服务注册

consul client端的开发和其他的比如nacos和eureka client的开发基本很像,主要的差别就是一些配置的区别。

同理首先在父项目工程下创建一个springboot子项目,并且引入相关的依赖,然后就是配置文件和入口类。

具体的依赖如下:

 <dependencies>
        <!--引入springbootweb依赖-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>

        <!--引入consul依赖,用于服务注册发现-->
        <!--Consul Discovery-->
        <dependency>
            <groupId>org.springframework.cloud</groupId>
            <artifactId>spring-cloud-starter-consul-discovery</artifactId>
        </dependency>
        <!--引入健康检查的依赖,用于健康检查监控-->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-actuator</artifactId>
        </dependency>
    </dependencies>
</project>
复制代码

除了常见的通用依赖,这里的核心依赖就是Consul Discovery的依赖用于服务注册和发现以及用于健康检查的spring-boot-starter-actuator依赖。

consul会检测所有客户端心跳,但是发送心跳时client必须给予响应该服务才能正常运行。所以需要引入健康检查的依赖,否则会导致健康检查始终不通过,导致服务不能使用,项目启动会出现下述情况:

imagen

入口类的代码如下:

@SpringBootApplication
@EnableDiscoveryClient //代表这是服务注册中心的一个客户端,通用的服务注册注解 可以表示consul、zk、nacos 具体根据导入的依赖判断
public class ConsulClientApplication {
    public static void main(String[] args) {
        SpringApplication.run(ConsulClientApplication.class,args);
    }
}
复制代码

这里除了@SpringBootApplication注解之外和consul相关的注解是@EnableDiscoveryClient,表示这是一个服务注册中心的客户端,用于服务注册和发现,@EnableDiscoveryClient和@EnableEurekaClient共同点都是能够让注册中心能够发现,扫描到该服务。但是和@EnableEurekaClient 注解不一样的是@EnableEurekaClient注解表示使用该注解的是一个eureka client的客户端,而@EnableDiscoveryClient是一个通用的注解,可以用于nacos、zk和consul。

接下来就是配置文件配置相应的端口和服务名称等:

#指定服务端口
server.port=8082
#指定服务名称
spring.application.name=consulclient
#向consul server 服务注册地址
spring.cloud.consul.host=localhost
spring.cloud.consul.port=8500
spring.cloud.consul.discovery.service-name=${spring.application.name}
#健康检查设置,默认是true,可以设置为false。但是同理不建议在生成环境关闭
spring.cloud.consul.discovery.register-health-check=false
复制代码

这里有个配置表示用于consul的健康检查,默认设置为true,上面提到的报错问题除了导入健康检查的依赖,还可以通过配置设置关闭健康检查来解决,但是和eureka一样,生产环境不建议关闭健康检查。

spring.cloud.consul.discovery.register-health-check=false
复制代码

上述开发完成,启动项目,然后地址栏输入:

http://localhost:8500
复制代码

imagen

可以发现刚刚开发的consul client已经注册进consul服务注册中心。

总结

通过上述过程,则使用consul作为服务注册中心并且进行服务注册和服务发现的开发完成了。
目前主流的服务注册中心有:eureka、nacos、consul、zookeeper。并且这几篇文章都分别介绍了这几款服务注册中心,总结下它们的区别和特点如下:

imagen

最后本文的源码在:github.com/JiangXia-10…

有任何问题和不对的地方,请指出交流讨论

相关推荐

Supongo que te gusta

Origin juejin.im/post/7103709128995897375
Recomendado
Clasificación