“ 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进行投稿,优质文章将获得丰厚奖励和推广资源。

百度分布式配置中心BRCC正式开源相关推荐

  1. 百度最近开源了分布式配置中心,名叫BRCC

    点击上方蓝色"方志朋",选择"设为星标"回复"666"获取独家整理的学习资料! BRCC是一个分布式配置中心,用于统一管理应用服务的配置信息 ...

  2. 百度开源,分布式配置中心

    以下文章来源方志朋的博客,回复"666"获面试宝典 BRCC是一个分布式配置中心,用于统一管理应用服务的配置信息,避免各类资源散落在各个项目中,简化资源配置的维护成本.作为一种轻量 ...

  3. Spring Cloud(九)高可用的分布式配置中心 Spring Cloud Config 集成 Eureka 服务

    上一篇文章,讲了SpringCloudConfig 集成Git仓库,这一篇我们讲一下SpringCloudConfig 配和 Eureka 注册中心一起使用 在分布式系统中,由于服务数量巨多,为了方便 ...

  4. Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config

    在分布式系统中,由于服务数量巨多,为了方便服务配置文件统一管理,实时更新,所以需要分布式配置中心组件.在Spring Cloud中,有分布式配置中心组件spring cloud config,它支持配 ...

  5. 自己写分布式配置中心(上篇)- 单机模式

    作者:SnoWalker 来源:http://wuwenliang.net/2018/12/05/%E8%87%AA%E5%B7%B1%E5%86%99%E5%88%86%E5%B8%83%E5%BC ...

  6. Apollo分布式配置中心入门

    一.概述 1.什么是配置 应用程序在启动和运行的时候往往需要读取一些配置信息,配置基本上伴随着应用程序的整个生命周期,比如:数据库连接参数.启动参数等. 配置主要有以下几个特点: 配置是独立于程序的只 ...

  7. 为什么需要分布式配置中心

    版权声明:本文为博主原创文章,未经博主允许不得转载.    https://blog.csdn.net/bntX2jSQfEHy7/article/details/82879841 作者 :谭明(林湾 ...

  8. 微服务 分布式配置中心Apollo详解

    微服务 分布式配置中心Apollo详解 1. 配置中心概述 1.1 配置中心简介 1.2 配置中心特点 1.3 配置中心对比 2. Apollo概述 2.1 Apollo简介 2.2 Apollo特点 ...

  9. 什么是分布式配置中心?

    今天来跟大家聊下分布式配置中心这个话题 01.什么是分布式配置中心 在之前我就很早已经提及过:分布式配置中心这种组件在后端就是标配的. 要理解分布式配置中心很简单:其实就是把一些配置的信息分离于自身的 ...

最新文章

  1. jstl c:choose、c:when和c:otherwise标签
  2. Python培训分享:Python新版本中的6个新特性
  3. Java项目中,如何限制每个用户访问接口的次数
  4. HTML DOM 节点
  5. MyBatis(一)——基本架构、CURD、ResultMap、日志、分页
  6. Ajax的使用四大步骤详解,五、使用Ajax的步骤
  7. 三星为什么要卖芯片?手机干不过华为小米,半导体好挣钱!
  8. 最大子数组 ——算法导论
  9. 【论文复现】使用CNN进行文本分类
  10. 【语音合成】基于matlab两端音频合成【含Matlab源码 1490期】
  11. pdfbox、icepdf工具实现pdf转图片
  12. php 屏蔽deprecated,php7.2.8 Deprecated错误不能隐藏处理
  13. plc的毕业设计冷门题目_PLC毕业设计----PLC毕业设计题目汇总
  14. SDWebImage 第三方框架的使用——网络图片的处理操作
  15. 【RL从入门到放弃】【二 表格型RL】
  16. 真无线蓝牙耳机哪个品牌好?2023年真无线降噪耳机盘点
  17. 开源开放 | 一个用于文言文实体识别与关系抽取等任务的开源数据集C-CLUE(CCKS2021)...
  18. 1024程序员节!Hello world
  19. Centos服务器java环境初始化搭建
  20. 几种常用的开发模型和测试模型

热门文章

  1. ActionScript 3.0 Step By Step系列(六):学对象事件模型,从点击按扭开始
  2. Report Service 中数据类型的问题
  3. 两个链表生成相加链表
  4. SpringBatch 多线程(TaskExecutor)启动Job详解 (七)
  5. 【工具收藏】golang 开发工具包,json、sql 转 struct
  6. python django ansible自动化运维管理平台源码收藏
  7. HDFS报错解决:Operation category JOURNAL is not supported in state standby
  8. Django 3.2.5博客开发教程:实现网站首页
  9. Linux根目录扩容操作命令整理(扩容99G;未添加新盘)
  10. Scala数组元素的增加(:+)方法