博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
分布式配置中心(Native - Config)
阅读量:4568 次
发布时间:2019-06-08

本文共 3786 字,大约阅读时间需要 12 分钟。

本章只讲 Spring Cloud 本地配置方式,可以很方便的高可用集群,且存在良好通讯,不用担心云服务器与内网之间GIT带来的不便,GIT(网上GIT教程一搜一大把了….)

- 快速开始

Spring Cloud Config为分布式系统中的外部配置,提供了服务器和客户端支持。使用Config Server,您可以在所有环境中管理应用程序的外部属性。客户端和服务器映射的概念与Spring Environment和PropertySource抽象相同,因此它们与Spring应用程序非常契合,但可以与任何以任何语言运行的应用程序一起使用。随着应用程序通过从开发人员到测试和生产的部署流程,您可以管理这些环境之间的配置,并确定应用程序具有迁移时需要运行的一切。服务器存储后端的默认实现使用git,因此它轻松支持标签版本的配置环境,以及可用于管理内容的各种工具。可以轻松添加替代实现,并使用Spring配置将其插入

官方文档:

- 服务架构图

服务架构图

画图工具

- 准备工作

1.创建 battcn-config-server 和 battcn-config-client ,如果已经从第一章看到这里的朋友们应该都知道pom.xml的一些基本配置了,本节开始只贴关键部分代码,完整的直接看GIT 就行了,不然每次都导致内容太多让人没有看的欲望了…

- battcn-config-server

2.导入 config-server 包,目前只需要这一个就够了

1 2 3 4 5 6
org.springframework.cloud
spring-cloud-config-server

3.创建启动APP.java程序,添加 @EnableConfigServer 注解即可

1 2 3 4 5 6 7 8
@SpringBootApplication @EnableConfigServer public class ConfigServerApplication { public static void main(String[] args) { SpringApplication.run(ConfigServerApplication.class, args); } }

4.application.yml

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
server:   port: 9000 spring: application: name: battcn-config-server profiles: active: - native cloud: config: name: config-server #{application} enabled: false server: health: enabled: false

5.最后创建一个 config-server-order-default.yml 这个就是给到其它项目使用的,使用方式也极其简单

1 2
order:   name: My Name's Order Service,Are you Afraid?

- 测试一把

http请求地址和资源文件映射如下:

  • /{application}-{profile}.yml
  • /{label}/{application}-{profile}.yml
  • /{application}-{profile}.properties
  • /{label}/{application}-{profile}.properties
  • /{application}/{profile}[/{label}]

其中application是在常规Spring Boot应用程序中注入spring.cloud.config.name的 SpringApplication(即通常是”application”),application是活动配置文件(或逗号分隔的属性列表),label是可选的git标签(默认为master)。

所以捏,我们这快 地址应该写成  其中 config-server 就是我们配置的spring.cloud.config.name 也就是 {application} 然后 order-default 就是我们的 {profile}

结果:{"name":"config-server","profiles":["order-default"],"label":null,"version":null,"state":null,"propertySources":[{"name":"classpath:/config-server-order-default.yml","source":{"order.name":"My Name's Order Service,Are you Afraid?"}}]} 表示OK了,服务端配置完毕,接下来配置需要调用的客户端

- battcn-config-client

1.导入以下包,一个是consul的服务发现包,如果不知道的请参考 ,第二个就是Client需要依赖的包,第三个是心跳检测需要依赖的,cloud中很多都会使用到,有兴趣的可以百度了解

1 2 3 4 5 6 7 8 9 10 11 12 13 14
org.springframework.cloud
spring-cloud-starter-consul-discovery
org.springframework.cloud
spring-cloud-config-client
org.springframework.boot
spring-boot-starter-actuator

2.我们 battcn-config-client 是没有配置 order.name 属性的,因此是从 config-server 中读取

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
@SpringBootApplication @EnableDiscoveryClient @RestController public class ConfigClientApplication { @Value("${order.name}") String orderName; @RequestMapping("/test") public String test() { return "client ====>>> " + orderName; } public static void main(String[] args) { SpringApplication.run(ConfigClientApplication.class, args); } }

3.创建 bootstrap.yml,不能是application.yml 具体原因请看注意事项

1 2 3 4 5 6 7 8 9 10
server:   port: 9001 spring: application: name: battcn-config-client cloud: config: name: config-server profile: order-default uri: http://localhost:9000

- 注意事项

创建 bootstrap.yml ,这里需要注意一下的是,SpringCloud Config是不认 application.yml 的配置,这也是Cloud官方有说明的,不然配置的 uri属性是无效的

参考链接: 因此有的配置只能通过 bootstrap.yml,否则就会被覆盖(附源码)

源码

- 测试一把

启动:consul agent -dev 启动consul

启动:battcn-config-server 和 battcn-config-client

访问:

1
client ====>>> My Name's Order Service,Are you Afraid?		#表示成功

转载于:https://www.cnblogs.com/lywJ/p/10715586.html

你可能感兴趣的文章
android模拟器无服务
查看>>
params关键字
查看>>
使用VS2015从TFS获取项目后编译报错
查看>>
jQuery里的silidetoggle方法不停重复动画效果的解决办法
查看>>
解决TCP网络传输“粘包”问题
查看>>
Vue列表渲染
查看>>
vue中使用cookies和crypto-js实现记住密码和加密
查看>>
jquery制作图片瀑布流点击按钮加载更多内容
查看>>
artice与section的区别
查看>>
多租户SaaS的数据库设计模式
查看>>
和小哥哥一起刷洛谷(8) 图论之Floyd“算法”
查看>>
配置Spring
查看>>
bash 参数替换中的模式匹配
查看>>
DLog的使用
查看>>
使用第三方框架 Masonry 实现自动布局
查看>>
简明Linux命令行笔记:bzip2
查看>>
电子科大春季体验营 (都是思维题。。。。)
查看>>
Python - pandas 数据分析
查看>>
导航特效
查看>>
HTTP协议分析及攻防方法
查看>>