首页 > 其他分享 >微服务或分布式场景,如何设计和使用分布式锁

微服务或分布式场景,如何设计和使用分布式锁

时间:2023-07-16 13:35:36浏览次数:29  
标签:加锁 redis redission 命令 场景 设计 分布式

光谈论方式的话,太多了,数据库、jvm内存、redis、zookeeper都可以,最常用的是基于redis实现的redission框架

 

核心原理众多博客讲的很清楚,面试说个大概应该没问题了

第一点,用的reids的setex命令,因为这个命令是原子操作,不会在设置锁的过程中出现意外

第二点,锁过期问题,redission的解决方案是启用监控线程对锁进行续签

第三点,集群部署redis自身同步没来得及,或者宕机的情况,用redlock算法顺序加锁,超过半数可以加锁成功

标签:加锁,redis,redission,命令,场景,设计,分布式
From: https://www.cnblogs.com/benjerry/p/17556500.html

相关文章

  • 场景管理器
     usingSystem.Collections;usingSystem.Collections.Generic;usingUnityEngine;usingUnityEngine.Events;usingUnityEngine.SceneManagement;publicclassSceneMager:MonoBehaviour{publicvoidSceneLoad(stringname,UnityActionfun){//同步切换场......
  • 设计模式-法则大全
    SOLID原则:单一职责原则SRP:一个类只负责完成一个职责或功能;要设计粒度小、功能单一的类开闭原则OCP:对扩展开放、对修改关闭;在已有基础上扩展代码(新增模块、类、方法等),而非修改已有代码(修改模块、类、方法等);里式替换LSP:父类定义了函数的“约定”(或者协议),那子类可以改变函数的内......
  • MCU芯片架构设计
    目录1.应用场景主要是I2C\UART\SPI协议2.Cortex-M3MCU成本与工艺选型按照晶圆进行收费,28nm,12寸晶圆,400万美金晶圆是圆形的,die是方形的,会存在浪费productivity-大约是理论数量(晶圆总面积/裸片面积)的50%-60%yield-生产工艺问题导致在晶圆上切出的die存在问题,存在......
  • 易优eyoucms表单验证场景指南
    5.0.4增加hasScene方法用于检查是否存在验证场景可以在定义验证规则的时候定义场景,并且验证不同场景的数据,例如:$rule=['name'=>'require|max:25','age'=>'number|between:1,120′,'email'=>'email',];$msg=['name.require'......
  • 数据库设计 垂直分库 垂直分表
    分析师和研报的数据仅进行了垂直分库,分析师库和研报数据库。 研报信息还进行了垂直分表,研报主题,标题概要,打标的标签,第一署名,提交人等,研报主体内容和和研报相关的机构打分等非主题信息进行垂直分表        ......
  • 芯片设计全流程
    芯片设计全流程(包括每个流程需要用到的工具以及需要参与的工作人员)  设计rtl设计工程师要懂低功耗设计方法,跨时钟域的解决方案,面积,功耗,逻辑综合验证检验rtl级的HDL设计是否实现了Spec需要的功能等;验证工程师要懂设计,能看懂rtl,能够理解设计的各种方法;作为soc验证......
  • 聊聊我认为的分布式、集群实现关键点
    基于常见的中间件(Mysql、ElasticSearch、Zookeeper、Kafka、Redis)等分布式集群设计的机制,自己总结了在在集群设计过程中需要考虑的通用问题。节点通信机制主节点的增加、删除、通信机制。路由算法即数据路由到哪个节点的策略机制。在集群内有多个节点,数据该路由到哪个节点存......
  • Spartacus Product List Page ProductSearchPage Observable 对象的设计明细
    源代码如下:readonlymodel$:Observable<ProductSearchPage>=using(()=>this.searchByRouting$.subscribe(),()=>this.searchResults$).pipe(shareReplay({bufferSize:1,refCount:true}));上面这段代码是基于Angular框架和RxJS库的,RxJS是一个用于处理......
  • RxJs 里的 using operator 的使用场景介绍
    RxJS的using操作符是一种创建可观察对象的方法,它可以处理订阅开始时和结束时的资源分配。这使得using在处理需要清理的资源(如数据库连接、文件句柄或网络连接)时非常有用。using操作符创建一个可观察对象,该对象会在订阅开始时创建一个资源,并在订阅结束时释放该资源。这使得......
  • Rxjs tap 操作符的使用场景介绍
    RxJS的tap操作符是一个非常有用的工具,它允许我们“查看”Observable流中的数据,同时不会对数据流产生任何影响。换句话说,它是一种副作用(sideeffect)操作符,允许我们在不更改主要数据流的情况下执行一些额外的操作,如日志记录、调试或其他副作用。在详细讨论tap操作符的使用场......