zoukankan      html  css  js  c++  java
  • SpringCloud-config分布式配置中心

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

      随着微服务不断的增多,每个微服务都有自己对应的配置文件。在研发过程中有测试环境、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

  • 相关阅读:
    数据结构化与保存
    使用正则表达式,取得点击次数,函数抽离
    爬取校园新闻首页的新闻
    网络爬虫基础练习
    词频统计
    试题----编写一个截取字符串的函数,输入为一个字符串和字节数,输出为按字节截取的字符串。 但是要保证汉字不被截半个
    试题---求出现重现次数最多的字母,如有多个重复的则都求出来
    试题----为什么Java的string类要设成immutable(不可变的)
    面试题---题目
    复制文件夹中所有内容到指定位置
  • 原文地址:https://www.cnblogs.com/zgwjava/p/10547876.html
Copyright © 2011-2022 走看看