首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

游戏服务分布式事务优化()- 事务管理

前言 接上文 《游戏服务分布式事务优化(一)- Write Ahead Log(WAL) 模块》 在挺久以前我写过一篇分享 《在游戏服务器中使用分布式事务》 。...当时尝试在我们的游戏服务中引入TCC模型的分布式事务机制,以优化好友和公会服务的一致性流程。...最开始的实现并不通用,后来我对这个事务的实现做了进一步的优化和重构,抽离成了较为通用的模块,并对之前没全部完成的功能做了进一步完善。 此篇为重构内容的第部分,主要聚焦于事务管理。...基本原理 首先,先简介一下这个分布式事务系统的基本原理。详细一点的可以看我之前一篇文章,《Google去中心化分布式系统论文三件套(Percolator、Spanner、F1)读后感》 。...而且本身分布式事务模块要接入的规范就比较多,使用起来有一定难度,抽象非常复杂的情况下使用起来就更困难了。

2.6K30

分布式事务之Spring事务与JMS事务

Spring事务 Spring事务机制主要包括声明式事务和编程式事务,声明式事务让我们从复杂的事务处理中得到解脱,编程式事务在实际开发中得不到广泛使用,仅供学习参考。...此种事务处理方式不存在对应用服务器的依赖,因而部署灵活却无法支持多数据源的分布式事务。...: [x6pss0kwxi.png] Spring 外部(全局)事务 外部事务管理器提供事务管理 通过Spring事务接口,调用外部管理器 使用JNDI等方式获取外部事务管理器的实例 外部事务管理器一般由应用服务器提供...Naming and Directory Interface,Java命名和目录接口)是SUN公司提供的一种标准的Java命名系统接口,JNDI提供统一的客户端API,通过不同的访问提供者接口JNDI服务供应接口...(SPI)的实现,由管理者将JNDI API映射为特定的命名服务和目录系统,使得Java应用程序可以和这些命名服务和目录服务之间进行交互。

1.9K10
您找到你想要的搜索结果了吗?
是的
没有找到

分布式事务实战() -事务基本概念

1 什么是事务 一种可靠、一致的方式,访问和操作数据库中数据的程序单元。 2 ACID性质 并非任意的对数据库的操作序列都是数据库事务。数据库事务拥有以下四个特性,习惯上被称之为ACID特性。...一致状态的含义是数据库中的数据应满足完整性约束 隔离性(Isolation):多个事务并发执行时,一个事务的执行不应影响其他事务的执行 持久性(Durability):已被提交的事务对数据库的修改应该永久保存在数据库中...3 案例 某人要在商店使用电子货币购买100元的东西,当中至少包括两个操作: 该人账户减少100元 商店账户增加100元 支持事务的数据库管理系统(transactional DBMS)就是要确保以上两个操作...在一个数据库事务的执行过程中,有可能会遇上事务操作失败、数据库系统/操作系统出错,甚至是存储介质出错等情况。...为了实现将数据库状态恢复到一致状态的功能,DBMS通常需要维护事务日志以追踪事务中所有影响数据库数据的操作。

34031

谈谈分布式事务:基于DTC的分布式事务管理模型

通过上一篇的介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事务管理系统,这是一个复杂的架构体系。...、资源管理器(RM:Resource Manager) 在事务控制模型中,不论是应用还是资源管理器都不是直接地访问具体的事务型资源,而是通过一个中介间接地对目标资源进行操作,这个中介就是资源管理器。...此外,基于LTM的事务中可以同时登记(Enlist)多个易失型资源(Volatile),但是仅仅允许登记唯一一个持久化资源。当第个持久化资源被登记到当前事务中,该事务也将脱离LTM的管辖。...分布式事务依赖于一个更为强大的事务管理器,就是我们接下来着重介绍的分布式事务协调器。...由于WCF的事务体系解决的是事务服务之间的流转,以及对服务操作直接或者间接访问的所有事务型资源的协作,这样的事务时通过基于DTC的分布式事务实现的。

77280

谈谈分布式事务:基于DTC的分布式事务管理模型

当上面所述的事务登记流程结束后,参与整个分布式事务的DTC和资源管理器形成了如图2所示的树形层次结构,由于该结构的构建主要是为了后面对整个事务的提交服务的,所以我们一般将其称为事务提交树(Transaction...、基于两阶段提交(2PC:Two-Phase Commit)协议的事务提交机制 不同于基于单一资源管理器的本地事务,在一个分布式环境中时实现一个涉及到多个资源管理器的分布式事务,实现事务的ACID四大属性...当事务初始化服务(应用或者组件,为了更佳贴近WCF,我们都称服务)完成所有相关的操作,决定提交该事务。...注:在事务初始化服务决定提交事务之前,任何一个参与者均可以中止(Abort)该事务,任何一个参与者对事务的中止都将导致整个分布式事务的回滚。...当根节点DTC接收到隶属于自己的所有资源管理器和下级DTC的投票结果后,采用于上面一样的算法决定整个分布式事务的最终结果。当根节点DTC决定了事务最终的结果后,整个提交过程进入第阶段。

76260

谈谈分布式事务:基于DTC的分布式事务管理模型

通过上一篇的介绍,我们知道了SOA真正需要的是一个能够协调服务操作直接(通过服务自身访问的资源)或者间接(通过被调用服务访问的资源)访问的所有资源的分布式事务管理系统,这是一个复杂的架构体系。...、资源管理器(RM:Resource Manager) 在事务控制模型中,不论是应用还是资源管理器都不是直接地访问具体的事务型资源,而是通过一个中介间接地对目标资源进行操作,这个中介就是资源管理器。...此外,基于LTM的事务中可以同时登记(Enlist)多个易失型资源(Volatile),但是仅仅允许登记唯一一个持久化资源。当第个持久化资源被登记到当前事务中,该事务也将脱离LTM的管辖。...分布式事务依赖于一个更为强大的事务管理器,就是我们接下来着重介绍的分布式事务协调器。...由于WCF的事务体系解决的是事务服务之间的流转,以及对服务操作直接或者间接访问的所有事务型资源的协作,这样的事务时通过基于DTC的分布式事务实现的。

72980

分布式事务- 阶段协议

阶段协议 单个数据库实例内的事务我们称为本地事务,需要保证多个数据源的操作要么都做要么都不做的事务我们成为分布式事务,为了实现分布式事务阶段与三阶段协议就应运而生了。...分布式事务事务发起者、资源管理器(参与者)、事务协调者组成,下面我们看看阶段协议内容: 第一阶段 分布式事务发起方向事务协调器发起分布式事务,协调器则向所有事务参与者发起准备请求,事务参与者接受到请求后执行本地事务...如果所有事务参与者都返回了准备OK到事务协调器 ? 则事务协调器准备进入第阶段。...三、总结 阶段协议是个标准协议,协议只是规定了分布式事务实现的骨架,并没有规定具体如何实现,比如事务协调器是作为一个单独应用存在,还是与事务发起方一起部署的?...最后 想了解JDK NIO和更多Netty基础的可以单击我 想了解更多关于粘包半包问题单击我 更多关于分布式系统中服务降级策略的知识可以单击 单击我 想系统学dubbo的单击我 想学并发的童鞋可以

33610

服务(十六)——Seata 分布式事务框架

分布式事务问题由来 分布式前 单机单库没这个问题 从1:1 -> 1:N -> N:N 单体应用被拆分成微服务应用,原来的三个模块被拆分成三个独立的应用,分别使用三个独立的数据源,业务操作需要调用三三...Seata术语 是什么 Seata是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。...分布式事务业务说明 这里我们会创建三个服务,一个订单服务,一个库存服务,一个账户服务。...Alina Gingertail 分布式事务的执行流程 TM开启分布式事务(TM向TC注册全局事务记录) ; 按业务场景,编排数据库、服务事务内资源(RM向TC汇报资源准备状态) ; TM结束分布式事务...,事务一阶段结束(TM通知TC提交/回滚分布式事务) ; TC汇总事务信息,决定分布式事务是提交还是回滚; TC通知所有RM提交/回滚资源,事务阶段结束。

1.7K30

服务 day19:分布式事务

分布式事务 0x01 问题描述 根据上边的自动选课的需求,分析如下: 用户支付完成后,会将支付状态及订单状态保存在订单数据库中,由订单服务去维护订单数据库。...如何实现两个分布式服务(订单服务、学习服务)共同完成一件事即订单支付成功自动添加学生选课的需求,这里的关键是如何保证两个分布式服务事务的一致性。...上边的几个问题涉及到分布式事务控制,下面我们带着这些问题,来继续了解一下什么是分布式事务。 0x02 什么是分布式事务 在了解分布式事务之前,我们来回顾一下什么是分布式系统。 1、什么是分布式系统?...CAP 理论是分布式事务处理的理论基础,了解了 CAP 理论有助于我们研究分布式事务的处理方案。...消息队列实现最终一致性 本方案是将分布式事务拆分成多个本地事务来完成,并且由消息队列异步协调完成,如下图: 下边以下单减少库存为例来说明: ? 1、订单服务和库存服务完成检查和预留资源。

2.1K20

服务化与分布式事务冲突解析

种方式是基于nginx代理实现,根据客户端的IP地址做hash,能够保证每个IP都能路由到同一台机器上,这样就不存在session不一致问题了。...我们先回顾一下,如果没有做所有上述的架构和业务数据库的拆分,那所有操作都由同一个jvm进程中的同一个事务管理器控制,那么事物提交和回滚是比较容易控制的,但是在分布式环境下,所有的操作都是以服务为业务单元...我们可以换一个思路,参考跨两个服务的操作,假如我们将业务继续合并下沉,也就是B、C操作放到B事务中执行能够保证一致性,然后将A、B合并到A中执行,同样也能保证一致性,这样在分布式中跨3个进程的服务调用我们也能够保证数据一致性...那么分布式系统中的分布式事务如何保证数据一致性呢?...,考虑使用分布式事务中间件,例如TXC或者自己实现 业务场景复杂但是可以接受最终一致性(ACID中牺牲CI),可以考虑本地消息表,TCC模式,消息事务等 谢谢参读,如有不周可以直接联系本人或者留言!

1.3K30

.Net Core with 微服务 - 分布式事务 - TCC

上一次我们讲解了分布式事务的 2PC、3PC 。那么这次我们来理一下 TCC 事务。本次还是讲解 TCC 的原理跟 .NET 其实没有关系。...TCC Try 准备阶段,尝试执行业务 Confirm 完成业务 Cancel 回滚准备阶段的业务 TCC 事务其实是 2PC 的一个扩展。上一次我们说了 2PC ,在阶段进行事务提交。...TCC 就是把 2PC 的阶段细化了,拆分成了 Confirm 跟 Cancel 两个步骤。...Confirm 如果一阶段都提交成功了,那么所有的服务都开始进入 Confirm 阶段。订单服务把房间状态更改为“已预定”状态;积分服务把冻结的积分清0。这样整个事务都成功完成了。...微服务 - Consul 配置中心 .Net Core with 微服务 - Polly 熔断降级 .Net Core with 微服务 - 分布式事务 - 2PC、3PC

1.3K20

服务分布式事务Saga模式简介

通过这段事务操作主要目的是为了维持业务上的不变性约束,比如一个人下订单的总金额不能超过这个人的信用卡授信额度,也就是说:一个人购买的商品总金额只能小于或等于他的信用卡授信额度。...但是,2PC两段提交并不是微服务分布式架构的选择,因为存在单点风险,因为锁也会降低吞吐量。...分布式事务如果不结合CAP定理是无法认识清楚,2PC其实只是选择了CAP中CA,虽然CA保证了可靠性,但是忽视网络通讯随时可能堵塞或失败,形成网络分区,反而不可靠,2PC带来的可靠性在分布式环境中是虚幻的...在分布式系统中,CAP定理是King,CAP定理无论是理论高度或是工程实施高度都是要高于传统事务的,在CAP定理的干预下,传统ACID事务走向了妥协,变成了BASE,也就是走向最终一致性的柔性事务。...但是,传统2PC/ACID事务中在上面任何一个步骤失败时会使用回滚操作,比如第三步出错,因为是两段提交,所以,第段就不会进行确认提交,而是进行回滚Rollback,这样订单状态就恢复到当前事务之前的状态

1.9K20

服务架构下分布式事务方案

而对于第个问题,现在还没有通用方案很好的解决微服务产生的事务问题。分布式事务已经成为微服务落地最大的阻碍,也是最具挑战性的一个技术难题。...为此,本文将深入和大家探讨微服务架构下,分布式事务的各种解决方案,并重点为大家解读阿里巴巴提出的分布式事务解决方案----GTS。...第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;第阶段是执行阶段,协调者根据所有参与者的反馈,通知所有参与者,步调一致地在所有分支上提交或者回滚。 ?...4 GTS--分布式事务解决方案 GTS是一款分布式事务中间件,由阿里巴巴中间件部门研发,可以为微服务架构中的分布式事务提供一站式解决方案。 更多GTS资料请访问研发团队微博。...5 总结 GTS已经在阿里内部广泛使用,经过了双十一流量高峰的考验。内部成熟后,在专有云和公有云服务了很多用户,很多用户一天事务量在千万/亿级别,解决了业务服务化改造后的分布式事务棘手技术难题。

1.2K60

服务架构下分布式事务方案

而对于第个问题,现在还没有通用方案很好的解决微服务产生的事务问题。分布式事务已经成为微服务落地最大的阻碍,也是最具挑战性的一个技术难题。...为此,本文将深入和大家探讨微服务架构下,分布式事务的各种解决方案,并重点为大家解读阿里巴巴提出的分布式事务解决方案----GTS。...第一阶段是表决阶段,所有参与者都将本事务能否成功的信息反馈发给协调者;第阶段是执行阶段,协调者根据所有参与者的反馈,通知所有参与者,步调一致地在所有分支上提交或者回滚。 ?...4 GTS--分布式事务解决方案 GTS是一款分布式事务中间件,由阿里巴巴中间件部门研发,可以为微服务架构中的分布式事务提供一站式解决方案。 更多GTS资料请访问研发团队微博。...5 总结 GTS已经在阿里内部广泛使用,经过了双十一流量高峰的考验。内部成熟后,在专有云和公有云服务了很多用户,很多用户一天事务量在千万/亿级别,解决了业务服务化改造后的分布式事务棘手技术难题。

1.2K20

分布式服务架构()

,如果出现不一致,就可以通过系统自动化或者人工干预修复不一致的问题 分布式一致性协议 阶段提交协议 ?...,释放资源,如果任何一个参与者明确返回准备失败,就是预留资源和执行失败,则协调器发送中止指令,参与者取消已经变更的事务,执行undo日志,释放资源, 阶段提交在准备阶段锁定资源,这是一个重量级操作,..., 三阶段和阶段有以下不同 增加了一个询问阶段,为了尽可能早点发现无法执行操作而中止行为,但是只能减少这种情况发生,不能完全避免 在准备阶段,加入了超时机制,一旦超时,协调者和参与者都会继续执行提交事务...在分布式系统中构建了唯一的id,调用链的等基础设施后,我们可以很容易对系统间的不一致进行核对,通常需要第三方的定时核对系统,从第三方监控服务执行的健康程度....,服务1实际上没有接受到请求,或者还没有接受到一开始的处理请求,服务适用方需要使用同一个请求id进行重试,当然服务1必须支持幂等性 第种超时是在服务内部超时的,由于我们前提是只有两种状态,成功和失败

66920

分布式事务之TCC服务设计和实现

如下图所示,业务实现TCC服务之后,该TCC服务将作为分布式事务的其中一个资源,参与到整个分布式事务中;事务管理器分2阶段协调TCC服务,在第一阶段调用所有TCC服务的Try方法,在第阶段执行所有TCC...TCC服务要保证第一阶段Try操作成功之后,阶段Confirm操作一定能成功; 2、允许空回滚: 如下图所示,事务协调器在调用TCC服务的一阶段Try操作时,可能会出现因为丢包而导致的网络超时,此时事务协调器会触发阶段回滚...“宁可不展示、少展示,也不多展示、错展示”; 6、业务数据并发访问控制: TCC服务的一阶段Try操作预留资源之后,在阶段操作执行之前,预留的资源都不会被释放;如果此时其他分布式事务修改这些业务资源,...;除了上述TCC服务的设计注意事项外,我们在解决用户高并发、高可用需求方面也提供了解决方案,我们对分布式事务做了极致的性能优化以支持双11等大促的高并发需求,我们基于蚂蚁LDC架构的高可用方案能使分布式事务服务达到...99.99%的可用性; 蚂蚁金服大部分业务系统均采用TCC的方式接入分布式事务,但设计TCC服务时要遵循大量设计规范,这无疑对用户提了非常高的要求;为了简化用户接入分布式事务的门槛,蚂蚁金服的分布式事务框架

1.6K20

比较微服务中的分布式事务模式

实现阶段提交架构 阶段提交需要一个分布式事务管理器(如Narayana),以及一个可靠的存储层来保存事务日志。...阶段提交的优劣势 阶段提交协议提供了类似一体式模块中的本地事务保证,但也有例外。由于原子更新中涉及到两个或多个不同的数据源,数据源可能因各种原因产生故障或阻塞事务。...而在基于阶段提交协议的分布式事务中,需要保证状态的一致性,唯一例外是当事务协调器故障时可能会发生无法恢复的失败。...(并行处理) 如何选型分布式事务策略 正如你看到的,在微服务架构中处理分布式事务时并不存在正确或错误的模式。...在这种情况中,使用阶段提交的分布式事务可以在某些特定数据源下工作,但它们很难在(为可扩展性和高可用性设计的)动态云环境上保证可靠性。

2.4K30

基于可靠消息方案的分布式事务):Java中的事务

前言:在上一篇文章 基于可靠消息方案的分布式事务:Lottor介绍 中介绍了常见的分布式事务的解决方案以及笔者基于可靠消息方案实现的分布式事务组件Lottor的原理,并展示了应用的控制台管理。...常见的容器事务如Spring事务,容器事务主要是J2EE应用服务器提供的,容器事务大多是基于JTA完成,这是一个基于JNDI的,相当复杂的API实现。...但是,由于JDBC无法实现分布式事务,而如今的分布式场景越来越多,所以,JTA事务就应运而生。...JTA指定事务管理器和分布式事务系统中涉及的各方之间的标准Java接口:应用程序,应用程序服务器和控制对受事务影响的共享资源的访问的资源管理器。一个事务定义了完全成功或根本不产生结果的逻辑工作单元。...Java 事务编程接口(JTA:Java Transaction API)和 Java 事务服务 (JTS;Java Transaction Service) 为 J2EE 平台提供了分布式事务服务

1.2K60

深入了解分布式事务组件 Seata :AT 模式(

AT 模式与 TCC 模式 Seata AT 模式是基于两阶段提交模式设计的,以高效且对业务零侵入的方式,解决微服务场景下面临的分布式事务问题。...当请求链路调用完成后,发起方通知 TC 提交或回滚分布式事务,进入阶段调用流程。此时,TC 会根据之前注册的分支事务回调到对应参与者去执行对应资源的第阶段。...将一个本地事务做为一个分布式事务分支,所以若干个分布在不同微服务中的本地事务共同组成了一个全局事务,结构如下。 ? 阶段 2:分支事务提交或回滚。...Seata 实现分布式事务的一般过程如下: ? TM 通知 TC 开始一个新的全局事务。TC 生成了一个代表全局事务的 XID。 XID 通过微服务的调用链传播下去。...AT 模式的一阶段、阶段提交和回滚均由 Seata 框架自动生成,用户只需编写业务 SQL,便能轻松接入分布式事务,AT 模式是一种对业务无任何侵入的分布式事务解决方案。

1.4K10

服务架构下分布式事务解决方案

,比如在第阶段中,如果协调者因为故障不能正常发送事务提交或回滚通知,那么参与者们将一直处于阻塞状态,整个数据库集群将无法提供服务。...服务调用链路依次执行 Try 逻辑,如果都正常的话,TCC 分布式事务框架推进执行 Confirm 逻辑,完成整个事务;如果某个服务的 Try 逻辑有问题,TCC 分布式事务框架感知到之后就会推进执行各个服务的...事务协调器在调用 TCC 服务的一阶段 Try 操作时,可能会出现因为丢包而导致的网络超时,此时事务管理器会触发阶段回滚,调用 TCC 服务的 Cancel 操作,而 Cancel 操作调用未出现超时...TCC 空回滚流程 防悬挂控制 事务协调器在调用 TCC 服务的一阶段 Try 操作时,可能会出现因网络拥堵而导致的超时,此时事务管理器会触发阶段回滚,调用 TCC 服务的 Cancel 操作,Cancel...调用未超时;在此之后,拥堵在网络上的一阶段 Try 数据包被 TCC 服务收到,出现了阶段 Cancel 请求比一阶段 Try 请求先执行的情况,此 TCC 服务在执行晚到的 Try 之后,将永远不会再收到阶段的

90520
领券