SpringCloud config native 配置
1.概述
最近项目使用springCloud 框架,使用config搭建git作为配置中心。
在私有化部署中,出现很多比较麻烦的和鸡肋的设计。
每次部署都需要安装gitlab
有些环境安装完gitlab,外面不能访问,不给开端口
实时同步比较麻烦
基于上述问题,决定将配置中心依springCloud config本地文件的方式进行改造
缺点就是每个服务器上都可以放配置文件
2、springCloud config配置方式
config配置方式有三种,本文主要介绍本地文件方式
git方式
svn方式
本地文件方式
3、部署架构
springcloud config的流程架构
need-to-insert-img
4、环境搭建
springcloud config分为eureka服务,config服务器端和config客户端
1、eureka服务端搭建
1、pom.xml
org.springframework.bootspring-boot-starter-weborg.springframework.bootspring-boot-starter-testtest<!-- Eureka-Server 依赖 -->org.springframework.cloudspring-cloud-starter-netflix-eureka-server<!-- SpringCloud 版本控制依赖 springboot版本需要匹配cloud版本
这里用的boot版本2.3.2.RELEASE -->org.springframework.cloudspring-cloud-dependenciesHoxton.SR12pomimport
2、aplication.yml
server:port:8761eureka:instance:hostname:127.0.0.1#eureka服务端的实例名称2client:register-with-eureka:false#false表示不向注册中心注册自己。fetch-registry:false#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务service-url:defaultZone:http://127.0.0.1:8761/eureka/
3、启动类
packagecom.feng;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.netflix.eureka.server.EnableEurekaServer;@SpringBootApplication@EnableEurekaServerpublicclassSpringCloud13EurekaApplication{publicstaticvoidmain(String[] args){ SpringApplication.run(SpringCloud13EurekaApplication.class, args); }}
4、启动测试
访问地址:http://127.0.0.1:8761/
need-to-insert-img
2、config服务端搭建
1、pom.xml
org.springframework.bootspring-boot-starter-web<!-- Eureka client -->org.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.cloudspring-cloud-config-server<!--Spring Boot Actuator,感应服务端变化-->org.springframework.bootspring-boot-starter-actuator<!-- SpringCloud 版本控制依赖 -->org.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimport
2、application
server:port:8888spring:profiles:active:native#设置为本地configapplication:name:springcloud-configcloud:config:server:native:search-locations:d:/config-repo#本地配置的路径# git:# uri: http://222.175.101.224:8090/liuyusong/springcloud-config.git# search-paths: /config-repoeureka:client:service-url.defaultZone:http://127.0.0.1:8761/eureka/instance:prefer-ip-address:true
3、启动类
packagecom.feng;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.config.server.EnableConfigServer;importorg.springframework.cloud.netflix.eureka.EnableEurekaClient;@SpringBootApplication@EnableEurekaClient@EnableConfigServerpublicclassSpringCloud14ConfigServerApplication{publicstaticvoidmain(String[] args){ SpringApplication.run(SpringCloud14ConfigServerApplication.class, args); }}
4、测试服务器端
浏览器访问 http://localhost:8888/springcloud-config/config-base-local.yml
浏览器访问个 server端口/应用名字/文件名-环境名.yml
3、config客户端搭建并测试
1、pom.xml
org.springframework.bootspring-boot-starter-web<!-- Eureka client -->org.springframework.cloudspring-cloud-starter-netflix-eureka-clientorg.springframework.cloudspring-cloud-config-client<!--Spring Boot Actuator,感应服务端变化-->org.springframework.bootspring-boot-starter-actuator<!-- SpringCloud 版本控制依赖 -->org.springframework.cloudspring-cloud-dependencies${spring-cloud.version}pomimport
2、application
server:
port: 8889
spring:
application:
name: springcloud-15-config-client
3、bootstrap
spring:cloud:config:discovery:enabled:trueservice-id:springcloud-13-config-server#eureka的servicename:config-test# name: config-test,config-test1 可以配置多个配置eureka:client:service-url.defaultZone:http://127.0.0.1:8761/eureka/instance:prefer-ip-address:true
4、启动类
packagecom.feng;importorg.springframework.boot.SpringApplication;importorg.springframework.boot.autoconfigure.SpringBootApplication;importorg.springframework.cloud.client.discovery.EnableDiscoveryClient;@SpringBootApplication@EnableDiscoveryClientpublicclassSpringCloud15ConfigClientApplication{publicstaticvoidmain(String[] args){ SpringApplication.run(SpringCloud15ConfigClientApplication.class, args); }}
5、测试类
packagecom.feng.controller;importorg.springframework.beans.factory.annotation.Value;importorg.springframework.web.bind.annotation.GetMapping;importorg.springframework.web.bind.annotation.RestController;@RestControllerpublicclassTestController{@Value("${myconfig.name}")String name;@Value("${myconfig.version}")String version;@GetMapping("/hello")publicStringhello(){return"ok1"+name+version; }}
6、测试客户端
测试地址:http://localhost:8889/hello
need-to-insert-img
5、总结
springcloud config 本地化配置的优点是不需要另外搭建gitlab或者svn,部署相对简单
缺点是 如果有多个server端需要手动同步文件,每一个服务器都需要有文件
6、源码地址
喜欢的朋友记得点赞、收藏、关注哦!!!