为什么要统一管理微服务配置?

随着微服务不断的增多,每个微服务都有自己对应的配置文件。在研发过程中有测试环境、UAT环境、生产环境,因此每个微服务又对应至少三个不同环境的配置文件。这么多的配置文件,如果需要修改某个公共服务的配置信息,如:缓存、数据库等,难免会产生混乱,这个时候就需要引入Spring Cloud另外一个组件:Spring Cloud Config。

 有哪几种?
1.SpringCloud config
  Spring Cloud Config是一个解决分布式系统的配置管理方案。它包含了Client和Server两个部分,Server提供配置文件的存储、以接口的形式将配置文件的内容提供出去,Client通过接口获取数据、并依据此数据初始化自己的应用。

其实就是Server端将所有的配置文件服务化,需要配置文件的服务实例去Config Server获取对应的数据。将所有的配置文件统一整理,避免了配置文件碎片化。

如果服务运行期间改变配置文件,服务是不会得到最新的配置信息,需要解决这个问题就需要引入Refresh。可以在服务的运行期间重新加载配置文件。

当所有的配置文件都存储在配置中心的时候,配置中心就成为了一个非常重要的组件。如果配置中心出现问题将会导致灾难性的后果,因此在生产中建议对配置中心做集群,来支持配置中心高可用性。

2.nacos(阿里巴巴)
  Nacos 支持基于 DNS 和基于 RPC 的服务发现(可以作为springcloud的注册中心)、动态配置服务(可以做配置中心)、动态 DNS 服务。
  官网:
  Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您实现动态服务发现、服务配置管理、服务及流量管理。
  Nacos 帮助您更敏捷和容易地构建、交付和管理微服务平台。 Nacos 是构建以“服务”为中心的现代应用架构(例如微服务范式、云原生范式)的服务基础设施。
3.Apollo(阿波罗)

Apollo(阿波罗)是携程框架部门研发的配置管理平台,能够集中化管理应用不同环境、不同集群的配置,配置修改后能够实时推送到应用端。

apollo项目基于springboot与springcloud,可以独立部署

Apollo GitHub地址:

https://github.com/ctripcorp/apollo

今天重点

SpringCloud-config
   接之前的Demo说:创建config-center模块,引入Gradle
服务端Gradle
 compile 'org.springframework.cloud:spring-cloud-config-server'

客户端Gradle

compile 'org.springframework.cloud:spring-cloud-starter-config'

启动类引入ConfigServer代表为配置中心服务端

package org.gd;

import org.springframework.boot.SpringApplication;
import org.springframework.boot.autoconfigure.EnableAutoConfiguration;
import org.springframework.boot.autoconfigure.SpringBootApplication;
import org.springframework.cloud.config.server.EnableConfigServer; /**
* @DATA 2019-03-11 09:10
* @Author 张国伟 WeChat:17630376104
* @Description TODO
*/
@EnableConfigServer
@SpringBootApplication
public class ConfigConter {
public static void main(String[] args) {
SpringApplication.run(ConfigConter.class, args);
}
}

创建三个bootstrap

我们把配置文件放在Gitlab上,在Gitlab上创建yml

创建yml

   注意:yml的名称一定一定要和application.name一直,尽量避免没必要的麻烦
  那我们再看下服务端yml怎么写
spring:
application:
name: config-center
cloud:
config:
server:
git:
uri: https://gitlab.com/zgw1469039806/config-center ###git地址
clone-on-start: true #默认情况下,配置服务会在配置文件第一次被请求时clone远程的配置库.当然也可以配置为在启动时clone远程的配置库
search-paths: local #选择是那个配置
username: ****** #git账号密码
password: ******
server:
port: 9999
spring:
application:
name: config-center
cloud:
config:
server:
git:
uri: https://gitlab.com/zgw1469039806/config-center.git
clone-on-start: true
search-paths: test
username: *****
password: *****
server:
port: 9999

没错 两个个就是环境不一样

spring:
profiles:
active: test

用主yml来负责启动时的切换测试环境还是生产环境,如果配置没有错误的话直接访问可以访问到yml

直接访问yml的名字即可,ok到这里配置中心已经配置完毕,那我们再来看下客户端怎么配置

spring:
application:
name: project-shopping-mall
cloud:
config:
uri: http://localhost:9999

客户端很简单,指向config服务端就可以

我们可以看到客户端直接读取到git上面,说明配置已经成功。

项目GitHub地址:https://github.com/zgw1469039806/springcloud-project

最新文章

  1. The .NET of Tomorrow
  2. js/jquery 去掉空格.回车.换行
  3. iOS强制横屏
  4. C# 反射范范的理解下
  5. 如何用Jquery判断在键盘上敲的哪个按键
  6. 使用grunt合并压缩js、css文件
  7. DLL学习笔记一(DLL导入导出)
  8. [HTMLDOM]删除已有的 HTML 元素
  9. python爬煎蛋妹子图
  10. 网络编程 --- URLConnection --- 读取服务器的数据 --- java
  11. jpa-hibernate配置转换
  12. linux du 显示目录下的各个子目录的大小
  13. 使用ListItem给DropDownList填充数据
  14. poj2431 Expedition
  15. Lintcode389 Valid Sudoku solution 题解
  16. UE4使用C++创建枚举变量适用于C++与蓝图
  17. IIS+nginx反向代理 负载均衡
  18. MapReduce实例学习
  19. Unity3D学习笔记(二十五):Json
  20. HAProxy用法详解

热门文章

  1. Spring源码学习
  2. Redis in .NET Core 入门:(2) String
  3. Java8新特性之二:方法引用
  4. Java并发——volatile关键字
  5. <pre>标签:\r\n换行符的保留
  6. Dynamics 365 CE在Pre Delete插件中应用Image
  7. 云计算CRM软件厂商,你青睐哪家?
  8. 记一次mongodb聚合查询
  9. windows系统库
  10. render与vue组件和注册