Skip to content

Patrick16262/ConfigCenter

Repository files navigation

分布式配置管理中心

  • 该项目目前尚未完工,正在进行开发中

简介

该项目是一个分布式配置管理中心,旨在集中管理应用在不同环境、不同集群的配置。一旦配置发生变更,即可实时推送至应用端,同时具备规范的权限、流程治理等特性,适用于微服务配置管理场景。

服务端基于Spring Boot和Spring Cloud开发,可直接运行,无需额外安装Tomcat等应用容器。

我们的项目是以Apollo配置中心为借鉴参考进行设计的,实现了Apollo配置中心的核心功能,同时也融入了自身独特的功能和特色。

快速开始

启动服务端

  • 本项目仍处于开发阶段,暂无发行版

启动管理客户端

  • 本项目仍处于开发阶段,暂无发行版

管理应用配置

查看帮助

help

查看某个命令的帮助

help {命令}

以本人为管理员创建应用

app create {应用名}

进入app

app use {应用名}

进入默认namspace

namespace use appnamespace

添加一条配置

namespace add "time-out" 100

特性

统一管理不同环境、不同集群的配置

该项目支持集中管理不同环境、不同集群、不同命名空间的配置。

同一份代码在不同集群部署时,可以拥有不同的配置,例如ZooKeeper的地址等。

通过命名空间,支持多个不同应用共享相同配置,并允许应用对共享的配置进行覆盖。

配置修改实时生效(热发布)

用户修改并发布配置后,客户端能够实时(1秒内)接收到最新配置,并通知到应用程序。

版本发布管理

所有配置发布均具有版本概念,可在不同版本间进行切换。

对于大范围的配置删除操作(如:直接删除整个应用),服务端将在垃圾桶中保留被删除内容,一段时间后再彻底删除。

灰度发布

支持配置的灰度发布,即仅对部分应用实例生效,观察一段时间后再推送至所有应用实例。

权限管理、发布审核、操作审计

具备完善的权限管理机制,应用和配置管理分为编辑和发布环节,减少人为错误。 所有操作均有审计日志,便于问题追踪。

客户端配置信息监控

可轻松查看配置在哪些实例中使用。

提供Java原生客户端,便于应用集成,同时提供HTTP接口,非Java应用也可方便使用。

部署简单

配置中心作为基础服务,对可用性要求极高,因此项目尽可能减少外部依赖。

目前仅依赖MySQL,部署非常简单,安装Java和MySQL后即可运行Apollo。

可用性考虑

作为基础服务之一,配置中心需要具备较高的可靠性。在项目设计阶段,我们充分考虑了各种意外情况,并在多个方面进行了冗余设计,以确保即使在特殊情况下,配置服务仍然可靠可用。

场景 影响 降级 原因
某台Config Service下线 无影响 不降级 Config Service无状态,客户端重连其它Config Service
所有Config Service下线 客户端无法读取最新配置 客户端重启时,可以读取本地缓存配置文件。如果是新扩容的机器,可以从其它机器上获取已缓存的配置文件
某台Admin Service下线 无影响 不降级 Admin Service无状态,管理客户端重连其它Admin Service
所有Admin Service下线 客户端无影响,管理客户端无法更新配置

项目设计文档

架构设计

>>> 点我查看架构设计 <<<

实体关系设计

>>> 点我查看实体关系设计 <<<

配置版本管理功能设计

>>> 点我查看配置版本管理功能设计 <<<

About

分布式配置中心

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages