php连接etcd,etcd常用功能

etcd 是一个分布式的 kv 数据库,除了基本的数据读写功能之外,还提供事务写,watch,租约,分布式锁等功能,下面简单介绍这些功能的使用方法。

1. 读写etcd

1.1 写入数据

ENDPOINTS=192.168.56.200:2379

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 put /test 'hello'

1.2 读取数据

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 get /test

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 --write-out="json" get /test

参数 --write-out 可以设置输出格式。

1.3 按前缀读取数据

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 get / --prefix

参数 --prefix 指定按前缀读取 key 值

1.4 删除数据

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 del /test

1.5 按前缀删除数据

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 del / --prefix

参数 --prefix 指定按前缀删除 key 值

2. 支持事务写数据

txn 能够在一个事务中封装多个请求。

[root@localhost ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 txn --interactive

compares:

value("/test") = "A"

success requests (get, put, del):

del /test

put /test1 'A'

put /test2 'B'

failure requests (get, put, del):

put /test 'B'

SUCCESS

1

OK

OK

[root@localhost ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 get /test

[root@localhost ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 get /test1

/test1

A

[root@localhost ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 get /test2

/test2

B

3. watch 功能

watch 是 etcd 非常重要的一个功能,它是 etcd 实现服务发现的前提,watch 能够捕捉到 key 值的变化,并通知所有 watch 该 key 的用户。

在一个终端中执行 watch 命令:

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 watch / --prefix

在另外一个终端写入数据:

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 put /test 'A'

此时,第一个终端输出,如下:

[root@host10372180 ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 watch / --prefix

PUT

/test

A

put key, del key 以及网络异常断开,都会触发 watch 事件。

4. 租约功能 Lease

etcd 支持给 key 设置租约(Lease)功能,租约有时间期限,在期限内可以续租,如果没有在时间期限内续租,key 值会被自动清除。

申请一个 30 秒的租约:

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 lease grant 30

lease 50e574d2ae7311a3 granted with TTL(30s)

将租约与 key 绑定:

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 put /test 'A' --lease=50e574d2ae7311a3

将租约延期:

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 lease keep-alive 50e574d2ae7311a3

释放租约:

etcdctl --endpoints=$ENDPOINTS --user=admin:123456 lease revoke 50e574d2ae7311a3

5. 分布式锁(Distributed locks)

etcd 支持分布式锁,两个终端同时执行如下命令,只有一个终端能够获取到锁,另外一个等待。

终端一:

[root@localhost ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 lock /test

/test/50e574d2ae731269

终端二:

[root@localhost ~]# etcdctl --endpoints=$ENDPOINTS --user=admin:123456 lock /test

终端一获取到了锁,终端二等待,终端一断开连接后,终端二就可以获取到锁了。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值