- 狂神说Spring Cloud Netflix笔记-01(服务注册与发现)
- 狂神说Spring Cloud Netflix笔记-02(Eureka集群的搭建 )
- 狂神说Spring Cloud Netflix笔记-03(Ribbon负载均衡)
- 狂神说Spring Cloud Netflix笔记-04(Feign负载均衡)
- 狂神说Spring Cloud Netflix笔记-05(Hystrix服务降级,服务熔断、监控)
- 狂神说Spring Cloud Netflix笔记-06(Zuul 路由网关)
SpringCloud config 分布式配置
14、SpringCloud config 分布式配置
14.1、概述
分布式系统面临的-配置文件的问题
什么是SpringCloud config分布式配置中心
14.2、环境搭建
我这里使用的码云:https://gitee.com/,在国内访问速度快一点,Githup有点慢就没用它
然后还是为了方便理解,重新建立项目
先建立连接码云仓库的server端
springcloud-config-server-3344
pom.xml
<!--config-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<!--actuator完善监控信息-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-actuator</artifactId>
</dependency>
application.yml
server:
port: 3344
spring:
application:
name: springcloud-config-server
# 连接远程仓库,先把连接远程配置写在这里
cloud:
config:
server:
git:
uri: https://gitee.com/wuleiaizb/springcloud-config.git #https的
Config_Server_3344
@SpringBootApplication
@EnableConfigServer //开启注解
public class Config_Server_3344 {
public static void main(String[] args) {
SpringApplication.run(Config_Server_3344.class, args);
}
}
然后你码云或者Githup里面要有一个 application.yml 文件
# 这个3344项目只是为了读取配置,不干别的事,我这里配了 2 套环境为了测试,
spring:
profiles: dev
application:
name: springcloud-config-dev
---
spring:
profiles: test
application:
name: springcloud-config-test
然后
所以上面项目里面的配置文件的uri就是这个仓库的https链接
启动3344项目,访问
- http://localhost:3344/application-dev.yml
- http://localhost:3344/application-test.yml
- http://localhost:3344/application/dev/master
- http://localhost:3344/master/application-dev.yml
都可以获取到,说明配置成功,那么可以进入下一步
springcloud-config-eureka-7001
先在码云或者Githup上新建一个文件config-eureka.yml
spring:
profiles:
active: dev
---
server:
port: 7001
spring:
profiles: dev
application:
name: springcloud-config-eureka-dev
# C:\Windows\System32\drivers\etc\hosts 更改
#Eureka配置
eureka:
instance:
hostname: eureka7001.com #eureska服务端的实例名称 ,如果这个名字一样,他会当作是同一个集群,导致集群失败,所以我还是改回来了,知道即可
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false #表示如果为false则表示自己为注册中心 "defaultZone", "http://localhost:8761/eureka/"
service-url: # 监控页面
#单机:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#集群(关联)
#defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
---
server:
port: 7001
spring:
profiles: test
application:
name: springcloud-config-eureka-test
# C:\Windows\System32\drivers\etc\host 更改
#Eureka配置
eureka:
instance:
hostname: eureka7001.com #eureka服务端的实例名称 ,如果这个名字一样,他会当作是同一个集群,导致集群失败,所以我还是改回来了,知道即可
client:
register-with-eureka: false # 表示是否向eureka注册中心注册自己
fetch-registry: false #表示如果为false则表示自己为注册中心 "defaultZone", "http://localhost:8761/eureka/"
service-url: # 监控页面
#单机:
defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka/
#集群(关联)
#defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
然后创建项目 springcloud-config-eureka-7001
pom.xml
<dependencies>
<!--config-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
<!--erueka server-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-eureka-server</artifactId>
<version>1.4.7.RELEASE</version>
</dependency>
<!--热部署工具-->
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-devtools</artifactId>
</dependency>
</dependencies>
ConfigEurekaServer_7001
//启动之后访问 http://localhost:7001/
@SpringBootApplication
@EnableEurekaServer //EnableEurekaServer表示服务端的启动类,可以接收别人注册进来
public class ConfigEurekaServer_7001 {
public static void main(String[] args) {
SpringApplication.run(ConfigEurekaServer_7001.class, args);
}
}
接下来要接触一个新的配置文件 bootstrap.yml ,这个是系统级别的,它的配置可以覆盖 application.yml
bootstrap.yml
# 系统级别
spring:
cloud:
config:
uri: http://localhost:3344 #直接使用上一个项目来获取配置文件即可
name: config-eureka # 需要从git上读取的资源名称,不要要后缀
profile: dev # 使用的开发环境
label: master # 使用分支,默认为主分支
application.yml
#用户级别
spring:
application:
name: springcloud-config-eureka-7001
然后在3344项目启动的情况下启动这个项目
访问 http://localhost:7001/ 显示正常页面即可
然后我们看它读取的配置 http://localhost:3344/master/config-eureka-dev.yml
最后我们来个服务提供者,也是新建一个项目
springcloud-config-dept-8001
第一步也是先在码云或者Githup上新建文件config-dept.yml
# 两套环境的数据库不一样
spting:
profiles:
active: dev
---
server:
port: 8001
#mybatis配置
mybatis:
type-aliases-package: com.wu.springcloud.pojo
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
#spring的配置
spring:
profiles: dev
application:
name: springcloud-provider-config-dept # 3个服务名称一致是前提
datasource:
type: com.alibaba.druid.pool.DruidDataSource #数据源
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/db01?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC
username: root
password: Wl123456
#eureka 的配置,服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
instance-id: springcloud-provider-dept8001 #修改Eureka上的默认描述信息
prefer-ip-address: true # 为true可以显示服务的ip地址
#info配置
info:
app.name: wulei-springcloud
company.name: blog.wulei2921625957.com
---
server:
port: 8001
#mybatis配置
mybatis:
type-aliases-package: com.wu.springcloud.pojo
config-location: classpath:mybatis/mybatis-config.xml
mapper-locations: classpath:mybatis/mapper/*.xml
#spring的配置
spring:
profiles: test
application:
name: springcloud-provider-config-dept # 3个服务名称一致是前提
datasource:
type: com.alibaba.druid.pool.DruidDataSource #数据源
driver-class-name: com.mysql.cj.jdbc.Driver
url: jdbc:mysql://127.0.0.1:3306/db02?useUnicode=true&characterEncoding=UTF-8&useSSL=true&serverTimezone=UTC
username: root
password: Wl123456
#eureka 的配置,服务注册到哪里
eureka:
client:
service-url:
defaultZone: http://localhost:7001/eureka/
instance:
instance-id: springcloud-provider-dept8001 #修改Eureka上的默认描述信息
prefer-ip-address: true # 为true可以显示服务的ip地址
#info配置
info:
app.name: wulei-springcloud
company.name: blog.wulei2921625957.com
然后把原来普通的8001项目的文件原封不动的拷贝到这个项目,改以下几个位置即可
pom.xml
<!--添加依赖-->
<!--config-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
<version>2.2.6.RELEASE</version>
</dependency>
bootstrap.yml
spring:
cloud:
config:
uri: http://localhost:3344
name: config-dept # 需要从git上读取的资源名称,不要要后缀
label: master
profile: dev
application.yml
spring:
application:
name: springcloud-config-dept-8001
然后在前两个项目启动的情况下启动此项目
访问正常的业务还是可以访问
小结
- Spring Cloud Config 说白了就是把配置文件放到云端托管,而且有利于多人合作开发
- 如果在项目启动后更改了云端的配置文件,要重启项目