docker搭建本地测试用的单机etcd服务

什么是etcd

引用官网的原话:

A distributed, reliable key-value store for the most critical data of a distributed system

注意这里的几个关键字:distributed(分布式)、reliable(可靠的)、key-value(kv存储)

也就是说 etcd 是一个高可靠的分布式kv存储服务,多用于核心数据的存储,如实现微服务系统的服务注册、发现功能。

其具备以下特性:

  • 支持集群部署,自动选主机制
  • 容忍单点故障,可应对网络分区
  • 数据基于key有序存储,支持基于目录结构的高效遍历
  • 支持复杂事物操作
  • 基于租约实现ttl过期
  • 支持应用实时监听kv变化

docker搭建单机版etcd

这里使用 appcelerator/etcd 镜像创建容器

# docker pull appcelerator/etcd
// 注意! 生产环境一定不能在所有网卡无密暴露端口!
# docker run -d -p 2379:2379 -p 2380:2380 appcelerator/etcd --listen-client-urls http://0.0.0.0:2379 --advertise-client-urls http://0.0.0.0:2379
复制代码

测试

这里用 Go 写一个小 demo 试试,首先引入 etcd 客户端 SDK 依赖包

# go get go.etcd.io/etcd/clientv3
复制代码

Go:

package main

import (
	"context"
	"fmt"
	"go.etcd.io/etcd/clientv3"
	"time"
)

func main() {
	var (
		config clientv3.Config
		client *clientv3.Client
		err error
	)

	// 创建配置对象,指定server地址并设置超时时间
	// 这里因为我用的是windows系统 docker安装在虚拟中
	// 所以地址填的是虚拟机ip
	config = clientv3.Config{
		Endpoints: []string{"192.168.99.100:2379"},
		DialTimeout: 5 * time.Second,
	}

	if client, err = clientv3.New(config); err != nil {
		// 只是测试一下,有错误就直接panic吧
		panic(err)
	}

	_, err = client.Put(context.TODO(), "/user/Roki", "hello! etcd")
	if err != nil {
		panic(err)
	}

	response, err := client.Get(context.TODO(), "/user/Roki")
	if err != nil {
		panic(err)
	}

	for _, kv := range response.Kvs {
		fmt.Println(string(kv.Key), string(kv.Value))
	}
}

复制代码

运行结果:

 

可以看见,写入和读取操作都成功了~ 这次到这就结束啦,下篇玩一玩基于目录结构的遍历,以及数据监听等操作。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值