Etcd watch 机制

首先用docker来启动etcd

docker run -d\
  -p 2379:2379 \
  -p 2380:2380 \
  --name etcd quay.io/coreos/etcd:latest \
  /usr/local/bin/etcd \
  --data-dir=/etcd-data --name node1 --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379 --listen-peer-urls=http://0.0.0.0:2380 --initial-advertise-peer-urls=http://0.0.0.0:2380

我们往etcd里加入一个键值对

curl http://127.0.0.1:2379/v2/keys/key1 -XPUT -d value="Hello world"

etcd 的 watch 监听分为两种,一次性监听 和 持续监听

  1. 一次性监听

监听到了事件则返回json数据。返回后监听退出,后续需要再次启动监听。recursive为监听所有子节点变化。

curl http://127.0.0.1:2379/v2/keys/key1?wait=true&recursive=true

然后我们来改变这个key1的值

curl http://127.0.0.1:2379/v2/keys/key1 -XPUT -d value="changed value"

当key1的值变化后,可以看到 之前wait的进程结束了,并且监听到了返回

永久监听,监听到了事件不会退出,持续返回数据。相比一次性监听要可靠

curl http://127.0.0.1:2379/v2/keys/key1\?wait\=true\&recursive\=true\&stream\=true
Send a Message