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

    1、话题引入:

    如果配置文件全部放在resources目录下,管理起来非常复杂,所以采用分布式配置中心,放在git上

    2、产生背景:

    在微服务中如果使用传统的方式管理配置文件,配置文件管理器非常复杂;

    如果生产环境配置文件,可能需要发生改变的时候,重新打war,重新读取配置信息在jvm内存中;

    3、什么是分布式配置中心:

    在微服务中使用同一个服务器管理所有服务配置文件信息,能够实现后台可管理,当服务器正在运行时,如果配置文件需要发生改变,可以实现不需要重启服务器实时更改配置文件信息。

    4、分布式配置中心框架

    1)阿波罗,携程的,有图形界面可管理配置文件信息,配置文件信息存放在数据库里面

    2)SpringCoud Config 没有后台可管理分布式配置中心,配置文件信息存放在版本控制器里面(git/svn)

    3)Zookeeper 持久节点+事件通知

    5、搭建分布式配置中心所需要的组件:

    1)web管理系统,后台可以使用图形界面管理配置文件

    2)存放分布式配置文件的服务器(持久存储服务器),使用版本控制器

    3)ConfigServer缓存配置文件服务器(临时缓存存放)

    4)ConfigClient读取ConfigServer配置文件信息

    6、git上文件命名规则

    1)git环境上文件夹以项目进行区分

    member_config 会员服务配置文件

    order_config 订单服务配置文件

    2)公司项目中环境是如何区分

    dev 开发环境

    sit 测试环境

    pre 预发布环境

    prd 准生产环境

    3)客户端的命名要和git上的服务名称一样,因为系统会以该命名为前缀去git上面搜索

    配置文件命名规则:服务名称-环境.properties

     

    7、刷新配置文件

    1)默认情况下不能及时的获取实时变更的配置文件信息,springcloud分布式配置中心可以采用手动刷新或者自动刷新

    手动刷新---需要人工调用接口,读取最新配置文件(监控中心)--建议使用

    自动刷新---消息总线进行实时通知,springbus --不建议使用,更加消耗性能

    两者都不需要重启服务器

    2)要实现手动刷新,要用到actuator,在yml中配置,然后在Controller上面加上@RefreshScope注解;

    还要手动发一个post请求:http://localhost:9300/actuator/refresh

    =》一般来说,会将配置信息放在一个类上面,把@RefreshScope注解放在那个类上面就可以了;肯定不会在所有Controller上面加注解的;

     

    问题

    1)config-server搭建好后,sit文件访问有内容,而prd访问没内容

    --》可能是gitee的问题,删掉重新建一个就可以访问了;这里不能访问,后面的config-client也是不能访问的;

    注意这个config-client的yml文件为prd

    2)在config-client启动后,如果某个配置文件不存在(服务名/环境名错误),那么程序就会立马报错;

  • 相关阅读:
    npm 报错 : `Error: ENOENT: no such file or directory, mkdir D:\`
    weex中根据返回图片的大小,进行等比缩放展示
    weex中怎么动态循环产生输入框?字段名根据后端返回的数据而定
    hdu 2473 Junk-Mail Filter(并查集)
    cf2A Winner(implementation)
    hdu 5185 Equation(分析+DP)
    hdu 5183 Negative and Positive (NP)(STL-集合【HASH】)
    hdu 2059 龟兔赛跑(DP)
    hdu 1978 How many ways(DP)
    hdu 2577 How to Type(DP)
  • 原文地址:https://www.cnblogs.com/syjp/p/10389901.html
Copyright © 2011-2022 走看看