分布式服务下的交易一致性解决方案

分布式事务最经典的七种解决方案 前言: 随着业务的快速发展、业务复杂度越来越高,几乎每个公司的系统都会从单体走向分布式,特别是转向微服务架构。随之而来就必然遇到分布式事务这个难题,这篇文章总结了分布式事务最经典的解决方案,分享给大家。 基础理论 在讲解具体方案之前,我们先了解一下分布式事务所涉及到的基础理论知识。 我们拿转账作为例子,A需要转100元给B,那么需要给A的余额-100元,给B的余额+100元,整个转账要保证,A-100和B+100同时成功,或者同时失败。看看在各种场景下,是如何解决这个问题的。 事务 把多条语句作 阅读详情

分布式服务下的交易一致性解决方案

  • 银行很强势,我们什么都不管(1. 调一次,我出款一次; 2. 不提交任何冥等操作)
  • 我们什么都没有(没有分布式事务)
  • 用户只提交一次
  • 我们只能成功一次
一、远程调用与本地事务区分开(别人挂, 我们不挂)
事务方法里面不能创建远程调用

悲观锁
select * from xxx where id = xxx for update;

乐观锁
select version from xxxx where id = xxx;
update xxx set xxx = xxx where id = xxx and version = 'version';

基于状态机的乐观锁
int i = update xxx set status = 4 where id = xxx and status = 1;
i = 1 锁成功, i = 0 锁失败
二、并发问题
数据库锁
三、交易申请
方案 1
@事务{
    结果=调用()
    保存(结果)
}

方案2
@事务{
    锁=锁(订单)
}
if(锁){
    结果=调用();

    @事务{
        保存(结果)
    }
}

方案3 (重点)
@事务{
    锁=锁(订单)
    if(锁){
      申请 = 插入(申请)
    }
}

//============================ 可重复执行, 例如定时任务
if(申请){
    @事务{
        锁 = 锁(申请);
    }
    if(锁){
      结果=调用();
    }
    @事务{
      保存(结果)
    }
}

  ||
  ||

if(申请){
    @事务{
        锁 = 锁(xxx);
    }
    if(锁){
      结果=doxxx();
    }
    @事务{
      保存(结果)
    }
}
四、单例&多线程

两种方式

  1. double check instance
  2. static inner class
SQL Prompt 9.0插件突然无法使用解决办法(附防联网激活)多图+文字 可能由于Redgate公司最近抓盗版抓得严,导致激活后的SQL Prompt联网后突然无法使用,无论卸载重装都没办法继续使用,本人同时使用SQL Assistant和SQL Prompt,我喜欢SQL Assistant代码提示功能,而SQL Prompt我喜欢将查询结果复制后可以直接生产插入脚本,这是最爽的一件事,即便对表有多么熟悉,没有这些插件,几行语法都要敲大半天,目前本人已经离不开这两个插... 阅读详情

相关推荐

告别黑窗口!用VSCode+Native Debug调试C/C++程序,比GDB命令行舒服多了

本文介绍了如何使用VSCode配合Native Debug扩展来调试C/C++程序,替代传统的GDB命令行方式。通过可视化调试环境,开发者可以更高效地管理断点、查看变量和调用栈,大幅提升调试效率。文章详细讲解了环境配置、核心调试功能及高级技巧,帮助开发者快速上手这一现代调试工具。

weixin_26833139的博客 251

服务器与客户端交易数据的一致性解决

数据一致性的TongEASY解决之道 发布时间: 2007-4-16 10:46    作者: 不详    来源: http://www.tongtech.com 字体:  小  中  大  | 上一篇 下一篇 | 打印 ...

verytiny 706

Unity开发微信小游戏,使用Addressables管理游戏资源(本地进行远程测试)

快速构建Unity微信小游戏 使用Addressables管理游戏资源 使用小皮助手在本地进行远程资源加载测试

the_vnas的博客 6391

分布式交易一致性问题

下面是一个订单系统向支付系统发送请求的一个场景: 这是一个极具代表性的例子,用户提交一次请求,订单系统向支付系统发出支付请求并处理回执。通常在开发这种订单交易系统的时候,会遇到几种常见的问题,下面是个人对此的一些总结: 1.支付系统API通常需要一个“订单号”作为入参,而实际调用API接口时使用到的往往不是正在意义上的订单号,而是交易流水号。 这个很好理解,像银行或者其他

onlyyjco的专栏 5392

USB2.0学习1--基本概念

USB全称是 Universal Serial Bus,即通用串行总线,是一种计算机与外围设备进行数据交互的串行通信标准。USB协议是在1994年底由英特尔、IBM、Microsoft等公司联合提出的,现由USB协会(USB-IF)管理。USB使用差分信号来传输数据,具有传输速度快、支持热插拔、连接灵活、独立供电、协议向下兼容等优点,目前应用十分广泛。

原海青木的博客 3761

用Python+OpenCV给斗地主做个‘外挂’:手把手教你写个桌面记牌器(附源码)

本文详细介绍了如何使用Python和OpenCV开发一个智能斗地主记牌器,包括环境搭建、图像采集与预处理、扑克牌识别技术及PyQt5界面设计。通过实战案例,帮助开发者掌握图像处理与界面开发的结合应用,提升游戏辅助工具的编写能力。

weixin_29079643的博客 546

交易域一致性思考

文章目录背景想法业界方案的关注点降低成本的措施依赖分层方案步骤分解方案同步链路异步链路延迟异步链路核心场景 背景 互联网行业为了性能和实现成本考虑,通常追求最终一致性 行业有成熟的解决方案,如seata和衍生品 之前文章里也梳理过柔性事务 对于高速发展的业务,或者依赖历史遗留系统,seata一类的方案有较多限制: 发起方和依赖方需要实现一套协议,业务上不接受过高的改造成本:如AT的RM等接口,TCC的try,commit,cancel 事务状态流转较复杂,接:如seata涉及分支事务和十几种状态机

qq_40369829的博客 921

elegant(ELEctron Generation ANd Tracking)入门指南(1)

elegant (ELEctron Generation ANd Tracking),美国先进光子源(APS)所用的圆环加速器的模拟程。

qq_41106132的博客 1848

分布式事务解决方案

分布式事务的实现主要有以下 5 种方案: XA 方案 TCC 方案 本地消息表 可靠消息最终一致性方案 最大努力通知方案 两阶段提交方案/XA方案 所谓的 XA 方案,即:两阶段提交,有一个事务管理器的概念,负责协调多个数据库(资源管理器)的事务,事务管理器先问问各个数据库你准备好了吗?如果每个数据库都回复 ok,那么就正式提交事务,在各个数据库上执行操作;如果任何其中一个数据库回答不...

湖人•总冠军 1万+

[捷稀 JCG Q30 Pro 刷机说明] 以刷入openwrt24.10为例

摘要: 本文详细介绍了捷稀JCG Q30 Pro路由器刷入OpenWrt 24.10系统的步骤。通过先刷入OpenWrt 23.05过渡固件,再升级Uboot,最后通过TFTP加载工厂镜像完成刷机。关键步骤包括解锁分区、刷写Uboot、进入恢复模式及配置网络。文章还提供了无线设置、Tailscale内网穿透等进阶命令,并附参考文档和固件下载链接。适用于有一定技术基础的玩家,需注意操作风险,严格按流程执行。

贤时间 7144

[自动化工具] 解放双手的利器:「自动邮件平台」工具助你高效搞定重复通知任务

摘要:自动邮件平台是一款零门槛自动化工具,帮助用户高效处理重复性邮件任务。该平台支持两种调度模式(指定日期和间隔天数),无需编码即可快速设置账单提醒、活动通知等任务。提供免费托管版(小时级调度)和自主部署版(分钟级调度),满足不同精度需求。典型应用场景包括客户跟进、系统监控等周期性任务。用户只需三步即可完成设置,还能扩展定制化功能。该工具让非技术人员也能轻松实现邮件自动化,释放时间专注更重要的工作。

每日出拳老爷子的博客 109

保证分布式系统数据一致性的6种方案

编者按:本文由「高可用架构后花园」群讨论整理而成,后花园是一个面向架构师的增值服务,如需了解,请关注「高可用架构」后回复 VIP有人的地方,就有江湖有江湖的地方,就有纷争...

weixin_45583158的博客 1万+

git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案

本文主要介绍了git clone出现fatal: unable to access Failed to connect to github.com port 443: Timed out解决方案,希望能对使用git的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 23万+

分布式系统数据一致性的6种方案(转)

分布式系统数据一致性的6种方案(转) - 问题的起源 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。 在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为...

qq_36118769的博客 320

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

保证分布式系统数据一致性的6种方案(转载)

问题的起源 在电商等业务中,系统一般由多个独立的服务组成,如何解决分布式调用时候数据的一致性? 具体业务场景如下,比如一个业务操作,如果同时调用服务 A、B、C,需要满足要么同时成功;要么同时失败。A、B、C 可能是多个不同部门开发、部署在不同服务器上的远程服务。 在分布式系统来说,如果不想牺牲一致性,CAP 理论告诉我们只能放弃可用性,这显然不能接受。为了便于讨论问题,先简单介绍下数据一...

maguanghui_2012的专栏 305

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

乐观锁限额控制

为了解决并发下的商户限额问题,由于服务是分布式的方式部署在多台服务器上的,故选择乐观锁为解决方案。         即使用数据版本(Version)记录机制实现,这是乐观锁最常用的一种实现方式。何谓数据版本?即为数据增加一个版本标识,一般是通过为数据库表增加一个数字类型的 “version” 字段来实现。当读取数据时,将version字段的值一同读出,数据每更新一次,对此version值加一

大懒熊的博客 930

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

分布式服务化系统一致性的“最佳实干”

原文地址 http://www.jianshu.com/p/1156151e20c8 分布式服务化系统一致性的“最佳实干”   作者 李艳鹏 已关注 2017.03.26 20:37* 字数 13563 阅读 14579评论 22喜欢 126 本文欢迎转载,转载请注明原文链接,并附作者个人信息李艳鹏。 1 背景 一致性是一个

u010753907的博客 382

Java-55 深入浅出 分布式服务 分布式一致性 强一致、弱一致、单调读一致、最终一致

分布式一致性是指多副本系统中各节点对同一数据保持状态一致的能力,是分布式系统的核心难题。为提升可用性与容错性,系统常复制数据至多个节点,但网络延迟、并发冲突、节点故障等因素使得副本同步复杂。为权衡性能与一致性,系统采用不同一致性模型:强一致性确保所有读写严格同步,适用于金融、库存等关键场景;最终一致性牺牲实时性换取高可用性,常用于社交网络、CDN 等;此外还有单调读、因果一致性等变体。实现一致性常借助协议如 Paxos、Raft、Zab。

谢谢你的喜欢 我们一起无限进步 1206

RabbitMQ消息最终一致性解决方案

RabbitMQ消息最终一致性解决方案 随着分布式服务架构的流行与普及,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使用自己单独维护的数据库,它们彼此之间不在同一个事务中,假如A执行成功了,B执行却失败了,而A的事务此时已经提交,无法回滚,那么最终就会导致两边数据不一致性的问题...

weixin_43466542的博客 7350

MQ消息最终一致性解决方案

随着分布式服务架构的流行与普及,原来在单体应用中执行的多个逻辑操作,现在被拆分成了多个服务之间的远程调用。虽然服务化为我们的系统带来了水平伸缩的能力,然而随之而来挑战就是分布式事务问题,多个服务之间使用自己单独维护的数据库,它们彼此之间不在同一个事务中,假如A执行成功了,B执行却失败了,而A的事务此时已经提交,无法回滚,那么最终就会导致两边数据不一致性的问题;尽管很早之前就有基于两阶段提交的XA分...

XuJiangDong 2374

分布式事务一致性解决方案

一、从数据一致性谈起一致性问题,“万恶之源”是数据冗余和分布并通过网络交互+网络异常是常态。1、数据一致性的情形主库、从库和缓存数据一致性,相同数据冗余,关系数据库,为保证关据库的高可用和高性能,一般会采用主从(备)架构并引入缓存。其中数据不一致性存在于数据冗余的时间窗口内。多副本数据之间的数据一致性,相同数据副本,大数据领域,一份数据会有多个副本并存储到不同的节点上。客户端可以访问任何一个节点进...

weixin_33922672的博客 196

分布式事务数据一致性解决方案(一)

1. 从数据一致性谈起   一致性问题,“万恶之源”是数据冗余和分布并通过网络交互+网络异常是常态。 1.1 数据一致性的情形 主库、从库和缓存数据一致性,相同数据冗余,关系数据库,为保证关据库的高可用和高性能,一般会采用主从(备)架构并引入缓存。其中数据不一致性存在于数据冗余的时间窗口内。常用的解决方案见数据库之架构。 多副本数据之间的数据一致性,相同数据副本,大数据领域,一份数据会有多个副本并存储到不同的节点上。客户端可以访问任何一个节点进行读写操作。常用的解决方案是基于Paxos、ZAB、Ra

专注自动化、性能测试、测试架构学习交流 2904

分布式服务化系统一致性的“最佳实干”--转

原文地址:http://www.jianshu.com/p/1156151e20c8 1 背景 一致性是一个抽象的、具有多重含义的计算机术语,在不同应用场景下,有不同的定义和含义。在传统的IT时代,一致性通常指强一致性,强一致性通常体现在你中有我、我中有你、浑然一体;而在互联网时代,一致性的含义远远超出了它原有的含义,在我们讨论互联网时代的一致性之前,我们先了解一下互联网时代的特点,...

143

分布式服务架构:原理、设计与实践

今天推荐一本技术书,《分布式服务架构》自互联网诞生以来,其简单、敏捷的微服务架构开发理念和实践逐渐成为主流,在逐渐发展的环境下和技术演化的过程中,迅速突破互联网行业并波及软件行业的各个领域。然而,这种突飞猛进的表面下却是龙鱼混杂、泥沙俱下。一方面,很多人在这个信息爆炸的时代应对海量信息的处理能力比较有限;另一方面,也有人致力于将优秀的理论和实践相结合,希望运用所学的高效解决方案应对越来越复杂的问题

程序视界 1210
上一篇: PG常用(通用)功能
下一篇: 公众号开放平台设计与实现
Raybor
博客等级 码龄12年 29粉丝 36原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值