etcd事件监听

etcd中的数据变化触发相关的事件,事件监听分为一次性监听(watch)和永久监听(stream)。

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

试验过程:

创建数据:

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

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

  1. 设置监听:
curl http://127.0.0.1:2379/v2/keys/service1?wait=true&recursive=true
  1. 修改数据:
curl http://127.0.0.1:2379/v2/keys/service1/message -XPUT -d value="hihi"
  1. 监听收到返回:
{"action":"set","node":{"key":"/service1/message","value":"hihi","modifiedIndex":9,"createdIndex":9},"prevNode":{"key":"/service1/message","value":"Hello world","modifiedIndex":8,"createdIndex":8}}

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

  1. 设置监听:
 curl http://127.0.0.1:2379/v2/keys/service1\?wait\=true\&recursive\=true\&stream\=true
  1. 连续修改数据:
curl http://127.0.0.1:2379/v2/keys/service1/message -XPUT -d value="Alice"
curl http://127.0.0.1:2379/v2/keys/service1/address -XPUT -d value="SH" 
  1. 监听收到返回:
{"action":"set","node":{"key":"/service1/message","value":"Alice","modifiedIndex":10,"createdIndex":10},"prevNode":{"key":"/service1/message","value":"hihi","modifiedIndex":9,"createdIndex":9}}
{"action":"set","node":{"key":"/service1/address","value":"SH","modifiedIndex":11,"createdIndex":11}}

你可能感兴趣的:(etcd事件监听)