SpringCloud系列:服务注册中心组件-consul

作者平台

| CSDN:blog.csdn.net/qq_41153943

| 掘金:juejin.cn/user/651387…

| 知乎:www.zhihu.com/people/1024…

| GitHub:github.com/JiangXia-10…

| 微信公众号:1024笔记

本文一共2163字,预计阅读10分钟

前言

前面的文章SpringCloud系列:服务注册与发现组件-Eureka(上)介绍了常见的服务注册与发现组件有:netflix的eureka、zookeeper(关于zk可以参考之前的文章:zookeeper教程:入门篇)、consul、以及阿里的nacos。

其中SpringCloud:搭建Nacos服务以及服务发现介绍了如何使用nacos作为服务注册中心以及如何进行服务注册。文章zookeeper教程:入门篇则介绍了zookeeper的一些相关知识, zookeeper也可以作为服务注册中心,但是它没有一个服务管理页面,需要通过shell的查看服务注册,使用比较麻烦。 文章SpringCloud系列:服务注册与发现组件-Eureka(上)和 SpringCloud系列:服务注册与发现组件-Eureka(下)介绍了eureka server如何作为服务注册中心以及如何进行服务注册。但是eureka作为服务注册中心不仅需要自己开发微服务还需要使用eureka server开发服务注册中心,并且目前eureka 2.0版本已经停止孵化了。

常见的服务注册中心已经介绍的差不多了,就还差consul了,今天一起学习consul如何作为服务注册中心。

consul简介

consul是一个可以提供服务发现,健康检查,多数据中心,key/value存储等功能的分布式服务框架,用于实现分布式系统的服务发现与配置。与其他分布式服务注册与发现的方案,consul的使用比较简单。consul是使用golang实现,所以具有可移植性,安装包仅仅是一个可执行文件,方便安装。也非常方便和 Docker 配合使用。

更多consul的介绍:www.consul.io/docs/intro

consul官网地址:www.consul.io/

consul下载地址:www.consul.io/downloads

下载安装consul

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

SpringCloud系列:服务注册中心组件-consul_第1张图片

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

SpringCloud系列:服务注册中心组件-consul_第2张图片

然后输入命令:

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

启动consul服务。

SpringCloud系列:服务注册中心组件-consul_第3张图片

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

localhost:8500
复制代码

SpringCloud系列:服务注册中心组件-consul_第4张图片

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

SpringCloud系列:服务注册中心组件-consul_第5张图片

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

SpringCloud系列:服务注册中心组件-consul_第6张图片

nodes表示consul的集群节点。

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

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

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

微服务开发以及服务注册

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

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

具体的依赖如下:

 
        
        
            org.springframework.boot
            spring-boot-starter-web
        

        
        
        
            org.springframework.cloud
            spring-cloud-starter-consul-discovery
        
        
        
            org.springframework.boot
            spring-boot-starter-actuator
        
    

复制代码

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

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

SpringCloud系列:服务注册中心组件-consul_第7张图片

入口类的代码如下:

@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
复制代码

SpringCloud系列:服务注册中心组件-consul_第8张图片

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

总结

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

SpringCloud系列:服务注册中心组件-consul_第9张图片

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

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

相关推荐

  • Spring注解(三):@scope设置组件作用域

  • SpringCloud:搭建Nacos服务以及服务发现

  • zookeeper教程:入门篇

  • SpringCloud系列:服务注册与发现组件-Eureka(上)

  • SpringCloud系列:服务注册与发现组件-Eureka(下)

你可能感兴趣的:(Spring,Cloud,微服务,consul,spring,cloud,consul,微服务)