当前位置: 首页 > article >正文

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

在分布式系统中,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
1.2、使用etcdctl put写入数据
etcdctl put <key> <value>
etcdctl put /config/db/host "192.168.1.100"
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.kler.cn/a/448496.html

相关文章:

  • 在 Sanic 应用中使用内存缓存管理 IP 黑名单
  • wireshark初认识
  • LLaMA-Factory 单卡3080*2 deepspeed zero3 微调Qwen2.5-7B-Instruct
  • 【Prompt Engineering】6 文本扩展
  • linux 使用zip unzip命令
  • 数据版本管理和迁移工具Flyway用法最简说明
  • LeetCode 583. 两个字符串的删除操作 java题解
  • KAFKA消費數據的三種方式
  • vue3项目中遇到的问题及解决方案
  • 信奥赛四种算法描述
  • Saprk和Flink的区别
  • Debian环境安装Docker Engine
  • 详解磁盘IO、网络IO、零拷贝IO、BIO、NIO、AIO、IO多路复用(select、poll、epoll)
  • MySQL 中的常见错误与排查
  • 分类模型的预测概率解读:3D概率分布可视化的直观呈现
  • 从零开始学Java,学习笔记Day24
  • 前端自动化部署更新,自动化打包部署
  • centos单机部署seata
  • 不同数据中心间海量数据的安全加密传输方案
  • Spring Boot教程之三十二:自定义 Jackson ObjectMapper
  • 青少年编程与数学 02-004 Go语言Web编程 16课题、并发编程
  • 5G -- 发展与演进
  • 鸿蒙UI开发——组件滤镜效果
  • 【深度学习|Transformer模型学习】Transformer 块的起源、发展和概述!快来看看吧
  • Ansible部署及基础模块
  • 远程过程调用(RPC,Remote Procedure Call)是一种协议