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

本文介绍了分布式配置中心的必要性,它旨在解决传统配置方式的不便,如频繁打包发布和公共配置的统一管理。文章详细阐述了分布式配置中心的工作原理,包括配置的集中存储和微服务的热更新机制,并提供了实现方式的源码概览,帮助读者理解配置中心的核心功能和应用方式。
摘要由CSDN通过智能技术生成

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

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

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

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、付费专栏及课程。

余额充值