数据一致性

14 篇文章 0 订阅

在高并发的场景里,如何保证一个业务事务的数据一致性非常重要

在高并发的业务场景中通常出现这样的现象

T1读数据B(sql1)

T2读数据B(sql2)

T1修改数据B(sql3)(数据库会自动对事务加上排他锁)

T2修改数据B(sql4)(数据库会自动对事务加上排他锁)

在这样的场景中通常会出现几种情况:

1、不加锁的条件下,T2修改产生脏数据。或者当T2修改以查询的结果为条件则修改失败(分布式系统容易导致数据不一致)

2、在数据库层面(sql1、sql2)加上共享锁时,通常容易致使sql3无法执行,由于sql1、sql2,都对统一数据加上共享锁,但是在修改时都无法对数据加上排他锁导致业务产生死锁情况,导致程序崩溃

3、对于第二种情况的,解决方案有,在程序业务处理的过程中T1在读取数据的时候手都对数据B加上排他锁,因此程序当业务T2进入处理程序时,也会对数据B加排他锁,但是T1业务还在进行没有是否锁,T2进出便会挂起等待T1的事务进行完成,(但是在分布式的系统中由于一个业务由多服务,多数据库事务组成,无法做到对事物的统一管理)

4、在单机的业务环境下,通常可以通过代码业务层面解决,高并发产生的数据问题。具体解决方案为对可能产生高并发的业务处理代码快加上程序锁,使其在做业务处理的时候,由多线程的业务转化成单线程的业务

 但是这种情况,仅限于再请求量处理及时的情况下才能使用,一旦有大量的请求涌进,由于单线程的业务处理无法及时,系统拥堵量过大导致系统崩溃,

5,鉴于4的解决方案在系统处理效率的牺牲比较大不可取,于是可以采用将单线程业务,使用mq机制将所有的请求统一放入一个一队列中,使其业务在处理的时候通过mq的排队机制进行处理,当mq队列过大的时候,可以在处理mq里面的业务时,通过多线程的业务方式提高系统的效率,但对统一数据操作时需要,保证,该数据不存在正在处理的线程(存在并发风险)

6、使用redis分布式锁,来提高单线程处理效率低下的问题,具体解决方案为。当一个业务处理进来时,程序会对业务处理的主体表数据,获取一个锁,并保存在redis中,(当redis中已存在该数据的锁时,程序会进入一个不断获取锁的机制,直至获取到锁,并获取对数据的操作权限),从而提高系统的处理效率,以及业务数据的一致性

 redis锁实现方式:

JedisPoolConfig 继承Java通用对象池GenericObjectPool

 

 

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
一. 课程介绍本课程结合Python进行统计与数据分析的原理讲解与实战,涵盖了大部分统计&数据分析模型,特别是当前比较主流的算法:参数估计、假设检验、线性回归、广义线性回归、Lasso、岭回归、广义可加模型、回归样条等;机器学习经常用到的主成分分析、因子分析、典型相关分析、聚类分析等;各种非参数统计模型,包括非参数统计推断、尺度推断、位置推断、非参数核密度估计、非参数回归等。本课程主要针对有一定Python编程基础、即将毕业参加工作的的大三大四学生,或者已经参加工作需要提升自己数据分析能力以及转行从事IT行业尤其是数据&大数据分析工作的初入职场者,或者正在攻读硕博士学位需要学习和掌握量化研究方法的研究生。本课程对于即将从事机器学习、深度学习&人工智能相关工作的程序员也有很大帮助,有利于打好坚实的理论基础。二. 课程目录第0章 课程导学第1章 数据描述性分析1.1 描述统计量1.2 数据的分布1.3 概率分布函数的图形1.4 直方图、经验分布函数与QQ图1.5 多元数据数据特征与相关性分析1.6 多元数据的基本图形表示第2章 参数估计2.1 点估计2.2 区间估计第3章 假设检验3.1 基本原理3.2 参数检验第4章 回归分析4.1 回归分析的概念与一元线性回归4.2 多元线性回归及统计量解析4.3 逐步回归与模型选择4.4 回归诊断4.5 广义线性回归4.6 非线性回归第5章 方差分析5.1 单因素方差分析5.2 双因素方差分析第6章 判别分析与聚类分析6.1 判别分析6.2 聚类分析第7章 主成分分析、因子分析与典型相关分析7.1 主成分分析7.2 因子分析7.3 典型相关分析第8章 非参数统计8.1 经验分布和分布探索8.2 单样本非参数统计推断8.3 两独立样本的位置与尺度判断8.4 多组数据位置推断8.5 分类数据的关联分析8.6 秩相关与分位数回归8.7 非参数密度估计8.8 一元非参数回归三. 讲师简介主讲人李进华博士,本、硕、博皆就读于武汉大学信息管理学院,2005年获博士学位进入211高校任教,2012年受聘为教授。从事信息管理与数据分析方面的教学、科研与系统开发工作20余年,具备深厚理论修养和丰富实战经验。是中国最早从事Java开发的程序员和Oracle数据库的DBA之一。曾带领团队开发《葛洲坝集团三峡工程指挥中心三期工程施工管理系统》、《湖北省财政厅国有企事业单位资产管理系统》等大型MIS。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值