【ETCD】【实操篇(三)】【ETCDCTL】如何向集群中写入数据

news/2024/12/24 3:24:20 标签: etcd, chrome, 数据库

在分布式系统中,etcd 是一个高可用的键值存储,用于存储和共享配置信息、服务发现、协调等。向 etcd 写入数据可以通过多种方式进行,常见的方式是使用 etcd 提供的 HTTP API 或者通过客户端库来进行操作。

目录

      • 一、使用EtcdCtl工具来写入数据
        • 1.1、设置环境变量(可选)
        • 1.2、使用etcdctl put写入数据
        • 1.3、通过etcdctl put -h来查看相关帮助信息
      • 三、使用Java客户端写入数据
        • 3.1、添加pom依赖
        • 3.2、写入数据示例代码

一、使用EtcdCtl工具来写入数据

1.1、设置环境变量(可选)
export ETCDCTL_API=3
export ETCDCTL_ENDPOINTS=http://localhost:2379
etcdctl_put_12">1.2、使用etcdctl put写入数据
etcdctl put <key> <value>
etcdctl put /config/db/host "192.168.1.100"
etcdctl_put_h_19">1.3、通过etcdctl put -h来查看相关帮助信息
etcdctl put -h
NAME:
	put - Puts the given key into the store

USAGE:
	etcdctl put [options] <key> <value> (<value> can also be given from stdin) [flags]

DESCRIPTION:
	Puts the given key into the store.
	
	When <value> begins with '-', <value> is interpreted as a flag.
	Insert '--' for workaround:
	
	$ put <key> -- <value>
	$ put -- <key> <value>
	
	If <value> isn't given as a command line argument and '--ignore-value' is not specified,
	this command tries to read the value from standard input.
	
	If <lease> isn't given as a command line argument and '--ignore-lease' is not specified,
	this command tries to read the value from standard input.
	
	For example,
	$ cat file | put <key>
	will store the content of the file to <key>.

以下是 etcdctl put -h 命令帮助信息的中文翻译::

---

### 名称:
`put` - 将给定的键值对写入存储中

### 用法:
​```bash
etcdctl put [选项] <key> <value> (<value> 也可以通过标准输入给出) [标志]
​```

### 描述:
将给定的键值对写入存储中。

- 当 `<value>` 以 `-` 开头时,`<value>` 会被解释为一个标志。
  - 使用 `--` 进行工作区处理:
  
    ```bash
    $ put <key> -- <value>
    $ put -- <key> <value>
    ```

- 如果没有通过命令行参数给出 `<value>` 且没有指定 `--ignore-value`,该命令会尝试从标准输入读取值。

- 如果没有通过命令行参数给出 `<lease>` 且没有指定 `--ignore-lease`,该命令会尝试从标准输入读取租约。

  例如:
  
  ```bash
  $ cat file | put <key>

这条命令会将文件的内容存储到 <key> 中。

选项:

  • -h, --help[=false] 显示 put 命令的帮助信息
  • --ignore-lease[=false] 使用当前的租约更新键值对
  • --ignore-value[=false] 使用当前的值更新键值对
  • --lease="0" 租约 ID(十六进制格式),将其附加到键值对
  • --prev-kv[=false] 在修改前返回之前的键值对

这个帮助信息提供了 etcdctl put 命令的所有选项和详细描述。put 命令用于将键值对存储到 etcd 中,支持从标准输入获取值,并且可以在命令中使用租约等参数。






### 二、使用go 客户端写入数据

#### 2.1、安装 Go 客户端库

#### 2.2、示例代码

```go
func init() {
	// 初始化etcd客户端
	var err error
	cli, err = clientv3.New(clientv3.Config{
		Endpoints:   []string{"127.0.0.1:2379"}, // 替换为你的etcd集群地址
		DialTimeout: 5 * time.Second,
	})
	if err != nil {
		log.Fatal(err)
	}
}

// put 向etcd写入数据
func put(key, value string) {
	response, err := cli.Put(context.Background(), key, value)
	if err != nil {
		log.Fatal(err)
	}
	log.Printf("write data success,response header is:%s", response.Header.String())
}

func main() {
	defer cli.Close()
	String key = "/config/db/host";
    String value = "192.168.1.100";
	put(key, value)
}

三、使用Java客户端写入数据

3.1、添加pom依赖
        <!-- https://mvnrepository.com/artifact/com.ibm.etcd/etcd-java -->
        <dependency>
            <groupId>com.ibm.etcd</groupId>
            <artifactId>etcd-java</artifactId>
            <version>0.0.24</version>
        </dependency>
3.2、写入数据示例代码
        KvStoreClient client = EtcdClient.forEndpoint("localhost", 2379).withPlainText().build();


        KvClient kvClient = client.getKvClient();
        LeaseClient leaseClient = client.getLeaseClient();
        LockClient lockClient = client.getLockClient();
        // 写入数据
        String key = "/config/db/host";
        String value = "192.168.1.100";
        PutResponse result = kvClient.put(ByteString.copyFrom(key, StandardCharsets.UTF_8), ByteString.copyFrom(value, StandardCharsets.UTF_8)).sync();
        System.out.println(result);

http://www.niftyadmin.cn/n/5797263.html

相关文章

HarmonyOS ArkTS中视频播放Video组件实现竖屏到横屏切换

在开发HarmonyOS应用时&#xff0c;视频播放是一个常见的需求。ArkTS提供了Video组件来满足这一需求。本文将介绍如何使用ArkTS的Video组件&#xff0c;并实现视频播放时从竖屏切换到横屏的功能。 视频播放组件简介 Video组件是ArkTS中用于播放视频的内置组件&#xff0c;它支…

详解磁盘IO、网络IO、零拷贝IO、BIO、NIO、AIO、IO多路复用(select、poll、epoll)

1、什么是I/O 在计算机操作系统中&#xff0c;所谓的I/O就是输入&#xff08;Input&#xff09;和输出&#xff08;Output&#xff09;&#xff0c;也可以理解为读&#xff08;Read&#xff09;和写&#xff08;Write)&#xff0c;针对不同的对象&#xff0c;I/O模式可以划分为…

Pyqt6的tableWidget填充数据

代码 from PySide6.QtWidgets import QTableWidget QTableWidgetItemdef tableInit(self):self.tableWidgetself.tableWidget.setSelectionBehavior(QAbstractItemView.SelectRows)module_keyWord readJsonToDict(keyWordFileDir module_name) #读取模块关键字json字典数据s…

UVM 验证方法学之interface学习系列文章(十一)virtual interface 再续篇

一 前言 并非总是可以将被测单元(DUT)视为一个黑盒,即仅监控和驱动DUT的顶层端口信号。这一点在从模块级测试转向更大规模的系统级测试时尤为明显。有时,我们需要了解实现细节以便访问DUT内部的信号。这被称为白盒验证。 Verilog一直提供从其他作用域访问几乎任何层次结构…

Positional Encoding-Transformer

文章目录 1. 创建一个位置编码类2. Python代码 1. 创建一个位置编码类 P E ( p o s , 2 i ) sin ⁡ ( p o s / 1000 0 2 i / d m o d e l ) \begin{equation} PE_{(pos,2i)}\sin(pos/10000^{2i/d_{model}}) \end{equation} PE(pos,2i)​sin(pos/100002i/dmodel​)​​ P E ( …

【时间之外】IT人求职和创业应知【74】-运维机器人

目录 OpenAI最强推理模型o3发布&#xff0c;AGI测试能力暴涨 英伟达宣布收购以色列AI初创企业Runai 汤姆猫首款AI机器人产品明日发售 心勿贪&#xff0c;贵知足。 感谢所有打开这个页面的朋友。人生不如意&#xff0c;开越野车去撒野&#xff0c;会害了自己&#xff0c;不如…

小型 Vue 项目,该不该用 Pinia 、Vuex呢?

说到 Vue3 的状态管理&#xff0c;我们会第一时间想到 Pinia、Vuex&#xff0c;但是经过很长一段时间的 Vue3 项目开发&#xff0c;我逐渐发现&#xff0c;我们真的有必要用 Pinia、Vuex 这类的状态管理工具吗&#xff1f; 带着这样的疑惑&#xff0c;我首先是想知道一下 Pini…

在 Sanic 应用中使用内存缓存管理 IP 黑名单

[外链图片转存中…(img-Pm0K9mzd-1734859380698)] 在现代 web 应用中&#xff0c;保护 API 接口免受恶意请求的攻击至关重要。IP 黑名单是一种常见的安全措施&#xff0c;可以有效阻止某些 IP 地址的访问。本文将介绍如何在 Python 的 Sanic 框架中实现 IP 黑名单功能&#xf…