作为分布式配置中心的选择之一,可以简单了解一下, 可以首选携程阿波罗或则阿里的nacos。
1. 分布式配置中心单机版搭建
1.1 新建立项目,然后增加依赖
<!--增加config服务中心依赖-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-config-server</artifactId>
</dependency>
1.2 增加配置文件配置
eureka:
client:
service-url:
defaultZone: http://user:user@demo-springcloud-eureka-one:8761/eureka/
instance:
prefer-ip-address: true
server:
port: 8888
spring:
application:
name: demo-springcloud-config
cloud:
config:
server:
git:
uri: https://github.com/hualongchen/SpringcloudConfig
search-paths: respo
username: xxxxxxxxx
password: xxxxxxxxx
1.3 增加主类配置代码
//打开配置中心服务
@EnableConfigServer
@SpringBootApplication
public class DemoSpringcloudConfigApplication {
public static void main(String[] args) {
SpringApplication.run(DemoSpringcloudConfigApplication.class, args);
}
}
1.4 进行访问体验
- /{application}/{profile}[/{label}]
- /{application}-{profile}.yml
- /{label}/{application}-{profile}.yml
- /{application}-{profile}.properties
- /{label}/{application}-{profile}.properties
application : 服务的名字
profile: 对应的环境
label:对应的分支,默认为master
第一个: http://localhost:8888/config-client/dev/master
{
"name": "config-client",
"profiles": [
"dev"
],
"label": "master",
"version": "00d32612a38898781bce791a4a845e60a7fbdb4e",
"state": null,
"propertySources": [
{
"name": "https://github.com/hualongchen/SpringcloudConfig/respo/config-client-dev.properties",
"source": {
"foo": "foo version 2",
"democonfigclient.message": "hello spring io"
}
}
]
}
第二个: http://localhost:8888/config-client-dev.yml
image.pnggitlab的配置文件如下
https://github.com/hualongchen/SpringcloudConfig/blob/master/respo/config-client-dev.properties
image.png2.分布式配置中心客户端
2.1 增加项目的依赖
<!--配置中心-->
<dependency>
<groupId>org.springframework.cloud</groupId>
<artifactId>spring-cloud-starter-config</artifactId>
</dependency>
2.2 增加配置文件配置
spring:
application:
name: config-client
cloud:
config:
uri: http://localhost:8888/
profile: dev
label: master
eureka:
client:
service-url:
defaultZone: http://user:user@demo-springcloud-eureka-one:8761/eureka/
instance:
prefer-ip-address: true
server:
port: 8866
#开启断路器
feign:
hystrix:
enabled: true
2.3 增加主类的配置代码
//发现服务注册中心,将服务进行注册
@EnableDiscoveryClient
//开启feign能力
@EnableFeignClients
//开启断路器功能
@EnableHystrix
@SpringBootApplication
@RefreshScope
public class DemoSpringcloudServiceOrdereApplication {
public static void main(String[] args) {
SpringApplication.run(DemoSpringcloudServiceOrdereApplication.class, args);
}
}
2.4 增加配置类代码测试,同时增加了刷新注解
@RefreshScope ////指示Config客户端在服务器参数刷新时,也刷新注入的属性值
@RestController
public class OrderController {
@Value("${foo}")
private String foo ;
@RequestMapping("/config")
public Object getFoo(){
return foo ;
}
}
2.5代码效果如下
image.png3.遇到的一些问题
3.1 端口问题
如果不是8888端口,会导致其他项目读取不到配置文件的信息,原因如下:
项目启动的时候,会优先读取bootstrap.yml这个配置文件, 如果没有,再读取application.yml这个文件。
所以,解决方案如下:
- 修改配置文件,改为bootstrap.yml文件。
- 将config-server的端口改为8888.
3.2 如果集群化与如何配置多个git地址
- 集群,直接采用application-name一致,然后统一加入eureka集群中即可。
git地址: 采用同一个git,不同的目录分组进行操作。
网友评论