常见面试题20

简介: 分布式锁适用于共享资源互斥、防止重复操作、控制并发流量等场景,常见于超卖防控。可通过数据库、Redis(如Redisson)、ZooKeeper实现,其中Redisson适合高并发,ZooKeeper保证强一致性。

什么场景下要使用分布式锁

分布式锁在以下场景中非常有用:

  1. 共享资源的互斥访问
  1. 当多个分布式节点需要同时访问某个共享资源(例如数据库、文件系统)时,为了保证数据的一致性和避免冲突,可以使用分布式锁来确保同一时间只有一个节点能够访问该资源。
  1. 避免重复操作
  1. 在某些情况下,需要防止重复操作,即同一个任务在分布式环境中只能被执行一次。使用分布式锁可以确保只有一个节点能够成功获取锁并执行任务,其他节点则被阻塞或放弃执行。
  1. 控制并发流量
  1. 在高并发环境下,为了避免系统资源耗尽,可以使用分布式锁来控制并发流量。只有获取到锁的节点才能执行某个操作,其他节点需要等待锁释放后才能继续执行。
  1. 避免竞态条件
  1. 当多个节点同时进行某个操作时,可能会产生竞态条件(Race Condition),导致数据不一致或者错误的结果。通过使用分布式锁,可以在关键的操作中保持原子性,避免竞态条件的发生。
  1. 任务调度与协调
  1. 在分布式任务调度中,可以使用分布式锁来协调任务的执行顺序和避免重复执行。只有获取到锁的节点才能执行任务,其他节点需要等待或者跳过。

更常见的场景是:防止超卖 问题

分布式锁的实现方案有哪些

  1. 基于数据库的分布式锁
  1. 可以利用数据库的唯一性约束或者悲观锁来实现分布式锁。通过在数据库中创建一个表或者记录,利用事务的特性来确保锁的唯一性。
  1. 基于 Redis 的分布式锁
  1. 使用 Redis 的 SETNX(SET if Not eXists)指令来实现简单的分布式锁。通过在 Redis 中设置一个键值对表示锁,利用原子操作来确保锁的互斥性。或者直接采用 redisson 客户端;
  1. 基于 ZooKeeper 的分布式锁
  1. 利用 ZooKeeper 的临时顺序节点和 Watch 机制来实现分布式锁。通过创建临时顺序节点来竞争锁,同时利用 Watch 机制监听节点变化来实现分布式锁的释放和获取。

如何选择分布式锁方案

1、redisson:可以使用在并发高,性能要求高的场景;

2、zookeeper:采用cp模式保证高可靠性,对于更高要求绝对可靠的场景;

redisson分布式锁如何应用

在 Redisson 中使用分布式锁通常包括以下步骤:

  • 创建 Redisson 客户端连接到 Redis 服务器。
  • 通过 Redisson API 获取分布式锁对象。
  • 在关键代码段中使用分布式锁的加锁和解锁方法来控制对共享资源的访问。

如何实现分布式锁的可重入

可重入锁意思:是对于同一线程可以多次获取锁;那不同线程之间同一把锁不能重复获取怎么保证线程可重入获取锁呢?

解决:我们可以通过维护当前持有锁的计数来实现可重入功能。

  • 加锁的时候,因为保存了锁的线程标识,后续再次获取锁,先看是否是同一个线程,如果是的话只对锁计数进行递增
  • 解锁时,对锁计数进行递减,同时刷新锁的过期时间。如果计数为 0,最终才释放锁
目录
相关文章
|
1月前
|
云栖大会
阿里云产品九月刊来啦
2025云栖大会重磅合集,阿里云各产品重大升级发布
135 23
|
22天前
|
机器学习/深度学习 编解码 文字识别
医疗票据OCR图像预处理:印章干扰过滤方案与代码实现
医疗票据OCR技术能自动提取票据中的关键信息,但在实际应用中面临多重挑战。首先,票据版式多样,不同医院、地区的格式差异大,需借助动态模板匹配技术来应对。其次,图像质量参差不齐,存在褶皱、模糊、倾斜、印章遮挡等问题,常通过超分辨率重建和图像修复算法处理。此外,手写体识别、复杂业务逻辑理解(如医疗术语和费用规则)以及数据安全与隐私合规要求也是技术难点。 为应对这些挑战,快瞳系统采用“OCR基础识别 + NLP语义修正”的混合架构,并结合深度学习模型(如CRNN、Transformer)来提升准确率和泛化能力。该技术能显著提升医保报销、保险理赔等场景的效率,是推动医疗信息数字化管理的重要工具。
|
1月前
|
人工智能 自然语言处理 安全
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
AI兴起催生“氛围编程”——用自然语言生成代码,看似高效实则陷阱。它让人跳过编程基本功,沦为只会提示、不懂原理的“中间商”。真实案例显示,此类项目易崩溃、难维护,安全漏洞频出。AI是技能倍增器,非替代品;真正强大的开发者,永远是那些基础扎实、能独立解决问题的人。
154 11
氛围编程陷阱:为什么AI生成代码正在制造大量"伪开发者"
|
26天前
|
Devops Shell Linux
【Azure Developer】使用Azure Developer CLI (azd)部署项目时候遇见无法登录中国区Azure的报错
使用Azure Developer CLI(azd)部署Aspire应用至Azure中国时,因1.20.0版本存在认证端点解析问题,导致登录失败。错误提示为OIDC发现URL不匹配。通过回滚至1.19.0版本并重新登录,可成功解决该问题。
194 14
|
1月前
|
缓存 运维 监控
《SaaS网关多租户治理:从串流到稳控的实践》
本文记录某制造集团SaaS协同平台API网关多租户治理的重构实践。初代网关因依赖“路径前缀+静态IP映射”,在租户增至8家(含3家私有云部署)后,爆发数据串流、混合云适配差、个性化需求迭代慢、故障定位难四大问题。通过搭建“租户元数据+动态路由表”双层隔离机制解决串流,设计多维度决策的混合云路由策略引擎降低转发延迟,构建配置化规则引擎实现零代码定制,并攻克缓存穿透、路由断连、规则冲突三大细节难题。最终租户串流率归零,混合云路由延迟降45%,规则生效时间从2天缩至10秒。
164 9
《SaaS网关多租户治理:从串流到稳控的实践》
|
1月前
|
人工智能 自然语言处理 JavaScript
利用MCP Server革新软件测试:更智能、更高效的自动化
MCP Server革新软件测试:通过标准化协议让AI实时感知页面结构,实现自然语言驱动、自适应维护的自动化测试,大幅提升效率,降低脚本开发与维护成本,推动测试左移与持续测试落地。
|
1月前
|
运维 监控 异构计算
142_故障容错:冗余与回滚机制 - 配置多副本的独特健康检查
在大语言模型(LLM)的生产环境部署中,系统的可靠性和稳定性至关重要。随着LLM应用场景的不断扩展,从简单的文本生成到复杂的多模态交互,用户对服务可用性和响应质量的要求也日益提高。据2025年最新的AI服务可用性报告显示,顶级AI服务提供商的SLA(服务级别协议)承诺已达到99.99%,这意味着每年的计划外停机时间不得超过52.56分钟。
|
1月前
|
资源调度 监控 测试技术
《SaaS多租户实战指南:从灰度发布到故障容错的全链路架构设计》
本文聚焦企业级团队协作SaaS应用的多租户架构迭代实践,针对租户规模差异大、资源冲突、定制化与标准化矛盾等核心痛点展开。初期简易多租户模式因资源共享导致故障后,作者重构架构:采用“独立数据库+共享数据库+租户标识”的混合隔离方案,解决数据隔离与成本平衡问题;搭建基于租户画像的弹性资源调度体系,通过预测式调度与实时调整提升资源利用率;以“核心标准化+定制插件化”架构,缩短定制需求响应时间;构建分层灰度发布与故障容错机制,将版本故障发生率大幅降低。最终总结出SaaS多租户架构需“以租户为中心”,在隔离、共享、定制间找到精细化平衡点的核心经验。
173 6
|
1月前
|
机器学习/深度学习 人工智能 监控
143_成本优化:Spot实例与预留实例云资源节省计算详解与最佳实践
在云原生时代,成本优化已成为企业IT基础设施管理的核心挑战之一。随着AI和机器学习工作负载的激增,云资源成本占企业IT预算的比例持续上升,如何在保证服务质量的同时实现显著的成本节约,成为技术团队面临的紧迫问题。根据最新的Datadog云成本报告显示,截至2025年,平均有83%的容器支出被闲置资源浪费,而GPU实例支出在过去一年中增长了40%,已占计算成本的14%。在这样的背景下,深入理解和应用Spot实例和预留实例等成本优化策略,对于任何使用云服务的组织都具有重大的经济意义。