问题标签 [distributed-transactions]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
143 浏览

.net - 阅读 .Net 中事务管理所需的资源

我需要为一个正在进行的项目研究一些基于 .Net 的事务管理。当我开始查看系统当前在做什么时,是否有人有任何在线阅读资源可以为我提供一些基础/背景参考?

我们谈论的事务是系统间/WCF 和 DB 调用的混合。

0 投票
3 回答
3772 浏览

transactions - 两阶段提交协议的 ACID 是怎样的?

我遇到了一种情况,我开始怀疑两阶段提交协议是否真的保证了 ACID 属性,尤其是它的“A”部分。

让我们看一个涉及 2 个资源的理论分布式事务。(关于我必须处理的问题的更实际描述可以在我的博客中找到)。该场景是分布式事务的正常执行(无故障或恢复)。应用程序启动事务,更新资源并发出 commit() 调用。提交完成后,应用程序检查两个资源并查看已完成事务的所有更改。一切都很好,2PC 协议完成了它的工作,对吧?

现在,对场景进行一个小改动。当分布式事务执行 commit() 时,另一个应用程序将访问相同的 2 个资源。它只能看到交易的部分变化吗?比方说,对一个资源的更改已经可见,而对第二个资源的更改尚不可见?

在我阅读的有关 2PC 协议的所有信息中,我找不到任何关于各个资源相对于彼此的变化的可见性的保证。而且我找不到任何说所有资源都在完全相同的时间完成它们的个人提交的东西。

0 投票
1 回答
1658 浏览

sql - 分布式数据库事务是否保证提交/回滚?

我有在本地数据库中插入一条记录和在远程数据库中插入一条记录的应用程序代码(通过 Oracle 数据库链接)。当我提交此分布式事务时,是否保证本地和远程数据库都将提交或都回滚,或者远程数据库是否有可能提交但本地提交会失败(反之亦然)?

0 投票
2 回答
364 浏览

database-replication - 如何“分发”数据库?

到目前为止,我的“数据库服务器”一直很高兴成为一台 PC。

不幸的是,负载变得太多了,所以看起来我需要“分发”数据库。

这究竟意味着什么?如何将我的数据库分布在多个服务器上?我是否需要一个用户查询并以某种方式将负载分配给“真实”数据库服务器的中间服务器?

这对数据库写入和数据库读取有何作用?

任何初学者 101 网站或书籍?

0 投票
1 回答
1177 浏览

.net - 抛出错误时,我可以防止 WCF 回滚事务吗?

考虑以下参与分布式事务的 WCF 服务。WCF 的正常行为是在发生任何故障时回滚事务。有没有办法覆盖这种行为?

服务合约:

服务实现:

客户端实现片段:

当从ThrowError()引发 FaultException 时,WCF 回滚分布式事务,其中包括DoSomething()完成的工作。然后,对DoSomethingElse()的客户端调用失败并显示消息The flowed transaction could not be unmarshaled。发生以下异常:事务已被隐式或显式提交或中止。

在我的特定情况下,这种行为是不可取的。我想在客户端捕获异常并继续我的业务。如果发生我没有捕捉到的任何异常,客户端将回滚事务。

注意:这个问题与如何在 WCF 中处理 FaultException 而不中止整个事务?,但接受的答案对我来说并不令人满意 - 所有操作都发生在同一个事务范围内是很重要的。

0 投票
1 回答
688 浏览

sql-server - DTC 服务如何为多台服务器工作

我需要有关在使用 DTC 服务时需要了解的信息或参考资料,以便使用多台服务器、配置影响等。我正在开发的解决方案使用多个事务性 WCF 服务和 SQL 服务器数据库,这些数据库可能位于多个服务器中,并且我不知道这意味着什么,这意味着是否有必要在每台服务器上拥有一个 DTC serevr 以及它们如何相互了解等等......

我将不胜感激收集到的任何教程或信息,它们将帮助我快速获取知识,以便让初始基本配置尽快工作。

提前,任何贡献表示赞赏

谢谢

0 投票
1 回答
127 浏览

java - 找出漏洞!使用任务队列可靠地执行长任务

我正在谷歌应用引擎上制作成绩册。我会在每个评分期间跟踪每个学生的成绩。评分周期可以重叠。因为我可能一次显示数百个这样的成绩,所以我预先计算了服务器上的成绩。所以,对于任何一个学生,我可能有很多计算好的成绩——每个评分期都有一个。

现在,老师从测验中输入一个新分数。该分数可能会影响许多计算的成绩,因为它可能属于许多评分期。我需要重新计算所有受影响的成绩。这可能需要很长时间,因为对于每个评分期,我需要获取所有相关分数并对这些分数执行复杂的例程。我认为 30 秒是不够的 - 特别是如果今天数据存储区感觉很慢的话。此外,失败不是一种选择。一些成绩更新而另一些成绩悄然过时是不可接受的。

所以我心想,学习任务队列的时间真是太棒了!

我不是数据库结构或任何方面的专家,但这里是我想要做的事情的概述:

这似乎是一种将所有相关等级标记为脏的快速方法。如果中途失败,则返回失败,客户端将知道重试。如果客户端稍后尝试获取脏等级,我们可以在那里返回错误。

然后,任务队列代码将如下所示:

这是我的问题:这是否保证在添加新分数后永远不会有一个被标记为干净的计算成绩?

具体关注领域:

  • 在危险区域周围的第一个片段中,existingGrades总是会在新的之前持续存在吗?IndividualScore
  • 是否有可能另一个线程将在危险区域启动任务队列代码,以便在IndividualScore真正进入新的之前,这些现有的等级可能会再次被标记为干净?如果是这样,我如何确保不会发生这种情况(所有年级的交易都已结束)?
  • persistenceManager.flush()即使 pm 没有关闭,是否足以保存部分完成的计算?

这一定是一个常见的问题。我将不胜感激任何指向教程的链接,尤其是那些 appengine 的链接。感谢您阅读这么多!

0 投票
1 回答
813 浏览

asp.net - Asp.net 应用程序中的分布式事务

我们有一个企业应用程序,我们在其中调用数据库 1,调用 Web 服务,然后调用数据库 2,所有这些都在一个事件序列中。我们想将整个处理过程封装在一个事务中。在这种情况下实现分布式事务的最佳方法是什么?

环境:SQL 2008,ASP.Net 3.5

0 投票
4 回答
5024 浏览

nhibernate - NHibernate 3.0:TransactionScope 和自动刷新

在 NHibernate 3.0 中,FlushMode.Auto仅在环境事务下运行时不起作用(即,不启动 NHibernate 事务)。应该是?

(示例无耻地从这个相关问题中窃取)

在 NHibernate 源代码中,我可以看到它正在检查是否有正在进行的事务 (in SessionImpl.AutoFlushIfRequired),但相关方法 ( SessionImpl.TransactionInProgress) 不考虑环境事务 - 不像它的表亲ConnectionManager.IsInActiveTransaction,它确实考虑环境事务。

0 投票
3 回答
3529 浏览

java - Java:许多线程内的 XA 事务传播

如何在 Java SE(不是 Java EE 或 Spring)中使用事务管理器(例如BitronixJBoss TSAtomikos)来支持以下用例:

假设我们有以下类:

然后我们从中创建一个 Java Runnable,如下所示:

现在在我们的服务层,我们有另一个类:

客户端可以是 Servlet 或任何其他多线程环境:

BEGIN TRANSACTION 和 END TRANSACTION 部分的正确代码是什么?这甚至可行吗?如果不是,需要改变什么?要求是保持 updateDatabases() 方法并发(因为它将同时访问多个数据库)和事务性。