分布式配置中心超轻量的实现方式(带源码)

随着微服务成为一种潮流,各种配置也变得越来越烦杂。传统的文本文件的配置方式,已经不能满足现有需求。
缺点如下:

  • 修改配置需要重新打包,发布
  • 对于一些公共配置,每个应用都要修改,不方便统一管理

分布式配置中心就是为了解决这个问题。

1、原理

分布式配置中心,需要达到以下目的
1:方便的修改配置
2:配置修改后可以热更新,或者通过重启达到目的

先看下流程图
在这里插入图片描述
配置统一存储在数据库中,称为配置中心。各个微服务重启的时候,从配置中心读取配置,如果读到配置,则将配置写入本地的配置文件中。如果读取失败,则从本地配置文件中读取配置后,写入数据库中。这样可以保证在数据库失效的时候,应用本地保存的是上次启动的最新配置,不影响微服务启动。

2、实现方式源码概览

1、配置中心核心源码

public class PropertiesFactory {
    private PropertiesFactory() {
    }

    public static Properties createProperties(String projectName, String propertiesName) {
        if(System.getenv("PN") != null && !"".equals(System.getenv("PN").trim())) {
            projectName = System.getenv("PN");
        }

        return createPropertiesNoEnvPN(projectName, propertiesName);
    }

    public static Properties createPropertiesNoEnvPN(String projectName, String propertiesName) {
        Properties properties = new Properties();
        List<Map<String, String>> propertiesList = new ArrayList();
        DataSourceModel dataSourceModel = loadConfig("/configcenter_db.properties");
        String rootPath = dataSourceModel.getConfigfilepath();

        try {
            System.out.println("====================================");
            System.out.println(projectName);
            System.out.println("====================================");
            if(System.getenv("CDB") != null && !"".equals(System.getenv("CDB").trim())) {
                dataSourceModel.setIp(System.getenv("CDB"));
            }

            System.out.println("====================================");
            System.out.println(dataSourceModel.getIp());
            System.out.println("====================================");
            propertiesList = loadConfigFromDb(dataSourceModel, projectName, propertiesName);
            System.out.println("==========
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值