Consul分布式锁原理详解及实例

Consul分布式锁原理详解及实例

现在大型系统为了保证服务高可用,都采用分布式架构提供服务。Consul是一款较zookeepr、etcd等年轻的纯Goland分布式服务架构。其包含多个功能模块服务发现、检查健康、K/V存储、多数据中心等,这里就其分布式锁进行介绍。

Consul分布式锁实现和其K/V存储的特性密切相关。K/V存储在业务中最常见的之一是Redis「基于K/V设计的存储、中间件等等很多,相对Redis是业务开发中接触更普遍的其中一个」,其SetNx可以出色的完成分布式锁的功能。Consul与Redis机制不同,Consul依赖K/V与Session的绑定关系,进而完成互斥锁定。

Session是什么呢/?在Consul中,session的概念和浏览器的session类似,标识本次操作owner,类似句柄。与Node/K-V关联,上游是一Node,下游多个K-V,相关系列函数包含renew、acquire、destroy、create…。
「源码:github.com/hashicorp/consul/[email protected]/session.go」

K-V就是常规键值对,在Consul中,通过Api进行Get-Set。
「源码:github.com/hashicorp/consul/[email protected]/kv.go」

Consul实现分布式锁,准确来讲,和K/V、Session各自功能没什么关联,主要应用的是两者之间的关系。
简单来说,根据Key绑定的Session判断是否可抢占。流程见下图:

你可能感兴趣的:(Go,语言进阶之路,并发(多线程),分布式开发,consul,分布式锁,Consul,K/V)