SpringCloud|SpringCloud config native 配置

1.概述 最近项目使用springCloud 框架,使用config搭建git作为配置中心。
在私有化部署中,出现很多比较麻烦的和鸡肋的设计。

  • 每次部署都需要安装gitlab
  • 有些环境安装完gitlab,外面不能访问,不给开端口
  • 实时同步比较麻烦
基于上述问题,决定将配置中心依springCloud config本地文件的方式进行改造
缺点就是每个服务器上都可以放配置文件
2、springCloud config配置方式 config配置方式有三种,本文主要介绍本地文件方式
  • git方式
  • svn方式
  • 本地文件方式
3、部署架构 springcloud config的流程架构
SpringCloud|SpringCloud config native 配置
文章图片

4、环境搭建 springcloud config分为eureka服务,config服务器端和config客户端
1、eureka服务端搭建
1、pom.xml
org.springframework.boot spring-boot-starter-web org.springframework.boot spring-boot-starter-test test org.springframework.cloud spring-cloud-starter-netflix-eureka-server org.springframework.cloud spring-cloud-dependencies Hoxton.SR12 pom import

2、aplication.yml
server: port: 8761eureka: instance: hostname: 127.0.0.1 #eureka服务端的实例名称2 client: register-with-eureka: false#false表示不向注册中心注册自己。 fetch-registry: false#false表示自己端就是注册中心,我的职责就是维护服务实例,并不需要去检索服务 service-url: defaultZone: http://127.0.0.1:8761/eureka/

3、启动类
package com.feng; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.netflix.eureka.server.EnableEurekaServer; @SpringBootApplication @EnableEurekaServer public class SpringCloud13EurekaApplication {public static void main(String[] args) { SpringApplication.run(SpringCloud13EurekaApplication.class, args); } }

4、启动测试 访问地址:http://127.0.0.1:8761/
SpringCloud|SpringCloud config native 配置
文章图片

2、config服务端搭建
1、pom.xml
org.springframework.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-config-server org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import

2、application
server: port: 8888 spring: profiles: active: native #设置为本地config application: name: springcloud-config cloud: config: server: native: search-locations: d:/config-repo #本地配置的路径 #git: #uri: http://222.175.101.224:8090/liuyusong/springcloud-config.git #search-paths: /config-repo eureka: client: service-url.defaultZone: http://127.0.0.1:8761/eureka/ instance: prefer-ip-address: true

3、启动类
package com.feng; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.config.server.EnableConfigServer; import org.springframework.cloud.netflix.eureka.EnableEurekaClient; @SpringBootApplication @EnableEurekaClient @EnableConfigServer public class SpringCloud14ConfigServerApplication {public static void main(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.boot spring-boot-starter-web org.springframework.cloud spring-cloud-starter-netflix-eureka-client org.springframework.cloud spring-cloud-config-client org.springframework.boot spring-boot-starter-actuator org.springframework.cloud spring-cloud-dependencies ${spring-cloud.version} pom import

2、application
server: port: 8889 spring: application: name: springcloud-15-config-client

3、bootstrap
spring: cloud: config: discovery: enabled: true service-id: springcloud-13-config-server #eureka的service name: 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、启动类
package com.feng; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.cloud.client.discovery.EnableDiscoveryClient; @SpringBootApplication @EnableDiscoveryClient public class SpringCloud15ConfigClientApplication {public static void main(String[] args) { SpringApplication.run(SpringCloud15ConfigClientApplication.class, args); } }

5、测试类
package com.feng.controller; import org.springframework.beans.factory.annotation.Value; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RestController; @RestController public class TestController {@Value("${myconfig.name}") String name; @Value("${myconfig.version}") String version; @GetMapping("/hello") publicString hello() { return "ok1"+name+version; }}

6、测试客户端 测试地址:http://localhost:8889/hello
SpringCloud|SpringCloud config native 配置
文章图片

5、总结 springcloud config 本地化配置的优点是不需要另外搭建gitlab或者svn,部署相对简单
【SpringCloud|SpringCloud config native 配置】缺点是 如果有多个server端需要手动同步文件,每一个服务器都需要有文件
6、源码地址

    推荐阅读