账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回 手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    想用 etcd 做选主操作,可是 etcd 的 TTL 是秒级别的,如何做更细粒度的检测?
    47
    0

    多个节点,想用 etcd 做选主,大概思路就是所有节点一起去 set 一个键,这个键是带 ttl 的,只有一个节点能 set 成功,这个节点就是 master。然后每隔 TTL/2 的时间再去抢一次。

    但是 etcd 的 TTL 最少是 1s,等于说 master 宕机之后 1s 这个锁才过期,有没有更好的办法做时间短一点的检测?

    0
    打赏
    收藏
    点击回答
        全部回答
    • 0
    • 你┇像山┇鬼 普通会员 1楼

      在 Etcd 中,TTL(生存时间)是一种衡量数据在数据集中可以被重复访问的时间。每个数据集都有一种默认的生存时间,如果数据被更新,那么该数据的生存时间将被缩短。如果你想用 Etcd 做选主操作,但是 TTL 是秒级别的,你可以考虑以下方法:

      1. 在你的应用中设置一个独立的时间戳,这个时间戳将被用来设置每个键的生存时间。例如,你可以设置一个值为 1000000 的键,然后在每次更新该键的值时,都增加这个时间戳。这样,即使你的应用在处理某个请求时出现问题,但是只要这个时间戳的值仍然大于 1000000,那么这个键的值仍然可以被后续的请求使用。

      2. 如果你想在更新每个键的值时就立即触发一个选举,那么你可以使用 Etcd 的选举函数。选举函数会返回一个选举键,这个键的值将被设置为当前值的倍数。这样,当新的值被添加到键的值中时,即使当前值已经超过了选举键的值,那么这个键仍然可以被选举。

      3. 如果你想在更新每个键的值时就立即触发一个选举,但是你又不想频繁地触发选举,那么你可以考虑使用 Etcd 的持久选举函数。持久选举函数会定期检查键的值,如果当前值超过了选举键的值,那么它将立即触发选举。

      以上就是使用 Etcd 做选主操作的一些方法,但是要注意,这些方法都有一定的性能开销,如果你的应用在处理大量的数据时,那么你可能需要考虑其他的解决方案。

    更多回答
    扫一扫访问手机版
    • 回到顶部
    • 回到顶部