码农知识堂 - 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有相应的实现
     

  • 相关阅读:
    【已连接kafka成功】Kafka生产者初始化
    文件相关的操作------Python
    Jina 近期更新
    在pytorch中对于张量维度的理解
    当事务遇上分布式锁
    Solidity入门1: 3. 函数类型
    手机也可以搭建个人博客?安卓Termux+Hexo搭建属于你自己的博客网站【cpolar实现公网访问】
    楼市越来越冷,业主们能否靠出租增值?
    ue5创建地图瓦片
    举一个 web worker 的例子
  • 原文地址: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号