# 快速开始

# 部署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的最好使用最新版本。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)