consul作为配置中心

2023-11-08

 

Conusl可以作为注册中心,也可以作为配置中心。

作为配置中心,使用起来也很方便,大多数都是配置。

Consul的安装这里不说了,主要是说明java后端怎么使用,所以本次采用windows版本的consul。

 

引入和配置

2个文件:

 

pom配置:

<!-- consul配置中心 -->

<dependency>

<groupId>org.springframework.cloud</groupId>

<artifactId>spring-cloud-starter-consul-config</artifactId>

</dependency>

 

<!-- 使用 @EnableConfigurationProperties 开启 @ConfigurationProperties 注解 -->

<dependency>

<groupId>org.springframework.boot</groupId>

<artifactId>spring-boot-configuration-processor</artifactId>

<optional>true</optional>

</dependency>

 

bootstrap.yml

 

spring:

  profiles:

    active: dev

  cloud:

    consul:

      host: 127.0.0.1  #注册中心的ip或host。也是集群地址,配置一个即可。注释掉整个consul这段就可以启动,即使没有注册中心也不报错。有这段就必须有一个可用的注册中心,否则启动报错

      port: 8500

      discovery:

        enabled: true #默认true。Consul Discovery Client是否注册到注册中心。和register同时设置成false,就不需要起consul服务。

        register: true #是否将服务注册到Consul集群中心.。这个参数和上面的enabled参数同时设置成false,应用才不会注册注册中心,才可以不起consul服务!

        deregister: true #默认true,服务停止时注销服务,即从服务列表中删除。设置成false的话,???

        #service-name: ${spring.application.name}  #注册在consul上面的名字,在consul的调用中,是通过此名字调用的。默认服务名,不要改

        instance-id: ${spring.application.name}-${spring.cloud.client.ip-address}:${server.port} #只供显示用,在ID列显示

        health-check-interval: 5s  #配置 Consul 健康检查频率,也就是心跳频率。

#        health-check-critical-timeout: 2s #健康检查失败多长时间后,取消注册。在node上显示红色叉。配了这个参数,如果consul集群的server重启会注销应用!

        #健康检查路径。默认是使用actuator的健康检查接口:http://localhost:8901/actuator/health返回{"status":"UP"}。其实只看http状态码是200就认为服务正常。你可以换成自己的一个rest接口替代actuator

        #health-check-path: /hello

        prefer-ip-address: true #表示注册时使用IP而不是hostname

      retry:

        initial-interval: 5000   # 服务监测时间间隔

        max-attempts: 20

      #consul作为配置中心,官网属性https://docs.spring.io/spring-cloud-consul/docs/2.2.4.RELEASE/reference/html/appendix.html

      config:

        enabled: true          # 启用 consul 配置中心.默认是true

        format: YAML           # 配置转码方式,默认 key-value,其他可选:yaml/files/properties

        data-key: data         # 配置 key 值,value 对应整个配置文件。例如config/application,dev/data

        prefix: config         # 基础文件夹,默认值 config.

        default-context: one  #应用文件夹,默认值 application,consul 会加载 config/<applicationName> 和 config/<defaultContext> 两份配置,设置为相同值,则只加载一份.sets the folder name used by all applications

#        profile-separator: '-'   #环境分隔符,默认值 ",例如例如config/application,dev/data修改后是config/application-dev/data

        watch:

         enabled: true         # 启用配置自动刷新

         delay: 1000           # 刷新频率,单位:毫秒

  servlet:

    multipart:

      enabled: true 

      max-file-size: 100MB

      max-request-size: 300MB

 

 

到此为止,consul作为配置中心就可以使用了。

要注意,consul作为配置中心,一些配置项在应用启动的时候就需要加载和初始化了,所以consul的配置必须写在bootstrap.yml

我们可以将welcom.value属性写入配置文件中,但要注意,配置中心的配置优先级高于本地配置文件.

如果本地配置文件不存在,配置中心也没有,启动会报错的.

注意,需要变更配置的类上,要加@RefreshScope注解,否则不会刷新配置。

(网上有人做实验,就是没有加@RefreshScope注解,所以才说@Value不会刷新consul修改后的值,只有@ConfigurationProperties才会。原因就是没有加@RefreshScope注解)

 

 

先说结论:consul作为配置中心,既然必须配置在bootstrap.yml,那地址只能写死了。如果有多个环境怎么办?其实一个配置中心也是支持多个环境的,配置中心就是把原来使用的bootstrap.yml,application.yml,application-dev.yml,application-test.yml搬到了consul的内存中而已,并且取值的优先级比这些配置文件高,其他使用并没有区别。

 

那么多个环境还是跟以前一样,通过

spring:

  profiles:

    active: dev

指定使用哪套配置就行了,没必要每个环境搭建一套consul。

实际情况,我们确实每个环境搭建了一套consul,毕竟生产环境和开发环境是物理隔离的。

对于bootstrap.yml里我们必须要按环境分开配置的项怎么办?我们可以使用环境变量参数来修改,例如java -jar -Dspring.profiles.active=test -Dspring.cloud.consul.host=192.168.1.18

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

consul作为配置中心 的相关文章

随机推荐

  • 【华为OD机试】跳格子2【2023 B卷

    华为OD机试 真题 点这里 华为OD机试 真题考点分类 点这里 题目描述 小明和朋友玩跳格子游戏 有 n 个连续格子组成的圆圈 每个格子有不同的分数 小朋友可以选择从任意格子起跳 但是不能跳连续的格子 不能回头跳 也不能超过一圈 给定一个代
  • go语言操作Redis详细步骤

    前言 导入开源库 操作字符串 package main import fmt github com garyburd redigo redis func main 通过 go 向 redis 写入和读取数据 1 连接到redis conn
  • TLS协议分析

    TLS协议分析 2015 09 06 本文目标 学习鉴赏TLS协议的设计 透彻理解原理和重点细节 跟进一下密码学应用领域的历史和进展 整理现代加密通信协议设计的一般思路 本文有门槛 读者需要对现代密码学有清晰而系统的理解 建议花精力补足背景
  • [github项目]基于百度地图二次开发实现的车辆监管(包含车辆定位、车辆图片和方向控制,电子围栏,图形绘制等功能)前端实现(不包含后端实现)...

    前言 基于百度地图javascript版本开发 百度地图中所用的key已承诺仅用于测试 不用于商业用途 注 本文所有代码可以到github上进行下载 github地址 http map eguid cc 已经封装好的功能 基于百度地图二次开
  • Matlab Babble噪声

    问题 我们在做语音相关实验的时候可能需要用到Babble噪声 解决 可以从该链接下载babble噪声 截取我们所需要的长度 设置信噪比 进行加噪 上代码 load babble mat 导入babble文件 voicepath M5 wav
  • 随机生成几位字母加数字的混合字符串

    日常开发中 我们可能需要一些随机字符串做测试 可能是4位 也可能是8位 如下是一个随机生成8位字符串的工具类 可根据需要 改成自己的需要的 import java util Random public class RandomGenerat
  • mysql 设置 utc_关于时间:MySQL应该将其时区设置为UTC吗?

    跟随问题HTTPS serverfault com questions 191331 should servers have their timezone set to GMT UTC 应将神秘的时间带设置到UTC 还是应设置为服务器或PH
  • 期货开户不要孤注一掷

    一 在没有稳定盈利之前 特别是新手 尽可能少入金 建议不要超过1万 每次只做一手 因为新手没有不亏的 投的多 就意味着亏的多 持续稳定盈利再多投入 才是上策 许多新手一两周就亏几万几十万的 等明白期货的凶险 已经晚了 下单后 连续三天很纠结
  • [已解决] wget命令出现Unable to establish SSL connection.错误

    文章目录 解决 从linux上下载mysql 包时 wget https downloads mysql com archives get p 23 file mysql 5 6 46 linux glibc2 12 x86 64 tar
  • qt 中 file generation failure: unable to create the directory

    原因 不能将qt的项目工程安装到qt软件的安装目录中 如 opt 的目录中 解决 应该使用当前系统的普通用户的目录中建立项目目录 如 home chenfan QT myprojects
  • 数据分析概述和理论基础

    2018 03 26 Python开发者交流平台 什么是数据分析 数据分析 是指用适当的统计分析方法对收集来的大量数据进行分析 提取有用信息和形成结论 而对数据加以详细研究和概括总结的过程 为什么会有数据分析 随着计算机技术 互联网技术 数
  • Linux---用户的权限

    专栏 Linux 个人主页 HaiFan 本章为大家带来用户的权限的讲解 用户的权限 Linux权限的概念 权限的三类对象 权限的三种类型 权限设置chmod chown chgrp 更改权限chmod chown chgrp umask
  • Atcoder Beginner Contest 164 D

    题意 给定一个只包含数字字符且不包含 0 0 0字符的字符串 S S S 问有子串组成的十位数是 2019 2019
  • QListView的使用

    一 介绍 QListView可以用来以列表的形式展示数据 在Qt中使用model View结构来管理数据与视图的关系 model负责数据的存取 数据的交互则通过delegate来实现 二 model QT提供了一些现成的models用于处理
  • drools规则引擎初探

    1 drools是什么 Drools是为Java量身定制的基于Charles Forgy的RETE算法的规则引擎的实现 具有了OO接口的RETE 使得商业规则有了更自然的表达 Rule是什么呢 一条规则是对商业知识的编码 一条规则有 att
  • Java中Set的使用

    在Java中使用Set 可以方便地将需要的类型以集合类型保存在一个变量中 主要应用在显示列表 Set是一个不包含重复元素的 collection 更确切地讲 set 不包含满足 e1 equals e2 的元素对 e1 和 e2 并且最多包
  • 如何修改桌面的存放路径?(将桌面放到D盘或E盘)

    方法1 使用超级兔子 依次选择 魔法设置 系统 系统文件夹 桌面 就可以自定义桌面项的路径了 方法2 首先要在 开始 运行 内输入 regedit 打开注册表编辑器 然后要在 文件 下拉菜单中 的 导出 功能备份好注册表 以防万一 接着在左
  • 学习笔记——Java入门第二季

    1 1 介绍类与对象 类和对象的关系 时间万物皆对象 对象是具体的事物 是类的具体事例 类是抽象的概念 是对象的模板 new关键字是创建实例对象最重要的标志 Dog duoduo new Dog Dog lucky new Dog 这样就创
  • RabbitMQ--扩展--11--均衡负载

    RabbitMQ 扩展 11 均衡负载 1 场景 面对大量业务访问 高并发请求 可以使用高性能的服务器来提升RabbitMQ服务的负载能力 当单机容量达到极限时 可以采取集群的策略来对负载能力做进一步的提升 但这里还存在一个负载不均衡的问题
  • consul作为配置中心

    Conusl可以作为注册中心 也可以作为配置中心 作为配置中心 使用起来也很方便 大多数都是配置 Consul的安装这里不说了 主要是说明java后端怎么使用 所以本次采用windows版本的consul 引入和配置 2个文件 pom配置