|
||
---|---|---|
.. | ||
component | ||
env | ||
loadbalance | ||
protocol/http | ||
storage | ||
utils | ||
readme.md | ||
repository.go | ||
start.go |
readme.md
Agollo客户端
使用
启动示例:
package main
import (
"git.ixiaochuan.cn/zeus/xczero_frame/component/agollo"
"git.ixiaochuan.cn/zeus/xczero_frame/component/agollo/env/config"
)
func main() {
agollo.Start(&config.AppConfig{
AppID: "zuiyou",
Cluster: "search-server",
NamespaceName: "application",
IP: "172.20.20.2:8080",
})
}
获取配置
使用repository中的该方法,如
package main
import (
"git.ixiaochuan.cn/zeus/xczero_frame/component/agollo"
)
func main() {
agollo.GetStringValue("config_key", "default_value")
agollo.GetBoolValue("config_key", true)
agollo.GetIntValue("config_key", 111)
agollo.GetFloatValue("config_key", 1.23)
}
结构
本客户端主要包含三个方面的内容更新,分别为server_ips、notifications和apolloConfigs。 其中server_ips为单独一个协程来更新,另外两个共用一个协程顺序按更新。
server_ips
服务刚启动时客户端会根据配置中的hostport来访问metaserver服务, 如果metaserver服务一直也没问题的话,那么server_ips不会被访问到。当且仅当访问metaserver出错的时候会访问server_ips, 也就是说,server_ips是一个降级措施。
notifications 和 apolloConfigs
notifications用于长轮询,当服务端配置没有任何更新的时候,此处长轮询会阻塞住,根据服务端和客户端配置来设置阻塞时长。 客户端需设置超时时间大于服务端配置。当前客户端链接超时时间配置为10min,服务端设置为长轮询1min后返回结果。 首次访问马上返回相应的配置。再次访问,如果用户配置没有更新则notifications服务端返回HTTP状态码304,不进行更新。
在长轮询结束后,无论如何都进行一次用户配置的更新,防止出现用户配置没有被正确更新的情况。(线上出现过这种问题)