首页 > 其他分享 >开源:Taurus.Idempotent 分布式幂等性锁框架,支持 .Net 和 .Net Core 双系列版本

开源:Taurus.Idempotent 分布式幂等性锁框架,支持 .Net 和 .Net Core 双系列版本

时间:2024-03-05 17:15:23浏览次数:33  
标签:Core 框架 重复 Idempotent Taurus 分布式系统 Net 分布式

分布式幂等性锁介绍:

分布式幂等性框架的作用是确保在分布式系统中的操作具有幂等性,即无论操作被重复执行多少次,最终的结果都是一致的。幂等性是指对同一操作的多次执行所产生的效果与仅执行一次的效果相同。

以下是分布式幂等性框架的主要作用:

  1. 避免重复操作: 在分布式系统中,由于网络延迟、消息重发等原因,可能导致同一个操作被重复执行多次。分布式幂等性框架可以识别并区分重复的操作请求,确保重复的操作不会对系统状态产生额外影响。

  2. 保证系统数据一致性: 通过确保操作的幂等性,分布式系统能够更好地保证数据的一致性。即使操作被重复执行,系统最终的状态也会保持一致,不会因为重复操作而导致数据异常或不一致。

  3. 提高系统的可靠性: 幂等性框架可以提高系统的可靠性和容错性。即使系统在处理请求时发生故障或者部分失败,幂等性框架可以确保系统在恢复后能够正确处理之前的请求,而不会对系统状态造成不可逆转的影响。

  4. 简化系统设计: 引入分布式幂等性框架可以简化系统设计和开发,减少开发人员在处理幂等性逻辑上的工作量,提高系统的可维护性和扩展性。

  5. 增强系统的安全性: 通过保证操作的幂等性,可以降低系统受到恶意攻击或者非法请求的风险,提升系统的安全性。

总体来说,分布式幂等性框架的作用是确保分布式系统中的操作具有幂等性,提高系统的可靠性、一致性和安全性,同时简化系统设计和开发过程。

这些特点使得分布式幂等性框架在构建高可用、高性能的分布式系统中起着重要的作用。

分布式幂等性框架适用于以下一些场景:

  1. 金融支付场景:在金融支付场景中,需要确保同一笔交易只被执行一次,避免重复扣款或转账。通过使用分布式幂等性框架,可以识别并过滤掉已经处理过的交易请求,从而保证交易的幂等性。

  2. 电商订单场景:在电商订单场景中,当用户提交订单时,可能由于网络原因、页面刷新等多种原因导致订单重复提交。通过使用分布式幂等性框架,可以避免重复下单的情况发生,保证订单数据的正确性。

  3. 消息队列场景:在使用消息队列进行异步处理时,可能会出现消息处理失败、重试等情况。通过使用分布式幂等性框架,可以确保同一条消息多次消费时,对系统状态产生的影响是一致的,不会造成数据异常或不一致。

  4. 高并发接口场景:在高并发接口场景中,很容易出现重复请求的情况。通过使用分布式幂等性框架,可以避免重复请求对系统状态产生额外影响,保证接口请求的幂等性。

总之,分布式幂等性框架适用于任何需要保证操作幂等性的场景,能够提高系统的可靠性、一致性和安全性。

框架前言:

之前不久,曾写完分布式锁介绍:开源:Taurus.DistributedLock 分布式锁框架

Taurus.Idempotent 分布式幂等性锁框架,差不多在之后不久,就已完工,毕竟其原理或代码逻辑,大致相同。

只是中间多写了一个:Taurus WebMvc 开发教程,晚了一点,所以今天抽时间把它介绍一下。

Taurus.Idempotent is a Idempotent lock for .net or .net core(支持:File、Redis、MemCache 、Database(十多种数据库) 四类锁)

框架使用简单,开箱即用,下面开始介绍:

1、开源地址:

https://github.com/cyq1162/Taurus.Idempotent

# Taurus.Idempotent 幂等性锁,使用 .Net Core 示例:

2、以 Nuget 中引入运行包:Taurus.Idempotent

3、进行编码:

1、引入名称空间:

using Taurus.Plugin.Idempotent;

2、配置相关项:

1、Database 锁配置:
   IdempotentConfig.Conn = "server=.;database=mslog;uid=sa;pwd=123456";//由数据库链接决定启用什么链接
   IdempotentConfig.TableName = "taurus_idempotent";
2、Redis 锁配置:
  IdempotentConfig.RedisServers = "127.0.0.1:6379";
3、MemCache 锁配置:
  IdempotentConfig.MemCacheServers = "192.168.100.111:11211";

3、根据需要获得对应锁类型:

var dsLock = Idempotent.File;// Get File Lock
var dsLock = Idempotent.Database;// Get DataBase Lock
var dsLock = Idempotent.Redis;// Get Redis Lock
var dsLock = Idempotent.MemCache;// Get MemCache Lock   

4、进行锁、并释放锁:

 string key = "myLock";
 if (dsLock.Lock(key, 30000))
 {
    Console.Write(" -  OK - " + );
 } 

更详细使用见开源地址:/demo 运行示例,运行界面:

总结:

通过引入分布式幂等性框架,可以有效处理分布式系统中的重复操作问题,确保系统稳定运行并保持数据的一致性。

 

标签:Core,框架,重复,Idempotent,Taurus,分布式系统,Net,分布式
From: https://www.cnblogs.com/cyq1162/p/18054417

相关文章

  • .Net项目部署到Docker
    .Net项目部署到Docker环境linuxdocker.Net7步骤编写Dockerfile上传项目文件到linux运行项目文件到docker一、设置项目端口在Program.cs文件设置端口builder.WebHost.UseUrls("http://*:1040");//单个设置二、添加Dockerfile文件点击Docker支持,会弹框选择lin......
  • c# .net winfrom sunnyui的RichTextBox TextBox的KeyPress和KeyDown对Enter按钮无效处
    效果图: 在此之前感谢博主,winform无法屏蔽回车事件、KeyPress事件不执行问题解决-CSDN博客根据该大佬的方式,需处理添加回车事件处理,便继承了RichTextBox重写该方法,且执行了执行事件publicsealedclassMyUIRichTextBox:UIRichTextBox{publicboolLastRow=false;......
  • .Net Core(七) 管道和中间件
    简介管道.NETCore中的管道是一个用于处理HTTP请求的组件。它是ASP.NETCore应用程序的核心部分,负责将传入的HTTP请求传递给适当的处理程序并生成响应。管道由一系列中间件组成,每个中间件都可以对请求或响应进行操作,然后将其传递给下一个中间件或终止请求处理。中间件......
  • 【HMS Core】集成推送服务,打包后应用名乱码
    ​【问题描述】使用flutter进行移动端开发,导入了agconnect-services.json之后,成功集成了华为推送,但是应用打包如果应用名为中文,debug包生成的应用名会是乱码。​​ 【问题分析】1、经推测可能是agc插件与开发者引入的另外的sdk相冲突导致的,但即使去掉其他的sdk也会导致该问......
  • AI应用开发之路-准备:发起一个开源小项目 DashScope SDK for .NET
    今年我们有一个眼高手低的计划,打算基于SemanticKernel+DashScope(阿里云模型服务灵积)+Qwen(通义千问大模型),结合园子已有的产品与应用场景,开发面向开发者的AI应用,并将整个过程与大家分享。目前处于准备阶段,这篇博文分享的是遇到的第一个问题,并由此发起一个小开源项目......
  • 往 netty Channel中写入字符串
    示例代码:EventLoopGroupgroup=newNioEventLoopGroup();Bootstrapbootstrap=newBootstrap();bootstrap.group(group).channel(NioSocketChannel.class).option(ChannelOption.SO_KEEPALIVE,true)......
  • Windows 操作系统中,Internet 协议版本 4 (TCP/IPv4) 的配置信息通常是保存在注册表中
    %SystemRoot%\system32\tcpipcfg.dll%SystemRoot%\system32\drivers\tcpip.sysSystem32\drivers\tcpip.sys%SystemRoot%\System32\wshtcpip.dll%SystemRoot%\System32\mswsock.dll%SystemRoot%\System32\perfnet.dll%SystemRoot%\System32\wsock32.dll......
  • 学习笔记:ST-MetaNet
    UrbanTrafficPredictionfromSpatio-TemporalDataUsingDeepMetaLearning使用深度元学习进行城市交通预测期刊会议:KDD2019论文地址:https://dl.acm.org/doi/10.1145/3292500.3330884代码地址:(mxnet)https://github.com/panzheyi/ST-MetaNet总结感觉这篇论文的元学......
  • asp.net core 中基于策略的授权-自定义授权
    前两篇文章扫盲篇,进阶篇中介绍了基本的asp.netcore中基于策略的授权的使用方法。使用策略授权时,只能指定策略,不能配置其他信息。[Authorize(Policy="AtLeast21")]//指定要验证的策略publicclassAlcoholPurchaseController:Controller{publicIA......
  • NetCore3.1 引入PostgerSql + DbFirst
    十年河东,十年河西,莫欺少年穷学无止境,精益求精1、新建控制台项目PostgreSQLApp,引入如下包<ProjectSdk="Microsoft.NET.Sdk"><PropertyGroup><OutputType>Exe</OutputType><TargetFramework>netcoreapp3.1</TargetFramework></Prope......