后浪笔记一零二四

  1. 使用乐观锁CAS

  2. 分区策略

  3. 使用Saga事务

  4. 消息队列串行化

分布式锁为何被诟病

设计一个在分布式环境下真正安全、可靠、高效的锁服务极其困难,只要是分布式的就得遵循CAP原则。

不可能完全可靠,在极端情况总能出现锁失效:

  • 锁超时: 为了避免死锁,锁通常有租期/超时时间。如果持有锁的客户端因 GC 停顿、网络延迟或处理过慢而未能在超时前完成操作并续约,锁会被自动释放(客户端是感知不到这个事件的),此时另一个客户端可以获取该锁。
  • 脑裂: 在网络分区发生时,如果锁服务集群发生脑裂,可能导致在分裂的两个分区内都认为自己是主,并同时授予同一个锁给不同的客户端。
  • 时钟漂移: 如果实现锁的中心服务集群依赖系统时钟(如设置超时时间、比较时间戳),不同节点间的时钟不一致可能导致锁提前过期或错误地被持有。

绝大部分场景,都用不上分布式锁:

  • 多个微服务不会同时操作同一块内存,只会操作同一个文件同一个数据库表,但是,文件有文件锁,数据库有行锁和表锁。

本文发表于 0001-01-01,最后修改于 0001-01-01。

本站永久域名「 jiavvc.top 」,也可搜索「 后浪笔记一零二四 」找到我。


上一篇 « 下一篇 »

赞赏支持

请我吃鸡腿 =^_^=

i ysf

云闪付

i wechat

微信

推荐阅读

Big Image