Etcd特性学习3——lease lock elec

0x01 lease

lease意思是租期,通过租期管理,可以实现一些自动操作。ZooKeeper中可以指定一个znode的TTL,TTL为Time To Live,跟租期同样的含义,超出TTL的znode会被ZooKeeper自动清除。

lease包含如下子命令:

  1. grant 创建lease。 指定TTL(秒数),返回lease ID。16进制格式。
  2. keep-alive 保活lease。让lease持续有效。
  3. list 列出所有lease ID。
  4. revoke 让lease立刻失效。
  5. timetolive 获取指定lease的剩余存活时间。

使用时,将创建lease,然后在使用etcdctl put更新或者写入数据时,通过--lease指定lease ID。指定的lease ID过期后,对应的key就被自动删除了。

实践分析:

0x02 lock

分布式环境中,全局锁(分布式)是基本的需求之一,Etcd直接将其作为基本接口对外提供了,对开发者来说是非常方便的。

lock只需要指定锁名和对应要被锁保护的命令即可。

如下命令是在持有test锁之后sleep 5秒。

etcdctl lock test sleep 5

需要注意的是,这个加锁不支持超时参数,是阻塞锁,需要使用者自己控制。

加锁成功后,会返回一个锁id,持续加锁,这个id会持续增大。

test/694d8092907f2667

所以lock实现的是公平锁。

0x03 elec

分布式环境中,多实例服务需要选出一个实例处理请求,其他可能处于热备状态。这时需要一种共识机制,对谁处理请求达成一致。针对这种场景,Etcd中提供了elec接口。

命令格式如下:

 etcdctl elect <election-name> [proposal]

支持-l参数用来监听一个选举变化,未指定proposal时为必传参数。election-name为必选项。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值