“ 2021年02月,百度分布式配置中心BRCC,正式开源!”
01. 什么是BRCC
BRCC(better remote config center)是一个分布式配置中心,用于统一管理应用服务的配置信息,避免各类资源散落在各个项目中,简化资源配置的维护成本。作为一种轻量级的解决方案,部署简单,同时支持多环境、多版本、多角色的资源管理,可以在不改变应用源码的情况下无缝切换和实时生效配置信息。
02. 技术架构
BRCC由三部分组成:管理端、服务端、SDK,其中:
1)管理端 :
前后端分离,后端基于Spring Boot 2.0开发,支持6个维度(产品、工程、环境、版本、分组、配置项)管理key-value格式的配置;支持细粒度的权限控制层级、操作轨迹等能力。安全易用,支持插件化的扩展轻松集成任何公司/组织的账号管理系统。
2)服务端:
基于spring boot 2.0开发,打包后可以直接运行,支持配置的分发、更新推送。
3)SDK:
支持java、go等多种开发语言和开发框架集成,支持spring注解、配置变更监听和刷新,零业务侵入性,低门槛集成(提供spring boot starter方式接入)。
03. 特性
1)统一管理不同环境、不同产品线的配置
- BRCC提供统一界面集中式管理不同环境、不同产品线、不同工程的配置
- 通过版本的复制,可以高效的完成新业务的配置
2)配置修改实时生效(热发布)
- 默认2秒接收到最新的配置
- 主动变更通知
3)权限管理、角色隔离
- 多级权限、多种角色细粒度管控(产品线、工程、环境),支持读写权限
- 重要信息加密交互
- Token机制
4)多语言支持
- 支持Java、Go客户端以SDK方式接入
- 支持OpenAPI快速接入(不限定语言,只要支持Http协议即可)
5)可追溯
- 操作轨迹可追踪
- 历史配置可查询和回溯
6)缓存加持
- 重要接口支持缓存开关配置
7)更轻量
- 部署简单,目前强依赖的外部服务是MySQL
- 更聚焦:只关注配置相关的控制
8)查询更方便
- 细粒度化到key-value配置项层级
- 支持模糊匹配检索
04. 使用指南
1)准备工作
配置中心服务端依赖java环境、Mysql数据库、Redis(可选,如需开启缓存功能需要)
- Java环境,jdk版本1.8+
- MySQL:5.6+
- Redis:3.2+
2)下载编译和运行
下载代码后,进入根目录,直接运行sh compile.sh
备注:注意观察编译是否有报错
编译完成后,进入运行阶段:
在项目根目录下,编辑start.sh执行脚本,分别指定好环境参数
SERVER_PORT=web服务监听端口
REDIS_HOST=Redis服务地址
REDIS_PORT=Redis服务端口
DB_HOST=数据库地址
DB_PORT=数据库端口
DB_USERNAME=数据库用户名
DB_PASSWORD=数据库密码
保存后执行:sh start.sh
管理端访问入口 https://ip:port 其中IP为服务启动的IP,Port为web服务监听端口,例如 http://localhost:8080/
3) 管理端使用
管理端可以支持用户登录操作创建产品线、工程、环境、版本、分组、配置项,以及各种粒度的权限读写,详细使用请参见下文06小节。
4) SDK接入
Step1:在代码中引入brcc-sdk-starter,maven坐标如下
<dependency>
<groupId>com.baidu.mapp</groupId>
<artifactId>brcc-sdk-starter</artifactId>
<version>${rcc-version}</version>
</dependency>
Step2:启动参数配置
rcc:
cc-server-url: http://ip:port/
project-name: example
cc-password: 123456
env-name: dev
cc-version-name: 1.0
log-properties: true
enable-update-callback: true
rcc.cc-server-url: 配置中心服务地址
rcc.project-name: 请求的工程名称
rcc.cc-password: 请求的工程ApiPassword
rcc.env-name: 请求的环境名称
rcc.cc-version-name: 请求的版本名称
rcc.log-properties: 是否打印配置
rcc.enable-update-callback: 是否启用自动更新
05.未来规划
BRCC目前主要针对配置的核心能力,完成了服务治理常用的功能要素,以更轻量方式提供给业务方使用。
后续将会持续聚焦在配置服务能力的完善上,如对主流RPC框架和协议的支持、限流中间件的融合、主流序列化技术的支撑等。接下来我们还会更多的关注服务的性能和稳定性的优化升级,为业务提供更好的服务支撑。
06.贡献和反馈
项目开源地址**
【Github地址】:https://github.com/baidu/brcc
【Gitee地址】:https://gitee.com/baidu/brcc
期待你的加入
百度开发者中心已开启征稿模式,欢迎开发者登录developer.baidu.com进行投稿,优质文章将获得丰厚奖励和推广资源。
来源:oschina
链接:https://my.oschina.net/u/4299156/blog/4946427