首页>>后端>>Spring->SpringCloud系列:服务注册中心组件

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

时间:2023-11-30 本站 点击:0

作者平台

| CSDN:https://blog.csdn.net/qq_41153943  

| 掘金:https://juejin.cn/user/651387938290686

| 知乎:https://www.zhihu.com/people/1024-paper-96

| GitHub:https://github.com/JiangXia-1024?tab=repositories

| 微信公众号: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的介绍:https://www.consul.io/docs/intro

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

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

下载安装consul

consul下载地址:https://www.consul.io/downloads。可以根据自己平台选择下载不同平台的安装包,这里就选择下载windows版本的。

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

然后输入命令:

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

启动consul服务。

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

localhost:8500

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

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

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必须给予响应该服务才能正常运行。所以需要引入健康检查的依赖,否则会导致健康检查始终不通过,导致服务不能使用,项目启动会出现下述情况:

入口类的代码如下:

@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=localhostspring.cloud.consul.port=8500spring.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

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

总结

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

最后本文的源码在:https://github.com/JiangXia-1024/SpringCloudProject,欢迎下载、star。

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

相关推荐

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

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

zookeeper教程:入门篇

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

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

原文:https://juejin.cn/post/7103709128995897375


本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:/Spring/4503.html