原创

springcloud简单使用consul进行服务注册与配置


在微服务架构的世界里,服务的注册与发现以及配置管理是至关重要的环节。今天,我们就来探讨一下如何在 Spring Cloud 中简单地使用 Consul 来实现这两个关键功能。

一、Consul 简介

Consul 是一个具备服务发现、配置管理和分布式协调等功能的工具。它提供了一个高可用、分布式的系统,让我们能够方便地管理微服务架构中的各种服务和配置。

二、安装Consul

以window环境安装

1.官网下载地址

https://developer.hashicorp.com/consul/install

解压到安装目录即可得到consul.exe可执行文件

2.检查

管理员打开cmd命令执行器

进去Consul安装目录

执行consul -v或者consul --version命令,响应Consul版本信息表示成功

C:\dev\consul>consul -v
Consul v1.17.1
Revision 9bcafa24
Build Date 2023-12-12T19:55:27Z
Protocol 2 spoken by default, understands 2 to 3 (agent will automatically use protocol >2 when speaking to compatible agents)

3.运行

前台运行,窗口关闭就结束,配置数据会丢失

consul agent -dev

创建bat执行文件start.bat,将服务注册成window后台服务,设置开启自启并设置持久化数据到文件中

@echo.服务启动......
@echo off
@sc create Consul binpath="C:\dev\consul\consul.exe agent  -server  -ui  -bind=127.0.0.1 -client=0.0.0.0 -bootstrap-expect  1  -data-dir C:\dev\consul\data "
@net start Consul
@sc config Consul start = AUTO
@echo.Consul start is OK........success
@pause

双击执行bat文件即可启动

4.访问

http://http://localhost:8500/

二、Spring Cloud 整合 Consul

1. 引入依赖

首先,在您的 Spring Cloud 项目的 pom.xml 文件中添加相关依赖:

<!-- 引入springcloud consul 服务注册 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    <exclusions>
        <exclusion>
            <groupId>commons-logging</groupId>
            <artifactId>commons-logging</artifactId>
        </exclusion>
    </exclusions>
</dependency>

<!-- 引入springcloud consul 服务配置 -->
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-consul-config</artifactId>
</dependency>
<dependency>
    <groupId>org.springframework.cloud</groupId>
    <artifactId>spring-cloud-starter-bootstrap</artifactId>
</dependency>

2. 配置 Consul

application.propertiesapplication.yml 中进行 Consul 的配置:

spring:
  application:
    name: cloud-payment-service
  cloud:
    consul:
      host: localhost
      port: 8500
      discovery:
        service-name: ${spring.application.name}
      config:
        profile-separator: "-"  #m默认是英文‘,’ 这里修改成‘-’
        format: YAML
        watch:
          wait-time: 55 #配置生效等待时间,单位秒,默认55秒

3. 服务注册

在您的服务启动类上添加 @EnableDiscoveryClient 注解,这样服务启动时就会自动注册到 Consul 中。

@SpringBootApplication
@EnableDiscoveryClient
@RefreshScope
public class Main {
    public static void main(String[] args) {
        SpringApplication.run(Main.class, args);
    }
}

三、服务配置管理

Consul 不仅可以用于服务注册,还能进行配置管理。我们可以将配置信息存储在 Consul 的键值对中,然后在服务中获取。

例如,我们可以在 Consul 中设置一个名为 consul.info 的键,值为一些配置信息。

在服务中通过 @Value 注解来获取这些配置:

@Value("${consul.info}")
private String myConfig;

或者

@RequestMapping("/consul/get/info")
public String getInfoByConsul(@Value("${consul.info}") String info) {
	return "info: "+ info + "\t"
}

四、实际应用中的优势

1. 动态发现

当有新的服务加入或旧的服务下线时,Consul 能够实时感知并通知其他相关服务,实现了服务的动态发现。

2. 集中式配置管理

所有服务的配置都集中在 Consul 中,方便进行统一管理和更新,避免了配置不一致的问题。

3. 高可用性

Consul 自身具备高可用性,保证了服务注册和配置管理的稳定性。

五、总结

通过以上简单的步骤,我们就在 Spring Cloud 中成功地使用 Consul 实现了服务注册与配置管理。这为我们构建强大、灵活的微服务架构提供了有力的支持,让我们在应对复杂业务需求时更加得心应手。

SpringCloud
  • 作者:一介闲人(联系作者)
  • 发表时间: 2024-08-29 13:44
  • 版权声明:原创-转载需保持署名
  • 公众号转载:请在文末添加本文链接
  • 评论