用java实现etcd分布式锁_etcdsync 一个golang的ectd分布式锁实现
etcdsync
介绍
etcdsync is a distributed lock library in Go using etcd. It easy to use like sync.Mutex.
In fact, there are many similar implementation which are all obsolete depending on library github.com/coreos/go-etcd/etcd which is official marked deprecated, and the usage is a little bit complicated. Otherwise this library is very very simple. The usage is simple, the code is simple.
安装
go get -u github.com/zieckey/etcdsync
demo
package main
import (
"log"
"os"
"github.com/zieckey/etcdsync"
)
func main() {
m, err := etcdsync.New("/mylock", 10, []string{"http://127.0.0.1:2379"})
if m == nil || err != nil {
log.Printf("etcdsync.New failed")
return
}
err = m.Lock()
if err != nil {
log.Printf("etcdsync.Lock failed")
} else {
log.Printf("etcdsync.Lock OK")
}
log.Printf("Get the lock. Do something here.")
err = m.Unlock()
if err != nil {
log.Printf("etcdsync.Unlock failed")
} else {
log.Printf("etcdsync.Unlock OK")
}
}
使用docker跑一个etcd
docker run \
-p 2379:2379 \
-p 4001:4001 \
--name etcd \
-v /usr/share/ca-certificates/:/etc/ssl/certs \
quay.io/coreos/etcd:v2.3.0-alpha.1 \
-listen-client-urls http://0.0.0.0:2379,http://0.0.0.0:4001
用java实现etcd分布式锁_etcdsync 一个golang的ectd分布式锁实现相关推荐
- java 显示锁_Java 实现一个自己的显式锁Lock(有超时功能)
Lock接口 package concurency.chapter9; import java.util.Collection; public interface Lock { static clas ...
- Redis 作者 Antirez 讲如何实现分布式锁?Redis 实现分布式锁天然的缺陷分析Redis分布式锁的正确使用姿势!...
Redis分布式锁基本原理 采用 redis 实现分布式锁,主要是利用其单线程命令执行的特性,一般是 setnx, 只会有一个线程会执行成功,也就是只有一个线程能成功获取锁:看着很完美. 然而-- 看 ...
- 锁系列:一、悲观 / 乐观锁原理与运用
一.乐观锁: 不会对资源加锁,只是更新共享资源时,判断是否允许更新. 1.1 CAS(Compare and Swap)思想: 它包含三个操作数:内存位置(V).预期原值(A)和新值(B). 如果内存 ...
- mysql5.7官网直译锁操作优化--并发添加,元数据锁,外部闭锁
8.11.3 Concurrent Inserts 并发插入 MyISAM存储引擎支持并发插入从而来减少对读写对给出表的竞争:如果一张MyISAM表的数据文件没有漏洞存在(也就是在表中删除了中间的行) ...
- 用java实现etcd分布式锁_etcd分布式锁及事务
前言 分布式锁是控制分布式系统之间同步访问共享资源的一种方式.在分布式系统中,常常需要协调他们的动作.如果不同的系统或是同一个系统的不同主机之间共享了一个或一组资源,那么访问这些资源的时候,往往需要互 ...
- 小王,在 Java 中如何利用 redis 实现一个分布式锁服务呢???
作者:杨高超 juejin.im/post/5a4984af6fb9a0450b66bc57 在现代的编程语言中,接触过多线程编程的程序员多多少少对锁有一定的了解.简单的说,多线程中的锁就是在多线程环 ...
- java 分布式任务_一个简单的基于 Redis 的分布式任务调度器 —— Java 语言实现...
折腾了一周的 Java Quartz 集群任务调度,很遗憾没能搞定,网上的相关文章也少得可怜,在多节点(多进程)环境下 Quartz 似乎无法动态增减任务,恼火.无奈之下自己撸了一个简单的任务调度器, ...
- java如何保证redis设置过期时间的原子性_分布式锁用 Redis 还是 Zookeeper
在讨论这个问题之前,我们先来看一个业务场景: 系统A是一个电商系统,目前是一台机器部署,系统中有一个用户下订单的接口,但是用户下订单之前一定要去检查一下库存,确保库存足够了才会给用户下单. 由于系统有 ...
- Java架构-每秒上千订单场景下的分布式锁高并发优化实践!
"上一篇文章我们聊了聊Redisson这个开源框架对Redis分布式锁的实现原理,如果有不了解的兄弟可以看一下:<拜托,面试请不要再问我Redis分布式锁实现原理>. 今天就给大 ...
最新文章
- 在CentOS 6.6上搭建OpenResty 1.9.7.4并输出示例
- 【转】贴片电阻的工作寿命
- 手机版ziperello_Ziperello
- html中怎么使用数字轮播,【求助】页面上显示几个数字,打开html的时候希望能滚动起来...
- 上海经济适用房申请条件
- 【网络流专练一】UVA五题(UVA12125,UVA11082,UVA10983,UVA1306,UVA10735)
- windows.h有哪些函数
- LeetCode 317. 离建筑物最近的距离(逆向BFS)*
- 信息与数据科学国际会议征文通知
- 当包装类的要与基本类型进行比较时候 需要先将包装类降级为基本类型
- java string补空格_Java String字符串补0或空格详解
- c语言do while语句用法6,c语言do while的用法
- mysql中连接运算符_MySQL的运算符
- js 获取对象属性个数
- Bootstrap INSPINIA 2.9.3 – 响应式管理模板
- 深度学习与计算机视觉教程(17) | 深度强化学习 (马尔可夫决策过程,Q-Learning,DQN)(CV通关指南·完结)
- 甩开炎热去15℃的四川秘境度假,这里有藏于田园风景的纯白民宿
- Codeforces Round #521 (Div. 3) E. Thematic Contests(dp)
- 大数据BI可视化基础
- 加密一条保序的数据流