Golang的分布式锁组件,支持Reids,Pgsql或自定义驱动

栏目: Go · 发布时间: 6年前

内容简介:通用的Golang分布式锁组件,项目地址:若有意向贡献未完成的驱动代码,请通过配置项

通用的Golang分布式锁组件,项目地址: https://github.com/go-locks/d... ,更多使用案例详见 examples

Driver列表

若有意向贡献未完成的驱动代码,请通过 ISSUES 或 邮箱 249008728@qq.com 联系我

Driver 代码完成度 测试完成度 依赖包 使用说明
redis 100% 100% letsfire/redigo 详见 README.md
pgsql 100% 100% lib/pq 详见 README.md
etcd 未完成 未测试 etcd/client 详见 README.md
etcdv3 未完成 未测试 etcd/clientv3 详见 README.md

方法说明

配置项 mutex.OptFunc 以及返回值锁的使用详见 mutex/README.md

  • NewMutex(name string, optFuncs ...mutex.OptFunc) (*mutex.Mutex, error)

创建互斥锁,若 name 已用于创建读写锁则返回 error ,本方法单例模式

  • NewRWMutex(name string, optFuncs ...mutex.OptFunc) (*mutex.RWMutex, error)

创建读写锁,若 name 已用于创建互斥锁则返回 error ,本方法单例模式

注意事项

  • 不可重入(如果您有强烈的需求场景,请通过 ISSUES 提供反馈)
  • 非公平锁(Golang的本地锁 sync.Locker 视乎也不是公平锁,若您有需求或建议,请通过 ISSUES 提供反馈)
  • 有互斥锁 mutex 和 读写锁 rwmutex 两种类型,具体支持程度详见各个 Driver 对应的 README.md
  • 本人项目经验少,实现过程难保欠缺一些场景的考虑,望大家见谅,若能通过 ISSUES 提供反馈则感激涕零
  • 虽有完整的单元测试,但暂未经过实际项目考验,故慎用于生产环境,如有问题请通过 ISSUES 来共同完善

项目结构

  • 主线调用层级为 distlock.go -> mutex.go -> driver.go
  • distlock.go 提供了创建锁的工厂类,单例模式(相同名称的锁有且仅有一个,有且仅为一种)
  • mutex.go 提供了各类锁的实现,欢迎各位同学贡献其他类型锁,详见 mutex/README.md
  • driver.go 提供驱动接口的定义,欢迎各位同学贡献其他驱动,详见 driver/README.md

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

The Web Designer's Idea Book

The Web Designer's Idea Book

Patrick Mcneil / How / 2008-10-6 / USD 25.00

The Web Designer's Idea Book includes more than 700 websites arranged thematically, so you can find inspiration for layout, color, style and more. Author Patrick McNeil has cataloged more than 5,000 s......一起来看看 《The Web Designer's Idea Book》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具