码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • JAVA面试题整理《微服务篇》三


    如何实现分布式锁?
    分布式锁:锁独立于每一个服务之外的锁

    数据库:利用主键沖冲突控制一次只有一个线程能获取锁,非阻塞、不可重入、
    Zookeeper分布式锁:zk通过临时节点,解决了死锁的问题,一旦客户端获取到锁之后突然挂掉( session连接断开),那么这个临时节点就会自动删除掉,其他客户端自动获取锁。临时顺序节点解决惊群效应
    Redis分布式锁:setnx,单线程处理网络请求,不需要考虑并发安全性
    实现方式:setnx、radisson、redlock

    setnx:指定的 key 不存在时,才能操作成功,为 key 设置指定的值
    设置锁:给所有服务节点设置相同的key,返回为0、则锁获取失败(防止锁被别人所释放可以设置一个线程的唯一标识)
    删除锁:判断线程唯一标志,再删除

    问题:
    实现的Redis分布式锁,其实不具有可重入性
    存在任务超时问题,锁自动释放(key过期),导致并发问题
    Redis没有实现可重入性及锁续期,可以通过 radisson解决(类似AQS的实现,看门狗监听机制)

    redis多节点数据同步问题:
    redlock:意思的机制都只操作单节点、即使Redis通过 sentinel保证高可用,如果这个 master节点由于某些原因发生了主从切换,那么就会出现锁丢失的情况( redis同步设置可能数据丢失)。 redlock从多个节点申请锁,当一半以上节点获取成功、锁才算获取成功,redission有相应的实现
     

  • 相关阅读:
    Linux驱动【day2】
    从达梦数据库到Oracle数据库的性能测试数据迁移和导入优化
    SpringMVC学习笔记二(获取Cookies、Session和Header、IDEA热部署)
    玩转高并发,17年开发经验架构师,历时三年编写Java高并发三部曲
    如何构建一个 NodeJS 影院微服务并使用 Docker 部署
    洛谷 Array 数论
    【python基础】random模块常用方法讲解
    安达发APS|国货品牌崛起,制造业迎来智能排产新机遇
    web前端 html+css+javascript 绿色的随行旅游网页设计实例 企业网站制作
    删除idea时没有删除缓存文件导致现在下载新版本idea打不开
  • 原文地址:https://blog.csdn.net/hutubiancheng/article/details/125544763
  • 最新文章
  • 攻防演习之三天拿下官网站群
    数据安全治理学习——前期安全规划和安全管理体系建设
    企业安全 | 企业内一次钓鱼演练准备过程
    内网渗透测试 | Kerberos协议及其部分攻击手法
    0day的产生 | 不懂代码的"代码审计"
    安装scrcpy-client模块av模块异常,环境问题解决方案
    leetcode hot100【LeetCode 279. 完全平方数】java实现
    OpenWrt下安装Mosquitto
    AnatoMask论文汇总
    【AI日记】24.11.01 LangChain、openai api和github copilot
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1
正则表达式工具 cron表达式工具 密码生成工具

京公网安备 11010502049817号