Skip to content

ipipman/config-man

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

43 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

config-man

引言

配置中心是现代微服务架构中的关键组件,它负责集中管理应用程序的各种配置信息,如数据库连接字符串、日志级别、服务地址等。通过配置中心,开发人员可以在不重启服务的情况下动态修改配置,极大地提高了系统的灵活性和可维护性。手写一个配置中心,可以帮助深入理解配置管理的核心原理,并根据实际需求定制化实现。

总体设计

技术选型

编程语言:选择Java或Go,这里以Java为例,因其生态丰富,适合构建企业级应用。
通信协议:采用HTTP RESTful API,便于跨语言调用。
数据存储:使用MySQL或ETCD作为后端存储,ETCD因其强一致性、高可用性更适用于配置管理场景。
客户端库:提供多语言的客户端SDK,用于服务端配置的拉取和监听更新。

功能模块

配置存储:负责配置的增删改查操作。
版本控制:为配置变更提供版本管理,支持回滚。
配置推送:当配置发生变化时,主动推送给订阅的服务。
权限管理:实现配置的访问控制,确保安全性。

核心功能实现

  1. 配置存储与管理
    实现一个服务端API,允许通过REST接口CRUD配置项。
    使用ETCD作为底层存储,利用其KV存储结构存储配置键值对。
  2. 配置监听与推送
    客户端通过长轮询或WebSocket订阅配置变化。
    服务端检测到配置更新后,立即通知所有订阅该配置的客户端。
    客户端收到更新后,自动应用新配置。
  3. 版本控制与回滚
    每次配置更改时,记录变更历史,包括变更时间、操作人、旧值、新值等。
    提供版本查看和回滚功能,允许管理员选择历史版本恢复配置。

总结

构建一个配置中心涉及配置的存储、监听、推送、版本控制及权限管理等多个方面。通过上述设计与实现步骤,可以搭建起一个基本的配置管理系统,满足微服务架构下的配置管理需求

配置中心提供的核心功能

模型参考apollo 与 nacos,

一个完整的配置中心, 包括server 和client 两部分

其中server保存所有的持久化配置数据,client 可以通过 server 提供的API拿到所有需要的配置集合, 并且在server断数据变化时拿到新的配置数据

与spring集成: springboot 里, 存在两种配置的绑定方式,一个是通过 Vlaue 注解绑定的属性, 一个是通过 ConfigurationProperties 绑定的属性类. 需要考虑这两种不同配置方式的处理

About

从零开始,手写一个配置中心框架

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages