分布式的问题,配置文件的管理
简单来说就是,我们每一个微服务自己带着一个application.yml,那上百的的配置文件要修改起来,岂不是要疯了。
所以将一些经常要改的文件发布到git上,(如配置文件。。。)这样就可以用git管理这些文件,
什么是Springcloud config分布式配置中心
Spring Cloud Config为微服务架构中的微服务提供集中化的外部配置支持,配置服务器为各个不同微服务应用的所有环节提供了一个中心化的外部配置。
Spring Cloud Config 分为服务端和客户端两部分;
服务端也称为分布式配置中心,它是一 个独立的微服务应用,用来连接配置服务器并为客户端提供获取配置信息,加密,解密信息等访问接口。
客户端则是通过指定的配置中心来管理应用资源,以及与业务相关的配置内容,并在启动的时候从配置中心获取和加载配置信息。配置服务器默认采用git来存储配置信息,这样就有助于对环境配置进行版本管理。并且可以通过git客户端工具来方便的管理和访问配置内容。
SpringCloud config分布式配置中心能做什么
集中管理配置文件
不同环境,不同配置,动态化的配置更新,分环境部署,比如/dev /test/ /prod /beta /release
运行期间动态调整配置,不再需要在每个服务部署的机器上编写配置文件,服务会向配置中心统一拉取配置自己的信息。
当配置发生变动时,服务不需要重启,即可感知到配置的变化,井应用新的配置
将配置信息以REST接口的形式暴露
SpringCloud环境配置
注册码云账号 https://gitee.com/。可qq 微信登录
新建仓库 springcloud-config,设置为公开,语言和模板都选择java。开源许可证GPL-3.0,仓库创建后复制当前仓库的SSH隧道地址
在电脑新建文件夹,用GitBash工具 执行 git clone springcloud-config复制的SSH地址,进行拉取仓库内容,拉去后选择yes,因为权限不存在,需要配置当前Git
Git大全 https://gitee.com/all-about-git
先下载
网址:Git - Downloading Package (git-scm.com)
安装时
(18条消息) 超级详细的GitBash使用教程01:下载、安装(适合小白)_goog_man的博客-CSDN博客_bash下载
运行他时:,获取远程文件
(18条消息) git下载项目到本地_jsklnice的博客-CSDN博客_git下载项目
此时我们已经拿到远程的文件(记得一定要取消隐藏文件)
在当前的目录中创建 application.yml 文件,并编写
spring: profiles: active: dev --- spring: profiles: dev application: name: springcloud-config-dev --- spring: profiles: test application: name: springcloud-config-test
将当前编写的application.yml提交到码云上
GitBash打开命令工具 cd 至 springcloud-config git add . 将文件添加到暂存区 git status 查看状态 git commit -m “一次提交” 本地提交,-m为提交时写的信息 git push origin master 提交到远程的当前路径分枝
就可以看见码云上有push到的application.yml文件
服务端连接Git配置
新建maven项目=> springcloud-config-server-3344
导入依赖
<!--springboot启动--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--springcloud-config的配置--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-config-server</artifactId> <version>2.1.1.RELEASE</version> </dependency> <!--监控信息 可不加--> <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/XFlish/springcloud-config.git #自己远程仓库的https地址 # 通过 config-server可以连接到git,访问其中的资源以及配置
编写主启动类Config_Server_3344
@SpringBootApplication @EnableConfigServer public class Config_Server_3344 { public static void main(String[] args) { SpringApplication.run(Config_Server_3344.class,args); } }
客户端连接服务端访问远程
创建 config-client.yml
#启动环境选择的配置 spring: profiles: active: dev #springboot启动多环境的配置 --- server: port: 8201 #spring的配置 spring: profiles: dev application: name: springcloud-config-client-dev #Eureka的配置。 服务注册到Eureka中,需要一个路径地址 eureka: client: service-url: defaultZone: http://eureka7001.com:7001/eureka/ --- server: port: 8202 #spring的配置 spring: profiles: test application: name: springcloud-config-client-test #Eureka的配置。 服务注册到Eureka中,需要一个路径地址 eureka: client: service-url: defaultZone: http://eureka7001.com:7001/eureka/
将config-client.yml push到远程仓库
GitBash打开命令工具 cd 至 springcloud-config git add . 将文件添加到暂存区 git status 查看状态 git commit -m “一次提交” 本地提交,-m为提交时写的信息 git push origin master 提交到远程的当前路径分枝
客户端连接服务端访问远程配置
新建Maven项目=> springcloud-config-client-3355
导入pom依赖
<!--springboot启动--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-web</artifactId> </dependency> <!--springcloud-config启动的配置 和服务端的不同--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> <version>2.1.1.RELEASE</version> </dependency> <!--监控信息 可不加--> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-actuator</artifactId> </dependency>
创建application.yml
#用户级别的配置,配置区读取谁 spring: application: name: springcloud-config-client-3355
创建bootstrap.yml
#系统级别的配置 spring: cloud: config: name: config-client # 需要从git上读取的资源名称,不要后缀 profile: dev #dev环境端口:8201 test环境端口:8202 label: master #需要在git上的哪个分支拿 #连接到3344服务,中转站的形式连接服务端访问远程地址 uri: http://localhost:3344
创建ConfigClientController控制器
package com.xlsh.springcloud.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class ConfigClientController { @Value("${spring.application.name}") private String applicationName; @Value("${eureka.client.service-url.defaultZone}") private String eurekaServer; @Value("${server.port}") private String port; @RequestMapping("/config") public String getConfig(){ return "applicationName: "+applicationName+ "eurekaServer: "+eurekaServer+ "port: "+port; } }
创建Config_Client_3355主启动类
@SpringBootApplication public class Config_Client_3355 { public static void main(String[] args) { SpringApplication.run(Config_Client_3355.class,args); } }
启动3344服务端
localhost:3344/application-dev.yml 不同的启动环境 查到不同的仓库application.yml的配置信息
localhost:3344/application-test.yml 不同的启动环境 查到不同的查到仓库application.yml的配置信息
都可查询到 git仓库里application.yml相关内容
localhost:3344/config-client-dev.yml 不同的启动环境 查到不同的查询到仓库配置的config-client的信息
远程配置实战测试
在远程仓库拉取出来的文件中创建 config-eureka.yml
#启动环境选择的配置 spring: profiles: active: dev --- server: port: 7001 #spring的配置 spring: profiles: dev application: name: springcloud-config-eureka-dev #Eureka配置 eureka: instance: hostname: eureka7001.com #Eureaka服务端的实例名称 client: register-with-eureka: false #表示是否向Eureka注册中心注册自己 fetch-registry: false #如果fetch-registry为false,则表示自己为注册中心 service-url: #监控页面 #单机:点进去参考源码,可看到默认的url端口配置为8761,我们设置为自己的端口。 #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #集群(除自身外 关联其他所有) defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/ --- server: port: 7001 #spring的配置 spring: profiles: test application: name: springcloud-config-eureka-test #Eureka配置 eureka: instance: hostname: eureka7001.com #Eureaka服务端的实例名称 client: register-with-eureka: false #表示是否向Eureka注册中心注册自己 fetch-registry: false #如果fetch-registry为false,则表示自己为注册中心 service-url: #监控页面 #单机:点进去参考源码,可看到默认的url端口配置为8761,我们设置为自己的端口。 #defaultZone: http://${eureka.instance.hostname}:${server.port}/eureka #集群(除自身外 关联其他所有) defaultZone: http://eureka7002.com:7002/eureka/,http://eureka7003.com:7003/eureka/
在远程仓库拉取出来的文件中创建 config-dept.yml
#启动环境选择的配置 spring: profiles: active: dev --- server: port: 8001 #mybatis配置 mybatis: type-aliases-package: com.lemon.springcloud.pojo config-location: classpath:mybatis/mybatis-config.xml mapper-locations: classpath:mybatis/mapper/*.xml #spring的配置 spring: profiles: dev application: name: springcloud-config-dept-dev #数据源的配置 datasource: type: com.alibaba.druid.pool.DruidDataSource #数据源为druid driver-class-name: com.mysql.jdbc.Driver #数据库驱动 url: jdbc:mysql://localhost:3306/springcloud1?useUnicode=true&characterEncoding=utf-8&servetTimeZone=Asia/Shanghai username: root password: 12345678 #Eureka的配置。 服务注册到Eureka中,需要一个路径地址 eureka: client: service-url: defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/ instance: #修改Eureka中status的默认描述信息。不配置默认为DESKTOP-XXX描述 instance-id: springcloud-provider-dept8001 prefer-ip-address: true #改为true后 Eureka中的status就会显示真实ip地址 #info配置 Eureka的status的xx/info链接点开后的info监控信息。没有太大意义 info: app.name: ti zi zui bang,jiayou company.name: tizi.lemon.com test.name: hahah test --- server: port: 8001 #mybatis配置 mybatis: type-aliases-package: com.lemon.springcloud.pojo config-location: classpath:mybatis/mybatis-config.xml mapper-locations: classpath:mybatis/mapper/*.xml #spring的配置 spring: profiles: test application: name: springcloud-config-dept-test #数据源的配置 datasource: type: com.alibaba.druid.pool.DruidDataSource #数据源为druid driver-class-name: com.mysql.jdbc.Driver #数据库驱动 url: jdbc:mysql://localhost:3306/springcloud2?useUnicode=true&characterEncoding=utf-8&servetTimeZone=Asia/Shanghai username: root password: 12345678 #Eureka的配置。 服务注册到Eureka中,需要一个路径地址 eureka: client: service-url: defaultZone: http://localhost:7001/eureka/,http://localhost:7002/eureka/,http://localhost:7003/eureka/ instance: #修改Eureka中status的默认描述信息。不配置默认为DESKTOP-XXX描述 instance-id: springcloud-provider-dept8001 prefer-ip-address: true #改为true后 Eureka中的status就会显示真实ip地址 #info配置 Eureka的status的xx/info链接点开后的info监控信息。没有太大意义 info: app.name: ti zi zui bang,jiayou company.name: tizi.lemon.com test.name: hahah test
push到git远程仓库中
GitBash打开命令工具 cd 至 springcloud-config git add . 将文件添加到暂存区 git status 查看状态 git commit -m “一次提交” 本地提交,-m为提交时写的信息 git push origin master 提交到远程的当前路径分枝
创建Maven项目=> springcloud-config-eureka-7001 远程访问仓库实现注册中心
<!--eureka服务提供者包--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-eureka-server</artifactId> <version>1.4.6.RELEASE</version> </dependency> <!--springcloud-config启动的配置--> <dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-config</artifactId> <version>2.1.1.RELEASE</version> </dependency>
创建application.yml
spring: application: name: springcloud-config-eureka-7001
创建bootstrap.yml
# 系统级别的配置 spring: cloud: config: name: config-eureka # 需要从git上读取的资源名称,不要后缀 profile: dev #dev环境端口:8201 test环境端口:8202 label: master #需要在git上的哪个分支拿 #连接到3344服务,中转站的形式连接服务端访问远程地址 uri: http://localhost:3344
启动3344服务端 ,启动后自测。本地需要连接到3344,确定ConfigEureka7001启动后能够连接到远程
访问:localhost:3344/config-eureka-dev.yml
创建Maven项目=> springcloud-config-dept-8001 远程访问仓库实现8001服务提供者
复制 springcloud-provider-dept-8001 项目所有的内容及依赖
删掉application.yml所有配置,因为此配置已经在git远程仓库中配置,添加以下的配置内容
创建application.yml
spring: application: name: springcloud-config-dept-8001
创建bootstrap.yml
#系统级的配置 # 系统级别的配置 spring: cloud: config: name: config-dept # 需要从git上读取的资源名称,不要后缀 profile: dev #dev环境端口:8201 test环境端口:8202 label: master #需要在git上的哪个分支拿 #连接到3344服务,中转站的形式连接服务端访问远程地址 uri: http://localhost:3344
启动3344服务端 ,config-eureka-7001注册中心,当前8001服务提供者
可以看到,通过远程访问git,也获取到了相应的数据.
标签:git,SpringCloud,配置,eureka,spring,config,springcloud,分布式 From: https://www.cnblogs.com/flsh/p/16726935.html