1 zookeeper
-
zookeeper是什么
- 维护分布式环境下各个系统的状态机
- 服务注册,服务发现
- 分布式锁
- 少量关键数据分布式存储
-
zk系统模型
/
├── /api
│ ├── member-api
│ ├── order-api
│ └── product-api
├── /db
│ ├── mysql
│ └── redis
└── /services
├── member-srv
├── order-srv
└── product-srv
-
zk节点类型
- 持久化节点
- 临时节点
- 持久化顺序节点
- 临时顺序节点
-
zk分布式锁
- ZAB一致性协议 - 保证节点状态信息同步
- 临时顺序节点 - 保证每个请求获取锁的线程都能创建节点,且节点编号递增
- 线程与zk连接断开时可以自动删除该线程创建的临时节点,后续线程便可以创建一个最小编号的节点而获取锁
- 获取锁的并发量受限于zk可以承受的节点创建并发量
2 分布式锁 - etcd
-
etcd可以做什么
-
分布式锁原理
- 创建全局唯一待加锁的prefix_lock_key
- 客户端创建lease
- leaseId + prefix_lock_key构成全局唯一session
- opGet获取所有revision

3 分布式锁 - redis
if redis.call(
return redis.call(
else
return 0
end
4 分布式锁 - mysql