美文网首页
etcd client keepalive方法的作用

etcd client keepalive方法的作用

作者: 克罗地亚催眠曲 | 来源:发表于2022-03-27 20:19 被阅读0次

etcd的lease是一个非常有用的机制,主要作用是给特定的key附加一个过期时间。既然调用client.Put方法已经可以把key和lease进行关联,为什么有个keepalive方法呢?
仔细阅读该方法的文档,以及进行实验,明白了keepalive的作用是自动续期租约,即当前context没有被cacel或者timeout,这个lease会一直被续租。
实验代码

func main() {
    cli, err := etcd.GetCli()
    if err != nil {
        panic(err)
    }
    key := "/test/leader/hostname"
    ctx := context.TODO()
    lease, err := cli.Grant(ctx, 30)
    if err != nil {
        panic(err)
    }
    _, err = cli.Put(ctx, key, "abcd", clientv3.WithLease(lease.ID))
    if err != nil {
        panic(err)
    }
    _, err = cli.KeepAlive(ctx, lease.ID)
    if err != nil {
        panic(err)
    }
    fmt.Printf("%x\n", lease.ID)
    select {}
}

在启动该程序之后,打开另一个窗口持续观察lease的过期时间

etcdctl lease timetolive 66d77fb9c1003ec0

会发现这个lease的ttl基本每隔几秒就会变为30s。
由此,验证了心中的疑惑。

相关文章

  • etcd client keepalive方法的作用

    etcd的lease是一个非常有用的机制,主要作用是给特定的key附加一个过期时间。既然调用client.Put方...

  • 使托管对象保持活动状态

    GC.KeepAlive()将确保对象保持在作用域内,直到采用 KeepAlive 方法。 HandleRef允许...

  • Etcd权限配置

    目录 Etcd Auth Client Etcd 关于go环境搭建可以参考Go起步 Auth 添加用户root后默...

  • Etcd 读请求如何执行

    etcd架构 client:提供了简洁易用的API,同时支持负载均衡、节点故障自动转移,可极大降低业务使用etcd...

  • lua封装的etcd client

    最近一年一直从事webrtc的开发,webrtc的服务性能测试也达到了大多大厂宣扬的并发性能,甚至略超过声网...

  • h5路由使用keepalive

    最近踩坑踩到keepalive了 keepalive作用:缓存组件内部状态,避免重新渲染换句话来说,当这个A页面跳...

  • Kubernetes的client-go库介绍

    [TOC] Kubernetes的client-go库介绍 client-go的作用 github上client-...

  • flutter KeepAlive

    KeepAlive KeepAlive通过设置parentData(KeepAliveParentDataMixi...

  • 10分钟扫盲ETCD快速认知

    1、当你不懂的时候,怎么理解何为ETCD? 我们实际上需要理解下面4个词就可以理解ETCD的作用了。 实现语言--...

  • golang对etcd的简单操作

    首先获取clientv3: 连接etcd: kv是一个用于操作kv的连接,其实它本质上是用了client的conn...

网友评论

      本文标题:etcd client keepalive方法的作用

      本文链接:https://www.haomeiwen.com/subject/pxwyjrtx.html