当前位置: 首页 > 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.jsqmd.com/news/969215/

相关文章:

  • CSDN AI营销套餐节假日优惠策略深度拆解(2024年Q4价格模型首次公开)
  • 新能源电池包的柔性智能装配质量控制方法
  • 从‘按钮,按钮’到‘一键部署’:聊聊技术决策背后的道德与自动化陷阱
  • 如何用VideoDownloadHelper实现浏览器视频下载的终极解决方案
  • 2026无锡黄金回收实力榜单:六家经营超八年优选 - 商业快讯早知道
  • ‌智慧校园平台报价明细怎么看?这三块费用千万别忽略
  • 双参考网络AI抠图技术:ComfyUI-BiRefNet-ZHO实现高效智能背景去除
  • 技术笔记:20260607
  • 从扩散模型到多模态融合:AIGC生成范式的演进与未来架构解析
  • 支持1/2/3步跨阶的n级楼梯走法枚举工具(含VC6工程与可执行文件)
  • 如何挑选6%AFFF/AR抗溶性水成膜消防泡沫液?浙江金瑞恒低腐蚀更环保 - 品牌速递
  • 大模型评估框架深度解析:从 Benchmark 设计到自动化评测管线的完整工程实践
  • openLCA 2.6.2:开源生命周期评估软件的完整使用教程
  • 5个抖音下载能力单元:从单视频到用户主页的完整技术方案
  • 别再盲目烧钱投流!2024技术B2B获客成本红黑榜:CSDN位列“低成本高信任”唯一A+梯队
  • 装修质量与装修效果选购指南:平衡预算和品质全攻略 - 速递信息
  • 告别模糊地图:用Pix4D和ContextCapture从无人机照片到高清正射影像的完整工作流
  • 2026年座机号码企业认证服务商排行榜 - 企业服务推荐
  • LLM Function Calling 工程化落地:从工具定义到异常容错的生产实践
  • 终极指南:如何通过Universal SafetyNet Fix解决Android Root设备完整性认证问题
  • ComfyUI IPAdapter Plus深度配置指南:从模型加载到性能调优的完整解决方案
  • C#调用工业相机入门:USB/网口相机图像采集的基础实现
  • 别再死记硬背了!用‘棋盘与米粒’和‘哈夫曼编码’的故事,5分钟搞懂二叉树为什么这么快(O(log n))
  • 2026年国内权威聚苯乙烯泡沫保温板厂家实力排行盘点 推荐欧诗德(天津)节能科技有限公司 - 奔跑123
  • 7种字重自由选择:为什么思源宋体是中文设计者的字体革命?
  • Android设备完整性验证:构建企业级安全防护体系
  • 2026无锡跑网约车赚钱秘诀!选滴滴直营正规租车,低门槛高收益 - 速递信息
  • 成都GEO优化怎么做?2026本地GEO搜索优化与代运营落地指南 - 速递信息
  • 告别臃肿系统!Tiny11Builder助你打造轻量级Windows 11开发环境
  • 深度解析CVE-2026-4372:Hugging Face Transformers供应链级RCE漏洞,AI模型安全的至暗时刻