• Consul 入门实战(3)Spring Cloud Consu 使用


    Cousul 可以作为注册中和配置中心来使用,本来主要介绍 Spring Cloud 整合 Consul 的使用,文中所使用到的软件版本:Java 1.8.0_191、Consul 1.11.1、Spring Boot 2.3.12.RELEASE、Spring Cloud Hoxton.SR12。

    1、Consul 作为注册中心

    1.1、引入依赖

    <dependency>
        <groupId>org.springframework.boot</groupId>
        <artifactId>spring-boot-starter-actuator</artifactId>
    </dependency>
    
    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-discovery</artifactId>
    </dependency>

    1.2、配置(application.yml)

    spring:
      cloud:
        consul:
          host: 10.40.96.20
          port: 8500
          discovery:
            register: true
            prefer-ip-address: true
            health-check-critical-timeout: 10s #监控检查失败多长时间后,删除注册的服务

    如果需要调用的服务在另外一个数据中心,则需要增加 spring.cloud.consul.datacenters 配置;如在本服务在数据中心 dc2,需调用的一个服务(scdemo-server)在另一个数据中心 dc1,则配置如下:

    spring:
      cloud:
        consul:
          host: 10.40.96.131
          port: 8500
          discovery:
            register: true
            prefer-ip-address: true
            datacenters:
              scdemo-server: dc1
            health-check-critical-timeout: 10s #监控检查失败多长时间后,删除注册的服务

    注:在使用新版本(SpringBoot 2.4.12/2.4.13/2.5.6/2.5.7/2.5.8、SpringCloud 2020.0.4)时,spring.cloud.consul.datacenters 配置没有效果,还是报找不到服务,应该是新版本还有 bug。

    配置完成后,正常启动服务即可。

    1.3、删除无效的服务

    如果在注册服务是未设置 spring.cloud.consul.discovery.health-check-critical-timeout 参数,可以通过命令行或 API 来删除无效的服务。

    命令行:

    ./consul services deregister -id=scdemo-client-9002

    API:

    curl -X PUT http://10.40.96.10:8500/v1/agent/service/deregister/scdemo-client-9002

    2、Consul 作为配置中心

    2.1、引入依赖

    <dependency>
        <groupId>org.springframework.cloud</groupId>
        <artifactId>spring-cloud-starter-consul-config</artifactId>
    </dependency>

    2.2、配置(bootstrap.yml)

    spring:
      cloud:
        consul:
          host: 10.40.96.10
          port: 8500
          config:
            format: yaml 
            prefix: config #配置所在目录
            data-key: data #配置的 key

    2.3、在 Consul 控制台配置 Key

    key 为:config/scdemo-server/data  (scdemo-server 为对应的服务名)

    value 为:

    test:
      k1: v1
      k2: v22

    如下图:

    2.4、获取配置信息

    @Autowired
    private Environment environment;
    
    @Scheduled(cron = "0/10 * * * * *")
    public void test() {
        logger.info("test.k1={}", environment.getProperty("test.k1"));
        logger.info("test.k2={}", environment.getProperty("test.k2"));
    }
  • 相关阅读:
    Servlet-获取页面的元素的值的方式以及区别
    Http请求-get和post的区别
    Servlet-xml配置简介以及url-pattern简介
    javaweb目录结构简介
    Servlet-生命周期简介
    tomcat-四种运行模式和三种部署模式(优化)
    命名空间System.IO
    Dictionary 字典
    导出-以虚拟表的形式获取数据源
    导入excel-uploadify+npoi
  • 原文地址:https://www.cnblogs.com/wuyongyin/p/15739339.html
Copyright © 2020-2023  润新知