位置: 编程技术 - 正文

高并发系统数据幂等的解决方案(高并发数据库解决方案)

编辑:rootadmin

推荐整理分享高并发系统数据幂等的解决方案(高并发数据库解决方案),希望有所帮助,仅作参考,欢迎阅读内容。

文章相关热门搜索词:怎么处理高并发数据,高并发数据处理,怎么处理高并发数据,高并发数据库解决方案,高并发数据处理,高并发系统如何设计,高并发系统数据怎么处理,高并发系统数据怎么处理,内容如对您有帮助,希望把文章链接给更多的朋友!

前言

在系统开发过程中,经常遇到数据重复插入、重复更新、消息重发发送等等问题,因为应用系统的复杂逻辑以及网络交互存在的不确定性,会导致这一重复现象,但是有些逻辑是需要有幂等特性的,否则造成的后果会比较严重,例如订单重复创建,这时候带来的问题可是非同一般啊。

什么是系统的幂等性

幂等是数据中得一个概念,表示N次变换和1次变换的结果相同。

高并发的系统如何保证幂等性?

1.查询

查询的API,可以说是天然的幂等性,因为你查询一次和查询两次,对于系统来讲,没有任何数据的变更,所以,查询一次和查询多次一样的。

2.MVCC方案

多版本并发控制,update with condition,更新带条件,这也是在系统设计的时候,合理的选择乐观锁,通过version或者其他条件,来做乐观锁,这样保证更新及时在并发的情况下,也不会有太大的问题。

高并发系统数据幂等的解决方案(高并发数据库解决方案)

例如:update table_xxx set name=#name#,version=version+1 where version=#version# ,或者是 update table_xxx set quality=quality-#subQuality# where quality-#subQuality# >= 0 。

3.单独的去重表

如果涉及到的去重的地方特别多,例如ERP系统中有各种各样的业务单据,每一种业务单据都需要去重,这时候,可以单独搞一张去重表,在插入数据的时候,插入去重表,利用数据库的唯一索引特性,保证唯一的逻辑。

4.分布式锁

还是拿插入数据的例子,如果是分布是系统,构建唯一索引比较困难,例如唯一性的字段没法确定,这时候可以引入分布式锁,通过第三方的系统,在业务系统插入数据或者更新数据,获取分布式锁,然后做操作,之后释放锁,这样其实是把多线程并发的锁的思路,引入多多个系统,也就是分布式系统中得解决思路。

5.删除数据

删除数据,仅仅第一次删除是真正的操作数据,第二次甚至第三次删除,直接返回成功,这样保证了幂等。

6.插入数据的唯一索引

插入数据的唯一性,可以通过业务主键来进行约束,例如一个特定的业务场景,三个字段肯定确定唯一性,那么,可以在数据库表添加唯一索引来进行标示。

这里有一个场景,API层面的幂等,例如提交数据,如何控制重复提交,这里可以在提交数据的form表单或者客户端软件,增加一个唯一标示,然后服务端,根据这个UUID来进行去重,这样就能比较好的做到API层面的唯一标识。

7.状态机幂等

在设计单据相关的业务,或者是任务相关的业务,肯定会涉及到状态机,就是业务单据上面有个状态,状态在不同的情况下会发生变更,一般情况下存在有限状态机,这时候,如果状态机已经处于下一个状态,这时候来了一个上一个状态的变更,理论上是不能够变更的,这样的话,保证了有限状态机的幂等。

标签: 高并发数据库解决方案

本文链接地址:https://www.jiuchutong.com/biancheng/318929.html 转载请保留说明!

上一篇:SQL Server数据表字段自定义自增数据格式的方法(sql server数据表的关联)

下一篇:SQL查询服务器硬盘剩余空间(sql查询服务器硬件信息)

  • 小企业会计准则是什么意思
  • 公司购买员工意外保险费会计分录未收到发票
  • 应付职工薪酬在资产负债表怎么填
  • 长期待摊一般摊几年
  • 报税显示税款入账未到账
  • 员工备用金期末未报销怎么处理
  • 土地使用权分割转让依据
  • 电子承兑汇票如何撤回
  • 从小规模取得3%农产品进项税额抵扣
  • 事业专款支出形成的固定资产如何入账?
  • 母子公司往来款属于借款吗
  • 事业单位发生管理费用
  • 被辞退还有退休金吗
  • 计提工资需要工资表吗
  • 红冲增值税专用发票需要收回原发票吗
  • 内账价税分离余额怎么处理
  • 税控设备维修费怎么算
  • 所得税税负率是多少
  • 劳务公司的税率是多少经营模式
  • 房地产企业收到定金 什么时候交增值税 账务处理
  • 企业更换银行卡意味着什么
  • 购进原材料影响营业利润吗
  • 行政单位发票报销的签字程序
  • 子公司之间固定资产划转 增值税会计处理
  • windows10如何设置密码
  • 以前年度应付款项怎么调账
  • 建筑公司可以开劳务吗
  • 模具维修费做什么费用
  • 建筑业 分包
  • php 反射
  • 电脑bios错误怎么办
  • 房地产企业开发成本
  • 房地产企业销售无产权车位
  • php字符串赋值
  • 代开专用发票缴纳增值税需要计提吗?
  • 应收票据包括哪些支票
  • pacis.exe - pacis是什么进程 有什么用
  • 企业研发费用的归集
  • 企业的生产环节
  • 被白雪覆盖的彩虹歌词
  • 小型微利企业所得税优惠政策2023
  • html/css/javascript标准教程
  • python每行输出五个且对齐
  • 车辆转让后的责任谁承担
  • 如何更改电子税务局办税人员
  • 社保费已扣为什么显示欠缴
  • 公允价值变动收益是指什么
  • 公司盖厂房没有票要交税吗?
  • mysql密码忘记了咋办
  • 无偿提供房屋使用证明有什么后果
  • 个税手续费返还计入哪个科目
  • 外贸进项税额怎么算
  • 职工教育经费可以冲回吗
  • 核定征收一般纳税人进项是否可抵扣
  • 个税的缴纳期数是什么
  • 转让专利权收入属于什么收入
  • 生产成本如何做核算
  • 免费样品的好处
  • 外聘人员差旅费用无票调增
  • 印花税需要计提吗2023
  • 收到党支部经费如何做账
  • 其他应收款贷方余额怎么调整
  • 公示信息有误如何修改
  • 明细账怎么订起来
  • 企业发生存货盘盈时计入营业外收入科目
  • sqlserver1053怎么解决
  • windows vista pe
  • linux修改yum
  • windows10更新最新版本
  • 在win8下能直接装win7吗
  • win7旗舰版安装教程u盘
  • OpenGL Tips: 在Visual C++中调用FreeGLUT
  • Building Unity3D Plugins for Android
  • nodelink
  • jQuery中的AjaxSubmit使用讲解
  • python 的多线程
  • js触发select下拉列表
  • 电子税务网没开通怎么办
  • 怎么查税务是否注销成功
  • 怎样在网上税务局个人发票能开10万以上?
  • 免责声明:网站部分图片文字素材来源于网络,如有侵权,请及时告知,我们会第一时间删除,谢谢! 邮箱:opceo@qq.com

    鄂ICP备2023003026号

    网站地图: 企业信息 工商信息 财税知识 网络常识 编程技术

    友情链接: 武汉网站建设