Go etcd初探
1.etcd集群的配置
SET IP1_2380=http://127.0.0.1:2380
SET IP1_2379=http://127.0.0.1:2379 SET IP2_2380=http://127.0.0.1:3380
SET IP2_2379=http://127.0.0.1:3379 SET IP3_2380=http://127.0.0.1:4380
SET IP3_2379=http://127.0.0.1:4379 SET SELF_2380=%IP1_2380%
SET SELF_2379=%IP1_2379% etcd -name niub1 -debug -initial-advertise-peer-urls %SELF_2380% -listen-peer-urls %SELF_2380% -listen-client-urls %SELF_2379% -advertise-client-urls %SELF_2379% -initial-cluster niub1=%IP1_2380%,niub2=%IP2_2380%,niub3=%IP3_2380%
创建3个这个脚本,分别改
SET SELF_2380=%IP1_2380%
SET SELF_2379=%IP1_2379%
2、Go测试程序代码
package main import (
"context"
"flag"
"log"
"strings"
"time" "github.com/coreos/etcd/mvcc/mvccpb" "github.com/coreos/etcd/clientv3"
) var (
addr = flag.String("addr", "127.0.0.1:2380", "etcd addr")
) func main() {
flag.Parse() addrs := strings.Split(*addr, ",") cli, err := clientv3.New(clientv3.Config{
Endpoints: addrs,
}) if nil != err {
panic(err)
} defer cli.Close() if _, err := cli.Put(context.TODO(), "haha", "{1,1,3}"); nil != err {
log.Fatal(err)
} {
resp, err := cli.Get(context.TODO(), "haha")
if nil != err {
log.Fatal(err)
}
log.Println("resp=", resp)
} go func() { timer := time.NewTimer(time.Second * )
ticker := time.NewTicker(time.Second * ) for {
select {
case <-ticker.C:
resp, _ := cli.Grant(context.TODO(), )
ctx, _ := context.WithTimeout(context.Background(), *time.Second)
cli.Put(ctx, "node1", `{"addr":"192.168.1.1:9999"}`, clientv3.WithLease(resp.ID))
case <-timer.C:
return
}
}
}() { //watch
rch := cli.Watch(context.Background(), "", clientv3.WithPrefix())
for wresp := range rch {
for _, ev := range wresp.Events {
log.Println(ev)
if ev.IsCreate() {
log.Println("IsCreate")
} else if ev.IsModify() {
log.Println("IsModify")
} else if ev.Type == mvccpb.DELETE {
log.Println("DELETE")
} else if ev.Type == mvccpb.PUT {
log.Println("PUT")
} }
}
} }
3、启动测试
启动时传入参数
Go etcd初探的更多相关文章
- etcd 分布式数据库概念初探
Lease(租约): 其实就是一个定时器.首先申请一个TTL=N的lease(定时器),然后创建key的时候传入该lease,那么就实现了一个定时的key. 在程序中可以定时为该lease续约,也就是 ...
- 初探云原生应用管理(二): 为什么你必须尽快转向 Helm v3
系列介绍:这个系列是介绍如何用云原生技术来构建.测试.部署.和管理应用的内容专辑.做这个系列的初衷是为了推广云原生应用管理的最佳实践,以及传播开源标准和知识.在这个系列文章的开篇初探云原生应用管理(一 ...
- 初探领域驱动设计(2)Repository在DDD中的应用
概述 上一篇我们算是粗略的介绍了一下DDD,我们提到了实体.值类型和领域服务,也稍微讲到了DDD中的分层结构.但这只能算是一个很简单的介绍,并且我们在上篇的末尾还留下了一些问题,其中大家讨论比较多的, ...
- CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探
CSharpGL(8)使用3D纹理渲染体数据 (Volume Rendering) 初探 2016-08-13 由于CSharpGL一直在更新,现在这个教程已经不适用最新的代码了.CSharpGL源码 ...
- 从273二手车的M站点初探js模块化编程
前言 这几天在看273M站点时被他们的页面交互方式所吸引,他们的首页是采用三次加载+分页的方式.也就说分为大分页和小分页两种交互.大分页就是通过分页按钮来操作,小分页是通过下拉(向下滑动)时异步加载数 ...
- JavaScript学习(一) —— 环境搭建与JavaScript初探
1.开发环境搭建 本系列教程的开发工具,我们采用HBuilder. 可以去网上下载最新的版本,然后解压一下就能直接用了.学习JavaScript,环境搭建是非常简单的,或者说,只要你有一个浏览器,一个 ...
- .NET文件并发与RabbitMQ(初探RabbitMQ)
本文版权归博客园和作者吴双本人共同所有.欢迎转载,转载和爬虫请注明原文地址:http://www.cnblogs.com/tdws/p/5860668.html 想必MQ这两个字母对于各位前辈们和老司 ...
- React Native初探
前言 很久之前就想研究React Native了,但是一直没有落地的机会,我一直认为一个技术要有落地的场景才有研究的意义,刚好最近迎来了新的APP,在可控的范围内,我们可以在上面做任何想做的事情. P ...
- 一次基于etcd的分布式锁自动延时失败问题的排查
今天在测试基于etcd的分布式锁过程中,在测试获取锁后,释放之前超出TTL时长的情况下自动延长TTL这部分功能,在延长指定key的TTL时总是返回404错误信息,在对目标KEY更新TTL时目标KEY已 ...
随机推荐
- 【贪心】经营与开发 @upc_exam_5500
目录 经营与开发 @upc_exam_5500 PROBLEM 题目描述 输入 输出 样例输入 样例输出 提示 SOLUTION CODE 经营与开发 @upc_exam_5500 PROBLEM 题 ...
- 1、html基础认识&常用标签(1)
从今天期我们进入前端的学习,先学习html,没有任何复杂难懂的逻辑需要烧脑,只需要记忆.练习.练习.练习. 本篇导航: HTML初识 常用标签介绍 <body>内常用标签 一.HTML初识 ...
- SSE图像算法优化系列八:自然饱和度(Vibrance)算法的模拟实现及其SSE优化(附源码,可作为SSE图像入门,Vibrance算法也可用于简单的肤色调整)。
Vibrance这个单词搜索翻译一般振动,抖动或者是响亮.活力,但是官方的词汇里还从来未出现过自然饱和度这个词,也不知道当时的Adobe中文翻译人员怎么会这样处理.但是我们看看PS对这个功能的解释: ...
- WebApp开发技术搭配
一:Ionic + angular + cordova + zipalign UI框架:lonic+angular 开发与编译打包框架:Cordova 优化工具:zipalign 二:MUI+HBui ...
- [Oracle] “表中有数据,但select count(*)的结果为0”问题的解决办法
一.问题 今天遇到了一个神奇的问题--表中有数据,但select count(*)的结果为0. 这个问题最初的表现形式是"查询报表没有分页". 最开始还以为是java端的问题.后来 ...
- 一个会学习(观察->活学->求变)的人,在任何领域都能变得强大无比
开始今天的话题之前,我说个小故事. 很早以前有一部美剧,叫<Hero>. 大概讲的是正反两派都是一群有超能力的人,彼此为了某个巨大的阴谋互相撕逼了十多集.虽然剧情很老套,但是让 ...
- 关于现在互联网是否还有机会类的价值文章,为什么有人掉进互联网创业的坑里,可能因为ta不懂这些
--也是带着问题看这篇文章的,面临BAT时代的互联网创业者如何带领自己的公司存活成长,本文有些理念很有意思,前辈企业家是抓住机会干企业,现代化是发现问题最先解决干企业,最难的.同仁意愿不强的大问题才 ...
- Effective Java 第三版——62. 当有其他更合适的类型时就不用字符串
Tips 书中的源代码地址:https://github.com/jbloch/effective-java-3e-source-code 注意,书中的有些代码里方法是基于Java 9 API中的,所 ...
- [转]Anatomy of a Program in Memory
Memory management is the heart of operating systems; it is crucial for both programming and system a ...
- Eclipse安装Git插件及简单操作
0. 前言 说一件事,说起来也是好笑,工作三年半了,还没接触到团队开发,都是一个人小打小闹.因此连Git都没有使用过.感觉好Low的,这一篇,简单讲一下,Eclipse配置Git插件,并提交代码到Gi ...