监控代码

package mainimport ("go.etcd.io/etcd/clientv3""time""fmt""context"
)func main() {cli, err := clientv3.New(clientv3.Config{Endpoints:[]string{"localhost:2379", "localhost:23279", "localhost:33279"},//etcd集群三个实例的端口DialTimeout:2*time.Second,})if err != nil {fmt.Println("connect failed, err:", err)return}fmt.Println("connect succ")defer cli.Close()for true {rch := cli.Watch(context.Background(), "/logagent/conf/")//阻塞在这里,如果没有key里没有变化,就一直停留在这里for wresp := range rch{for _, ev := range wresp.Events{fmt.Printf("%s %q:%q\n", ev.Type, ev.Kv.Key, ev.Kv.Value)}}}
}

配置变更代码

package mainimport ("go.etcd.io/etcd/clientv3""time""fmt""context"
)func main() {cli, err := clientv3.New(clientv3.Config{Endpoints:[]string{"localhost:2379", "localhost:23279", "localhost:33279"}, //etcd的集群的三个实例端口DialTimeout: 5*time.Second,})if err != nil {fmt.Println("connect failed, err:", err)return}fmt.Println("connect succ")defer cli.Close()ctx, cancel := context.WithTimeout(context.Background(), 2*time.Second)_, err = cli.Put(ctx, "/logagent/conf/", "samplevalue")cancel()if err != nil {fmt.Println("put failed, err:", err)return}ctx, cancel = context.WithTimeout(context.Background(), time.Second)resp, err := cli.Get(ctx, "/logagent/conf/")cancel()if err != nil {fmt.Println("get failed, err:", err)return}for _, ev := range resp.Kvs{fmt.Printf("%s:%s\n", ev.Key, ev.Value)}
}

执行后, 监控代码的执行结果为

转载于:https://www.cnblogs.com/baylorqu/p/9999405.html

[GO] go使用etcd和watch方法进行实时的配置变更相关推荐

  1. 实例化Bean的方法(基于xml配置)-http://blog.csdn.net/shymi1991/article/details/48153293

    实例化Bean的方法(基于xml配置) 标签: spring framework 2015-09-01 13:43 918人阅读 评论(0) 收藏 举报  分类: Spring FrameWork(7 ...

  2. linux环境变量配置的方法,Linux环境变量配置方法

    Linux上环境变量配置分为设置永久变量和临时变量两种.环境变量设置方法同时要考虑环境Shell类型,不同类型的SHELL设置临时变量方法和设置永久变量对应的配置文件不同.Linux环境变量本身配置过 ...

  3. [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入

    [js] 写一个方法,实时验证input输入的值是否满足金额如:3.56(最多只有两位小数且只能数字和小数点)的格式,其它特殊字符禁止输入 <body><input type=&qu ...

  4. 【前端学习】Git的安装和基本使用方法和环境变量配置 时光大魔王

    免责声明:原创文章,请勿抄袭:思维有限,敬请指正. 直达目录 Git下载 .安装步骤(完整图解) .基本使用方法 .环境变量配置 适用系统 Windows.Linux/Unix.macOS 官网简介 ...

  5. qiankun 两种集成微应用的方法(基于路由配置微应用、手动加载微应用)

    目录 1.qiankun 两种集成微应用的方法 2.基于路由配置微应用 1.1 registerMicroApps(apps, lifeCycles?) 注册微应用配置信息 参数 类型 用法 1.2 ...

  6. window 7 IIS配置方法 win7 Internet信息服务配置方法详解

    出处:http://www.huacolor.com/article/23431.html window 7 IIS配置方法 win7 Internet信息服务配置方法详解   1.依次打开 控制面板 ...

  7. etcd v3使用方法

    etcd 使用etcdv3 export ETCDCTL_API=3 设置.更新key # champly @ ChamPlydeMBP in ~/soft/etcd [22:40:55] $ ./e ...

  8. linux网站权限怎么设置好,linux网站权限设置方法,网站安全配置,linux网站权限...

    目的:为了保证网站不遭受木马入侵上传及修改文件. 相对安全的权限: 1.站点内所有目录和文件的用户和组都应该是root 2.所有目录权限默认的755 3.所有文件权限默认的644 (不能改文件) 1+ ...

  9. CentOS防火墙配置方法-详细解读如何配置CentOS防火墙

    iptables-save >/etc/sysconfig/iptables  (保存配置文件) 在重启iptables 服务或者在重启系统时候不会消失已经开启的端口 对CentOS防火墙的设置 ...

最新文章

  1. iOS 9应用开发教程之创建iOS 9项目与模拟器介绍
  2. Java 编程的动态性,第 7 部分: 用 BCEL 设计字节码--转载
  3. 以太坊知识教程------智能合约(2)调用
  4. salt 执行命令等待_saltstack异步执行命令
  5. LINQ访问DataTable
  6. linux 信号量锁 内核,Linux内核信号量互斥锁应用
  7. Java接口的几种常见用法
  8. 微信小程序开发之路(二)
  9. Webpack实战(九):实现资源按需加载-资源异步加载
  10. mysql插入二进制命令_MySQL将语句写入到binlog二进制日志中
  11. 2.对memcached进行curd操作
  12. CF1139D Steps to One
  13. docker 定时重启脚本_群晖docker容器定时自动重启
  14. 进程系列(三)-进程的基本用法(打开文件示列)
  15. 带你玩转以太坊智能合约的Hello World
  16. 用 Python 整理 Excel 表格
  17. Redmi K20 安卓9跨版本刷第三方ROM
  18. bug记录-socket hang up
  19. 猿创征文|项目中使用Git,解决一些项目开发中常见的Git问题
  20. WWDC————苹果全球开发者大会

热门文章

  1. hdu4525 威威猫系列故事——吃鸡腿
  2. 爱情,这种高级玩意儿--一个码农的自白
  3. java中常见的异常类
  4. Ubuntu 安装 opencv-nonfree
  5. kalman 滤波 演示与opencv代码
  6. 基于Dockerfile构建新镜像
  7. linux命令之awk命令
  8. LightOJ - 1098 A New Function
  9. 东方金信:让大数据为民服务
  10. linux 内核调试方法