项目作者: lifei6671

项目描述 :
携程 apollo 项目 golang 客户端
高级语言: Go
项目地址: git://github.com/lifei6671/goapollo.git
创建时间: 2019-01-30T02:37:43Z
项目社区:https://github.com/lifei6671/goapollo

开源协议:

下载


携程 apollo 项目 golang 客户端

方便Golang快捷接入携程配置中心框架 Apollo 所开发的Golang版本客户端。

功能

  • 实时同步配置
  • 灰度配置
  • 客户端容灾
  • 多命名空间支持
  • 无多余依赖
  • 支持自定义日志打印

安装

Golang Module
在项目中引入,执行下面命令即可:

  1. go mod tidy

其他包管理

  1. go get github.com/lifei6671/goapollo

使用

自定义客户端

  1. package main
  2. import (
  3. "context"
  4. "github.com/lifei6671/goapollo"
  5. "log"
  6. "os"
  7. )
  8. func main() {
  9. //1. 初始化一个客户端
  10. c := goapollo.New("host", "6e77bd897fe903ad", "default")
  11. //2. 添加多个命名空间
  12. c.AddNamespace("application").AddNamespace("wechat")
  13. //3. 启动并运行客户端
  14. c.Run(context.Background())
  15. val,_ := c.GetValue("zookeeper_timeout")
  16. log.Printf("zookeeper_timeout:%s",val)
  17. log.Printf("keys -> %+v",c.AllKeys("application"))
  18. //4.监控变更通知
  19. for {
  20. select {
  21. case change := <-c.WatchUpdate():
  22. log.Printf("配置更新通知%s\n", change)
  23. }
  24. }
  25. }

使用环境变量初始化默认客户端

  1. package main
  2. import (
  3. "context"
  4. "github.com/lifei6671/goapollo"
  5. "log"
  6. )
  7. func main() {
  8. ctx,cancel := context.WithCancel(context.Background())
  9. defer cancel()
  10. if err := goapollo.Run(ctx);err != nil {
  11. log.Fatalf("启动客户端失败->%s",err)
  12. }
  13. for {
  14. select {
  15. case change := <-goapollo.WatchUpdate():
  16. log.Printf("配置更新通知%s\n", change)
  17. }
  18. }
  19. }

其中,需要设置如下环境变量:

  • APOLLO_HOST Apollo 服务器地址
  • APOLLO_APP_ID 需要监听的APPID
  • APOLLO_CLUSTER 需要今天的集群
  • APOLLO_NAMESPACE 需要监听的命名空间,多个可用;分隔

自定义序列化器

系统支持自定义序列化器,方便接入时根据实际需求来序列化和反序列化配置信息。

目前系统内置了两种序列化器:json 和 gob。

默认情况下,使用 json 做序列化器,也可以在添加命名空间时指定自己实现的序列化器。