springcloud - spring cloud config(配置中心)
程序员文章站
2022-07-03 18:06:11
...
1.理解配置中心
1.1.什么是配置中心
- 在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件。在Spring Cloud中,有分布式配置中心组件spring cloud config ,它支持配置文件放在配置服务的本地,也支持放在远程Git仓库中。在spring cloud config 组件中,分两个角色,一是config server。
1.2.配置中心工作流程
- 我们需要把微服务的配置文件上传到Git仓库 , 然后搭建独立的ConfigServer服务,ConfigServer除了要从Git仓库拉取配置之外,还要注册到EurekaServer中,因为ConfigServer也是一个微服务,至于ConfigClient这需要集成到具体的微服务中,如支付服务,订单服务等。其工作流程是,微服务向配中心获取配置,配置中心从GIT仓库获取配置,然后再一路返回给微服务。
- 需要注意是,EurekaServer的配置不能交给ConfigServer管理,因为必须要先启动EurekaServer才能启动ConfigServer,试问EurekaServer都没配置怎么启动?
2.Git仓库管理配置
2.1.使用码云创建远程仓库
- 我们用码云作为git仓库 ,创建码云仓库
-
创建zuul配置 在仓库中创建文件 ,我们先将zuul的配置文件赋值到码云上
- 注意复制好仓库地址,在克隆中取拷贝 , 待会搭建配置中心的时候会用到
3.搭建配置中心
3.1.搭建项目(springcloud_config_server_1060)
3.2.导入依赖
<dependencies>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-netflix-eureka-client</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-web</artifactId>
</dependency>
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
</dependencies>
3.3.开启配置中心
/**
* @EnableEurekaServer:开启eurekaServer服务端
* @EnableCircuitBreaker:开启Hystrix断路器注解
*/
@SpringBootApplication
@EnableEurekaClient
@EnableConfigServer
public class ConfigServerApplicationConfig {
public static void main(String[] args) {
SpringApplication.run(ConfigServerApplicationConfig.class,args);
}
}
3.4.配置文件
- ConfigServer的配置文件做两个事情,1.注册到EurekaServer,2.配置码云地址
eureka:
client:
serviceUrl:
defaultZone: http://peer1:1010/eureka/,http://peer2:1011/eureka/,http://peer3:1012/eureka/ #注册中心地址
instance:
prefer-ip-address: true #使用ip地址注册
instance-id: config-server #指定服务的id
server:
port: 1060
spring:
application:
name: config-server:1060
cloud:
config:
server:
git:
uri: https://gitee.com/wang_ha_ha_1/spring-cloud.git #配置远程仓库地址
username: 注册的账号 #仓库是私有的需要账号
password: 注册的密码
3.5.测试配置中心
- 浏览器访问:http://localhost:1060/application-zuul-dev.yml 你可以看到ConfigServer从Git仓库获取到的zuul的配置文件内容如下:
4.Zuul集成ConfigClient
- 上一步骤我们已经可以通过ConfigServer从码云上获取到配置文件,我们的最终目的是能够让我们的微服务,zuul-server,order-server等都可以从ConfigServer拉取到配置文件,这里功能我们需要给微服务集成ConfigClient来实现。修改“springcloud-zuul-server-1050” zuul工程如下:
4.1.导入依赖
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-client</artifactId>
</dependency>
4.2.创建bootstrap.yml配置文件
- 需要特别说明一下,虽然我们把zuul的配置文件搬到了码云上面,但是zuul本地依然需要一些基础的配置 ,在ConfigClient需要使用bootstrap.yml来作为基础配置文件,这是因为bootstrap.yml的优先级高于application.yml或者其他配置来源,我们得让微服务优先从码云上拉取配置文件后才能做其他的事情。
- 创建配置文件 resources/bootstrap.yml,添加如下内容
#配置中心的地址
spring:
cloud:
config:
uri: http://localhost:1060 #zuul要从配置中心拉取文件
#你要拉取具体的哪个配置文件
name: application-zuul #配置文件名字 dev是环境
profile: dev #环境 组成完整的文件名:application-zuul-dev.yml
label: master #主分支
- 提示:我们的Zuul需要从ConfigServer拉取配置文件,所以这里通过…
config.uri
指向配置中心地址,name
属性值得是配置文件的名字 ,profile
是环境名字 , name的值和profile的值合在一起组成完整的配置文件名,好处是可以修改profile的值来切换配置环境,label
是git的分支,默认是master。
4.配置中心出错的问题解决
如果发现你的微服务启动不成功,有哪些问题造成:
1.配置文件拉取不到
2.配置文件拉取到了,但是配置内容有错
3.项目其他地方错误 - 不是配置文件的问题
4.1.配置拉取不到
- 观察启动的端口是不是以8080启动的,如果是,一定是配置文件拉取不到(除非你真的就配置的是8080)排查方式:
检查配置中心服务端是否有问题
-
检查ConfigServer启动没有,端口,地址对不对
-
打开浏览器访问一下配置文件看能不能拉取到配置文件,如下:
http://localhost:1060/application-zuul-dev.yml
如果配置中心能获取到配置文件,那么错误一定在ConfigClient ,或者是内容有问题 -
如果配置中心拉取不到配置,有两种情况,1是git地址配置错误,2.内容编码错误,格式错误导致拉取不到
-
检查配置中心的git地址,用户名,密码是否有问题
-
打开码云确认一下内容是否有问题,格式,编码
检查配置中心客户端-就是的拉取配置的微服务
- 对比你的 spring.cloud.config.name 和 profile是否和码云上的配置文件一样,以及 label分支是否一致
- 检查你的 spring.cloud.config.uri 写对了没有,是不是你的配置中心服务的地址
- 检查你的依赖:spring-cloud-config-client导入没有,导入成功么有,按ctrl去点击一下你的依赖(或者删除本地厂库中的依赖重新下载)
4.2.配置文件拉取到了
-
如果配置文件拉取到了,服务启动的端口应该就是你配置文件的端口,但是如果启动日志还是有异常,可以把配文件配置成本地方式来排除错误:
-
注释掉 spring-cloud-config-client包
-
恢复本地配置文件
如果本地配置还是启动不能,那就是其他问题,可能是配置文件内容的问题,也可能是代码问题,根据错误日志排查
上一篇: 百度地图缩放功能,结合自定义缩放控件
下一篇: js通过百度API实现经纬度转换成地址
推荐阅读
-
Nacos(四):SpringCloud项目中接入Nacos作为配置中心
-
SpringCloud之消息总线Spring Cloud Bus实例代码
-
SpringCloud之分布式配置中心Spring Cloud Config高可用配置实例代码
-
SpringCloud之服务注册与发现Spring Cloud Eureka实例代码
-
Spring Cloud Zuul的重试配置详解
-
spring cloud配置高可用eureka时遇到的一些坑
-
spring cloud 初步搭建1-1(eureka配置)
-
spring cloud Eureka 配置信息
-
SpringCloud之Spring Cloud Stream:消息驱动
-
Spring Cloud Config 配置中心实践过程中,你需要了解这些细节!