Go并发编程实战课笔记—Etcd
目录
Go并发编程实战课笔记—Etcd
以下为鸟窝大佬的Go 并发编程实战课 中摘录的笔记
ETCD 提供了较多的分布式并发原语,比如分布式互斥锁、分布式读写锁、Leader选举。
Leader 选举
主从架构的服务节点分为主(Leader、Master)和从(Follower、Slave)两种角色。
主节点通常执行写操作,从节点通常执行读操作,若读写都在主节点而从节点提供备份则主从架构就会退化成主备模式架构。
选主机制就是选择一个节点作为主节点,保证主节点的唯一性从而保证数据的一致性。
选举
有以下和选主相关的提供的方法:
|
|
查询
有以下和查询相关的提供的方法:
|
|
监控
有以下和监控相关的提供的方法:
|
|
互斥锁
主要关注在分布在不同机器中的不同进程内的 goroutine,如何利用分布式互斥锁来保护共享资源。
在同一时刻,分布式互斥锁在所有节点中只允许其中的一个节点持有锁。
Locker
类似于标准库中的 sync.Locker 接口,提供了 Lock/Unlock 的机制:
|
|
Mutex
Mutex 并没有实现 sync.Locker 接口,它的 Lock/Unlock 方法需要提供一个 context.Context 实例做参数,可以得知在请求锁的时候,你可以设置超时时间,或者主动取消请求。
读写锁
ETCD 提供的读写锁,可以在分布式环境中的不同的节点使用。
提供的方法是和功能与标准库中的读写锁一致,分别提供了 RLock/RUnlock、Lock/Unlock方法。
如果持有互斥锁或者读写锁的节点意外宕机了,它持有的锁会被释放。这里我们可以关注对应的 session 相关处理。
etcd 提供的读写锁中的读和写按照实现来说是写锁应该比读锁优先级高。