首页 > 其他分享 >etcd:基本使用

etcd:基本使用

时间:2024-03-24 15:34:10浏览次数:21  
标签:基本 clientv3 context Watch client etcd 使用 put

基本使用

基本使用

建立连接

// init etcd client
  client, err := clientv3.New(
    clientv3.Config{
      Endpoints:   []string{"http://localhost:2379"},
      DialTimeout: 5 * time.Second,
    },
  )

这里需要注意Endpoints, 传入的是一个list

这样做的原因很简单, 出于容灾的考虑, 当其中的一个连接失效后, 可以切换到连接其他server上

Get/Set

这是其作为一个KV存储的基本能力

  put, _ := client.Put(context.Background(), "djj", "DJJDJJ")
  println(put.Header.String())

  get, _ := client.Get(context.Background(), "secret")
  println(string(get.Kvs[0].Value))

Lease

lease的翻译应该为 租约, 我认为这个命名还是相当准确的描述出了它的作用

  1. 控制TTL
  2. 管理资产, 这里的资产指的可能是多个
  grant, err := client.Grant(ctx, 100)

  put, _ := client.Put(context.Background(), "djj", "DJJDJJ", clientv3.WithLease(grant.ID))
  println(put.Header.String())

但是应当注意, lease的创建和key的绑定是分开的.

一个租约可以对应多个key

Watch

Watch提供的能力是观测Key的变化

  bgCtx := context.Background()
  watchChan := client.Watch(bgCtx, "djj", clientv3.WithPrefix(), clientv3.WithRev(0), clientv3.WithKeysOnly())
  for {
    select {
    case <-bgCtx.Done():
      return
    case resp := <-watchChan:
      for _, event := range resp.Events {
        fmt.Printf("type: %s, key: %s, value: %s\n", event.Type, event.Kv.Key, event.Kv.Value)
      }
    }
  }

以上就是一个简单的Watch的使用

在V3版本的etcd中, 使用stream模式来实现推送, 而不是v2的轮询方式, 较好的节省了资源.

在创建了watch之后, 可以通过监听channel来实时的获取新更改的返回.

标签:基本,clientv3,context,Watch,client,etcd,使用,put
From: https://www.cnblogs.com/pDJJq/p/18092489/basic-use-1kc9ft

相关文章

  • Vim - vimrc常用配置和插件的使用
    基础常用命令I#跳转到行首并进入编辑A#跳转到行尾并进入编辑j#跳转到下一行.#重复上一次的修改(比如给每一行最后加上";",可以按A将光标移动到行尾,输入;,然后按j跳转到下一行,在按.)C#删除当前光标位置到当前行最后的文本,并进入编辑模式s#删除光标后的一个字......
  • Trim的使用 C#
    Trim的使用Thesemethodsaredesignedfortrimmingcharactersfromstrings.Here'sabreakdownofeachmethod,alongwithexamplesoftheirusage:1.Trim(chartrimChar):Removesallleadingandtrailinginstancesofaspecificcharacterfromastring......
  • [Java]细节与使用经验
    【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)https://www.cnblogs.com/cnb-yuchen/p/18032072出自【进步*于辰的博客】纯文字阐述,内容比较干。并且,由于考虑到时间长了恐有所遗漏,便即兴记录,并没有对内容进行筛选、排序。因此,大家在阅读时可以直接Ctrl+F进......
  • 数据库中什么时候使用自增id,什么时候不能使用
    在数据库中,自增ID的使用场景主要有以下几个:插入记录时不需要指定ID:使用自增ID可以避免手动指定ID,从而避免了因重复ID导致的错误数据库自动编号,速度快:数据库会按照预设的步长(默认为1)进行编号,这对于检索非常有利占用空间小,易于排序和传递:数字型的自增ID通常只占用4个字节,比字......
  • 机器学习算法那些事 | 使用Transformer模型进行时间序列预测实战
    本文来源公众号“机器学习算法那些事”,仅用于学术分享,侵权删,干货满满。原文链接:使用Transformer模型进行时间序列预测实战时间序列预测是一个经久不衰的主题,受自然语言处理领域的成功启发,transformer模型也在时间序列预测有了很大的发展。本文可以作为学习使用Transformer模......
  • 讲一下怎么在java项目中使用阿里云的短信服务
    要在Java项目中使用阿里云的短信服务,您需要完成以下步骤:步骤1:注册阿里云账号如果您还没有阿里云账号,您需要先注册一个账号,并购买短信服务。步骤2:创建AccessKey登录阿里云控制台,创建一个AccessKey以便在代码中验证身份。步骤3:引入阿里云短信服务SDK您需要在项目的pom.xml......
  • raft算法和etcd代码解析-3.网络分区问题及其它
    网络分区问题网络分区导致选举永远无法达成共识,选举不断超时,任期号将不断增加为避免这个问题,candidate会探测网络环境以免发起无意义的竞选集群变更leader收到配置变更要求,会广播配置变更日志,日志包括新结点和老节点,在收到老节点的多数派认可后,leader后提交该请求在处理配置......
  • 数据分析和机器学习库Pandas的使用
    Pandas库是一个免费、开源的第三方Python库,是Python数据分析和机器学习的工具之一。Pandas提供了两种数据结构,分别是Series(一维数组结构)与DataFrame(二维数组结构),极大地增强的了Pandas的数据分析能力。importpandasaspdimportnumpyasnpSeriesSeries是一......
  • 【WPF应用10】基本控件-StackPanel:布局原理与实际应用
    在WindowsPresentationFoundation(WPF)中,布局是用户界面设计的核心部分,它决定了控件如何排列和空间如何分配。WPF提供了一系列布局面板(Panel),以便开发者可以根据需要灵活地组织控件。在这些面板中,StackPanel是一个常用的布局控件,它按照子元素的顺序将它们堆叠起来。本文将深......
  • 利用GRACE球谐数据计算地表位移的基本原理与实现
    1.基本理论由于地表质量发生变化导致地表的负荷变形,利用GRACE数据计算地表的垂直(2)、水平东向(3)和水平北向位移(4)方法如下:我们之前已经利用冯伟老师提供的MATLAB工具包计算了EWH,下面我们具体看看两类计算公式的异同点:我们可以发现,有一些部分是一致的,即唯一不同的就是前面乘......