随笔 - 157  文章 - 0 评论 - 0 阅读 - 40
< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5

1 命名空间

不同服务的锁用不同的namespace来区分,不同元数据服务上锁namespace的名字不同,元数据锁和数据锁的namespace也不同,客户端理论上会向所有的服务发请求,所以客户端的锁分布在不同的namespace下,锁客户端用namespace来组织不同的锁链表.

在这里插入图片描述
分布式锁模块跟元数据服务器中其他模块比较独立,它保存了系统中所有已经向该元数据服务器申请的锁。当有新的锁请求到来时,会直接进入锁申请模块。锁模块会检查该资源上是否已经有锁,并检查锁是否存在冲突,以决定申请的锁是否会被授权。客户端上有专门的锁客户端缓存该客户端已经申请的分布式锁。

2 锁资源

锁资源,就是锁保护的对象。除了文件,还可以对象id等等。一个锁资源对应于一个实际的实体,比如一个文件、一段数据、一个数据库等等,锁资源的对象也决定锁粒度,比如你可以对整个inode加锁,也可以对inode中一个属性加锁,前者的粒度显然比后者粒度粗。

一个锁资源可以拥有多个锁持有它,但是一个锁只能被一个锁资源持有。因此在DLM中,锁资源和锁是1:M关系。

2.1 资源所属命名空间

2.2 锁状态

每个锁资源有三个潜在的锁状态:

  • 已批准:锁请求成功获得其所要求的模式
  • 转换中:client尝试改变的锁模式和新请求的模式与已存在的锁不兼容
  • 阻塞的ÿ
posted on   龙虾天天  阅读(4)  评论(0编辑  收藏  举报  
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」
· C#/.NET/.NET Core技术前沿周刊 | 第 29 期(2025年3.1-3.9)
点击右上角即可分享
微信分享提示