当前位置: 首页 > news >正文

干货分享:如何让锁变的更加安全?

我们来看下面的例子:如下图所示,客户端在时间点 S0 尝试去抢锁,在时间点 S1 在后端抢锁成功,因此也产生了一个分布式锁的有效期窗口。在有效期内,时间点 S2 做了一个访问存储的操作,很快完成,然后在时间点 S3 判断锁的有效期依旧成立,继续执行访问存储操作,结果这个操作耗时良久,超过了分布式锁的过期时间,那么可能这个时候,分布式锁已经被其他客户端抢占成功,进而出现两个客户端同时操作同一批数据的可能性,这种可能性是存在的,虽然概率很小。

针对这个场景,我们也是有方案可以应对的,在操作数据的时候确保有足够的锁有效期窗口,当然如果业务本身提供回滚机制的话,那么方案就更加完备,该方案也在存储产品使用分布式锁的过程中被采用。不过,我们还要继续探讨我们认为的最佳方案:存储系统本身引入 IO Fence 能力。这里就不得不提 Martin Kleppmann 和 redis 的作者 antirez 之间的讨论了,redis 为了防止异步复制导致的锁丢失的问题,引入了 redlock ,该方案引入了多数派的机制,需要获得多数派的锁,最大程度的保证了可用性和正确性,但仍然有两个问题:

  • 墙上时间的不可靠( NTP 时间)
  • 异构系统的无法做到严格正确性

墙上时间可以通过非墙上时间 Monotonic 来解决( redis 目前仍然依赖墙上时间),但是异构的设计的只依靠单个系统无法保证完全正确,如下图七所示,Client1 获取了锁,在操作数据的时候发生了 GC ,在 GC 完成时候丢失了锁的所有权,造成了数据不一致。

因此我们需要两个系统同时协作来完成一个完全正确的互斥访问,在存储系统引入 IO Fence 能力,如下图所示,全局锁服务提供全局自增的 token ,Client1 拿到锁返回的 token 是 33 ,并带入存储系统,发生 GC ,当Client2 抢锁成功返回 34 ,带入存储系统,存储系统会拒绝 token 较小的请求,那么经过了长时间full gc重新恢复后的 Client 1 再次写入数据的时候,因为存储层记录的 Token 已经更新,携带 token 值为 33 的请求将被直接拒绝,从而达到了数据保护的效果( chubby 的论文中有讲述,也是 Martin Kleppmann 提出的解决方案)。

http://www.rkmt.cn/news/1480936.html

相关文章:

  • 2026无锡黄金回收实力榜单:六家经营超八年优选 - 商业快讯早知道
  • 技术笔记:20260607
  • 从扩散模型到多模态融合:AIGC生成范式的演进与未来架构解析
  • openLCA 2.6.2:开源生命周期评估软件的完整使用教程
  • 5个抖音下载能力单元:从单视频到用户主页的完整技术方案
  • ComfyUI IPAdapter Plus深度配置指南:从模型加载到性能调优的完整解决方案
  • 终极指南:如何通过Universal SafetyNet Fix解决Android Root设备完整性认证问题
  • Android设备完整性验证:构建企业级安全防护体系
  • 别再死记硬背了!用‘棋盘与米粒’和‘哈夫曼编码’的故事,5分钟搞懂二叉树为什么这么快(O(log n))
  • 2026无锡跑网约车赚钱秘诀!选滴滴直营正规租车,低门槛高收益 - 速递信息
  • KeyboardChatterBlocker:终极免费解决方案,彻底告别机械键盘连击烦恼
  • 嵌入式C语言RMS实时计算模块,256点滑动平均可配,低内存高响应
  • 甘肃想报考书法教育培训教师?手把手解答书法从业者最常见的七个问题及正规报考机构推荐 - 教育推荐官【官方】
  • 终极指南:3分钟掌握Godot游戏资源解包神器
  • 5分钟永久激活Windows和Office:KMS智能激活工具全攻略
  • 市面上有哪些是真正安全的降AIGC工具(告别论文AI标记风险)
  • 大模型RAG工程化:从Y=f(X;ω)公式拆解四大输入变量
  • Flameshot:让截图工作流变得轻松高效的开源神器
  • COM3D2.MaidFiddler:5分钟快速上手实时角色编辑完整指南
  • 3分钟解锁你的音乐自由:NcmpGui极速转换工具完全指南
  • 2026 云浮漏水维修全攻略|苏易修缮:厨卫 / 阳台 / 外墙 / 屋顶 / 地下室|靠谱防水门店 - 苏易修缮
  • NRF51822串口通信实战:从硬件连接到中断驱动框架设计
  • 如何实现Windows硬件指纹伪装:EASY-HWID-SPOOFER技术深度解析
  • CSDN AI单次发文可行性白皮书(2024.06权威版):基于217次HTTP状态码抓包分析,仅剩2种合法路径
  • LabVIEW读取带汉字的Excel表格,别再手动转.txt了!用报表工具一步到位
  • 1.初识Redis
  • 从ROM到Flash:非易失存储器的核心原理与工程选型指南
  • 别人都在拼Token单价,华为云为什么选了“第三条路“?
  • 如何高效使用LOIC网络压力测试工具:从入门到实战的完整指南
  • 停用CSDN AI数字营销后文章权重回落真相(百度站长平台+Search Console双源数据验证)