# 快速开始
# 部署brcc
请点击《部署手册》查看如何部署brcc server端。假设管理端的地址是http://127.0.0.1:8080
# 登录管理端增加配置
# 登录管理端
访问 http://127.0.0.1:8080/#/login (opens new window)
- 初始安装的超管账号和密码admin/admin
# 增加产品线
产品线入口, 产品线入口有3个,首页中的【全部产品线】、具体产品,个人信息菜单下拉框中的【我的产品线】如下图:
新建产品线 test。
新建后,点击test进入工程列表
# 增加工程
进入工程列表后,点击"新建工程"按钮。 新建工程 example,api密码设置为123456。新建后在工程列表界面点击"example"进入环境页面。
# 增加环境
点击"新增环境",增加一个新环境dev, 点击dev,进入版本页面。
# 增加版本
新增环境 1.0,点击"1.0"进入分组页面。
# 增加分组
新增分组 g1,点击"g1"进入配置页面。
# 增加配置
增加3个配置:
a=5
b=34
c=xx13
# 使用java-sdk
# 增加brcc依赖
创建一个通用的springboot应用,在pom文件中增加如下依赖:
<dependency>
<groupId>com.baidu.mapp</groupId>
<artifactId>brcc-sdk-starter</artifactId>
<version>1.0.0</version>
</dependency>
brcc sdk starter的最好使用最新版本。 (opens new window)
# 增加brcc的配置
在application.yml增加brcc的配置
rcc:
cc-server-url: http://127.0.0.1:8080/ #这里brcc server的地址
project-name: example #工程名
cc-password: 123456 #工程的api密码
env-name: dev #环境名称
cc-version-name: 1.0 #版本名称
log-properties: true #是否打印配置
enable-update-callback: true #是否启用自动更新
enable-interrupt-service: true #第一次加载工程api密码错误时是否中断服务
# 检查配置
启动应用, 在日志中检查是否有打印类似如下信息:
a=5
b=34
c=xx13
# 使用配置
拉取配置成功后,既可通过spring的placeholder能力在各种注解中使用这些配置,如:
@Value("${a}")
int a = 0;
@Value("${b}")
long b = 0;
@Value("${c}")
String c;
# 使用go-sdk
# brcc-go-sdk代码库地址
https://github.com/baidu/brcc/tree/main/brcc-go-sdk
# brcc初始化
使用
import (
brcc github.com/baidu/brcc/brcc-go-sdk
)
# 1) 通过toml文件初始化brcc客户端
配置示例
serverUrl = "brcc.baidu-int.com"
projectName = "brcc-go-client"
envName = "debug"
versionName = "1.0"
apiPassword = "123456"
enableCallback = true
callbackInterval = 300
requestTimeout = 5
enableCache = true
cacheDir = "/tmp/brcc"
参数说明
配置参数 | 类型 | 是否必填 | 配置说明 |
---|---|---|---|
serverUrl | string | 是 | brcc服务域名 |
projectName | string | 是 | brcc工程名 |
envName | string | 是 | brcc环境名 |
versionName | string | 是 | 版本号 |
apiPassword | string | 是 | 工程API密码 |
enableCallback | bool | 否 | 是否开启配置更新回调, 默认值false关闭 |
callbackInterval | int | 否 | 配置更新回调时间间隔, 单位秒, 默认值300秒 |
requestTimeout | int | 否 | brcc服务接口访问超时时间, 单位秒, 默认值5秒 |
enableCache | bool | 否 | 是否开启文件缓存, 在远程获取配置失败时从本地缓存中读取配置, 默认值false关闭 |
cacheDir | string | 否 | 文件缓存位置, 默认值 /tmp/brcc |
初始化
// 使用toml配置文件初始化brcc客户端, name为配置文件路径
err := brcc.StartWithConfFile(name)
if err != nil {
panic(fmt.Sprintf("init brcc error: %v", err.Error()))
}
# 2) 通过代码配置初始化brcc客户端
初始化示例
brccConf := &brcc.Conf{
ProjectName: "brcc-go-client",
EnvName: "debug",
ServerUrl: "brcc.baidu-int.com",
ApiPassword: "123456",
VersionName: "1.0",
EnableCallback: true,
CallbackIntervalInt: 300,
RequestTimeoutInt: 5,
EnableCache: true,
CacheDir: "/tmp/brcc",
}
err := brcc.StartWithConf(ctx, brccConf)
if err != nil {
panic(fmt.Sprintf("init brcc error: %v", err.Error()))
}
# brcc获取远程配置
// 获取远程配置
brcc.GetValue(key, defaultValue)
// 读取所有的key
brcc.GetAllKeys()
# brcc注入
type Test struct {
A bool `brcc:"test.a"`
B int `brcc:"test.b"`
C string `brcc:"test.c"`
}
tv := &Test{}
// 注入
brcc.Bind(tv)
# brcc监听配置变更
使用示例
type DemoSet struct {
data map[string]string
}
func (d *DemoSet) Update(ce *brcc.ChangeEvent) {
//建议defer捕获协程panic处理
defer func() {
if r := recover(); r != nil {
fmt.Println("watch update callback panic")
}
}()
for key, change := range ce.Changes {
if change.ChangeType == brcc.ADD || change.ChangeType == brcc.MODIFY {
d.data[key] = change.NewValue
}
if change.ChangeType == brcc.DELETE {
delete(d.data, key)
}
}
}
d = DemoSet{data: map[string]string{}}
brcc.Watch(d.Update)