《左耳听风》 学习笔记 day3

69 阅读2分钟

大家好,我是砸锅。一个摸鱼八年的后端开发。熟悉 Go、Lua。今天和大家一起学习架构😊

分布式锁服务是保证分布式互斥操作的关键技术之一,其需要具备安全性、避免死锁和容错性等特点,同时也需要考虑锁服务的选用和解决锁住资源的进程崩溃等问题。在分布式锁服务的设计中,需要给锁一个释放方式,保证服务的高可用和可重入性,并避免死锁问题。总之,分布式锁服务的设计需要满足需求,注重细节,方能发挥最大效益。

一个服务上请求一个标识。如果请求到了,我们就可以操作,操作完后,把这个标识还回去,这样别的进程就可以请求到了。首先,我们需要明确一下分布式锁服务的初衷和几个概念性的问题。如果获得锁的进程挂掉了怎么办?锁还不回来了,会导致死锁。一般的处理方法是在锁服务那边加上一个过期时间,如果在这个时间内锁没有被还回来,那么锁服务要自动解锁,以避免全部锁住。如果锁服务自动解锁了,新的进程就拿到锁了,但之前的进程以为自己还有锁,那么就出现了两个进程拿到了同一个锁的问题,它们在更新数据的时候就会产生问题。对于这个问题,我想说:像 Redis 那样也可以使用 Check and Set 的方式来保证数据的一致性。这就有点像计算机原子指令 CAS(Compare And Swap)一样

此文章为3月Day22学习笔记,内容来源于极客时间《左耳听风》 这门课真的非常好,推荐大家看看