「 2021年02月,百度分佈式配置中心BRCC,正式開源!」java
01. 什麼是BRCC
BRCC(better remote config center)是一個分佈式配置中心,用於統一管理應用服務的配置信息,避免各種資源散落在各個項目中,簡化資源配置的維護成本。做爲一種輕量級的解決方案,部署簡單,同時支持多環境、多版本、多角色的資源管理,能夠在不改變應用源碼的狀況下無縫切換和實時生效配置信息。git
02. 技術架構
BRCC由三部分組成:管理端、服務端、SDK,其中:github
1)管理端 :web
先後端分離,後端基於Spring Boot 2.0開發,支持6個維度(產品、工程、環境、版本、分組、配置項)管理key-value格式的配置;支持細粒度的權限控制層級、操做軌跡等能力。安全易用,支持插件化的擴展輕鬆集成任何公司/組織的帳號管理系統。spring
2)服務端:sql
基於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進行投稿,優質文章將得到豐厚獎勵和推廣資源。