SpringCloud - config 统一配置中心
文章目录
一、创建一个Eureka注册中心
server:
port: 8761
eureka:
instance:
hostname: 127.0.0.1
client:
service-Url:
defaultZone: http://127.0.0.1:8761/eureka/
register-with-eureka: false
fetch-registry: false
server:
enable-self-preservation: false
二、创建一个config同一配置文件中心
1、导入依赖
<!-- eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- config server -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
2、配置文件
server:
port: 8000
spring:
application:
name: config
cloud:
config:
server:
git:
uri: https://gitee.com/StormEnum/config #存放配置文件的仓库
username: [email protected]
password: 密码(可以使用本机公钥)
eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka/
3、启动类上添加注解
@EnableEurekaClient
@EnableConfigServer
三、创建一个Eureka客户端(注册服务、调用服务)
1、导入依赖
<!-- eureka client -->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<!-- config client-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
2、配置文件 (原本的配置文件,但这里我们不这么用)
spring:
application:
name: order
datasource:
username: yancy
password: yancy
url: jdbc:mysql://127.0.0.1:3306/yan_1808
driver-class-name: com.mysql.jdbc.Driver
type: com.alibaba.druid.pool.DruidDataSource #druid连接池
dbcp2:
initial-size: 5 #初始化提供的连接数
min-idle: 5 # 数据库连接池的最小维持连接数
max-idle: 5 # 最大的连接数
eureka:
instance:
hostname: 127.0.0.1
client:
service-url:
defaultZone: http://127.0.0.1:8761/eureka
3、使用config统一配置中心后
server:
port: 8100
spring:
application:
name: order
cloud:
config:
discovery:
enabled: true
service-id: CONFIG
label: master
profile: dev #多环境,dev表示是开发环境
#我们将其它配置信息放到远程的git上,此处以码云为示例
此处我们在git上编写了两个配置文件
1.order-dev.yml
2.order-test.yml
在这里测试一下configserver,8000是我设置config-server的端口号
竟然还可以转换格式
擦,还可以转换为json格式
牛逼的存在
可以在远程git上读取配置信息
4、重点!!!!
将order项目中的application.yml更改为bootstrap.yml,bootstrap的权限最高首先加载
客户端启动项目,首先要加载配置文件,但是本地没有配置文件,就好比让厨师做饭,但是不给提供食材,厨师愿意吗?当然是不愿意了,同理项目也不愿理,结果就是项目和厨师一样只能罢工!!,
5、查看order客户端是否拿到配置
/**
* Created by StormEnum on 2019/4/4 21:38.
*/
@RestController
@RequestMapping("/env")
public class EnvController {
//SpringBoot获取自定义配置信息
@Value("${env}")
private String env;
@GetMapping("getEnv")
public String getEnv(){
return env;
}
}
访问一下:
远程git上拉取配置文件配置成功
将配置更改为 profile: test
多环境生效!!!
需要注意:我们客户端order的本地项目中并没有配置Eureka注册中心地址,它是怎么找到Eureka的?
Eureka注册中心默认端口号为:8761,当本地没有配置时,会自动寻找8761,这是Eureka在一台服务器上可以只根据默认端口号端口号就可以找到,但如果Eureka和order分布在不同的服务器上,就必须将连接Eureka的url配置放在项目本地
四、配置中心高可用
多配置及格config即可,
我们简单看一下
我配置三台config,分别为 8000、8001、8002
我们启动我们的order客户端,看一下order加载的是哪一个config配置中心
第一次:
第二次:
第三次:
三个config都可以被加载,也是根据负载均衡进行加载的
好了,不骗你们了,哪有那么巧,启动三次正好将三个config加载一遍,我是启动了七遍才看到了三个config被加载一遍的!!!!!
五、注意
当Eureka端口号不是默认的8761时候,需要将连接Eureka的配置拿到本地来,是将全部环境的的连接Eureka的配置都拿出来,否则config会将其他环境的配置(连接Eureka的配置)同步到你使用的环境中,所以嘛,还是使用8761吧,免得掉进坑里面出不来!!!!
客户端拉取配置文件试根据名称寻找的,比如我们的order客户端拉取git上的配置是寻找order的配置文件,名称不同是找不到的!!!