参数管理支持

背景

在线服务中,有时我们会对系统的参数进行动态的变更而不直接重启服务。目前 A/B 服务已经通过 SDK 打通了 Server 与在线服务之间的链路。我们把参数管理也放到 Server 里,这样通过 SDK 就能下发到服务侧。

参数与场景和环境相关联。不同的环境可以取不同的值。

业务流程

新增参数配置

选择场景和环境后,新增参数,相同参数名称会自动在别的环境中创建。

比如在日常环境下,新增了参数 foo, 并设置值为 bar, 参数 foo 会在相应的场景下, 预发和正式都会创建参数 foo, 但是值为空。后续,只需要切换到不同的环境,设置相应的值即可。

add_params

删除参数

删除相应的参数之后,同理,在所有环境下的相同的参数名称都会删除。

SDK 集成

golang 版本

host := "http://localhost:8080"
	client, err := NewExperimentClient(host, common.Environment_Prepub_Desc, WithLogger(LoggerFunc(log.Printf)), WithErrorLogger(LoggerFunc(log.Fatalf)))
	if err != nil {
		t.Fatal(err)
	}

// 根据场景获取参数列表,再使用具体的 Get* function 获取具体的参数
	param := client.GetSceneParams("home_feed").GetString("foo", "not exist")
	fmt.Println(param)