SpringCloud-config分布式配置中心

 

为何要统一管理微服务配置?git

  随着微服务不断的增多,每一个微服务都有本身对应的配置文件。在研发过程当中有测试环境、UAT环境、生产环境,所以每一个微服务又对应至少三个不一样环境的配置文件。这么多的配置文件,若是须要修改某个公共服务的配置信息,如:缓存、数据库等,不免会产生混乱,这个时候就须要引入Spring Cloud另一个组件:Spring Cloud Config。 github

 有哪几种?
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(阿波罗)是携程框架部门研发的配置管理平台,可以集中化管理应用不一样环境、不一样集群的配置,配置修改后可以实时推送到应用端。spring

apollo项目基于springboot与springcloud,能够独立部署数据库

Apollo GitHub地址:bootstrap

https://github.com/ctripcorp/apollo缓存

今天重点 

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

客户端Gradlespringboot

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);
    }
}

  建立三个bootstrapapp

咱们把配置文件放在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远程的配置库
          search-paths: local    #选择是那个配置
          username: ******       #git帐号密码
          password: ******
server:
  port: 9999clone
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

相关文章
相关标签/搜索