2phase-commit相关内容

跨多个微服务的2PC分布式事务?

我阅读了一些关于2阶段提交/XA分布式事务以及JTA如何支持它的信息。似乎有很多资源管理器-RM(例如,RDBMS或JMS),以及一个管理跨多个RM的全局事务的TransactionManager(TM)实例。 我知道使用Saga模式更好,但是想想还是很有趣的: Do 2PC/XA分布式事务提供了仅从一个应用程序和一个TM使用多个RM进行事务的可能性? 如果没有-如何在多个微服务之间 ..

同时使用图形数据库和文档数据库

我正在考虑将实体存储在文档数据库(例如 CouchDB)和图形数据库(例如 Neo4j)中的设置.基本原理是将每个实体信息(数据、blob、值、复杂的内部结构)存储在文档数据库中,同时将实体关系(父级、子级、关联实体)存储在图数据库中. 有没有人做过/看到/被这样的设置咬过?我应该期待什么样的问题?首先想到的是两阶段提交.但这里的备份也有问题. 解决方案 您可以查看本书“七个星期内的 ..

在提交事务之前传递 JMS 消息

我有一个非常简单的场景,涉及应用服务器(Glassfish)中的数据库和JMS.场景非常简单: 1.EJB 在数据库中插入一行并发送一条消息.2.当消息用MDB传递时,行被读取和更新. 问题是有时消息在数据库中提交之前提交.如果我们考虑 2 阶段提交协议,这实际上是可以理解的: 1.准备 JMS2.准备数据库3.提交JMS4.(在提交插入之前可以传递消息的微小间隙)5.提交数据库 我已经与 ..

如何在两个微服务之间进行两阶段提交(春季启动)?

我有两个微型服务器A和B连接到单独的数据库,从微型服务器A我需要以相同的转换方式持久保存(保存)A和B的对象. 我正在使用带有netflix-oss的Spring微服务.请提供有关实现两阶段提交的最佳方法的建议. 解决方案 您不能在分布式环境中的微服务中实现传统的交易系统. 您应该使用 Event Sourcing + CQRS 技术,由于它们是原子性的,因此您将获得诸如在整体 ..

三相提交如何避免阻塞?

我试图了解三相提交如何避免阻塞 请考虑以下两种失败情况: 场景1:在阶段2中,协调器向所有同类群组发送preCommit消息,并获得了除同类群组A之外的所有用户的确认.网络问题阻止了同类群组A接收协调者的preCommit消息.同类群组A等待preCommit消息超时并选择中止.然后协调员和队列A都崩溃了. 方案2:协议到达阶段3.协调器向队列A发送doCommit消息.但是,在 ..
发布时间:2020-07-16 18:41:23 其他开发

XA两阶段提交并在准备阶段执行?

我试图理解两阶段提交,但是我不清楚每个本地站点何时执行其分布式事务的一部分. 在发送准备消息之前会发生这种情况.那是在两阶段提交xa协议运行之前发生的吗? 还是每个站点在接收到准备消息后执行分布式交易的一部分,这意味着准备消息本身还包括要执行的交易查询? 解决方案 是的,执行是在发送准备消息之前进行的.您应该假定整个2PC协议都在执行完所有操作后在commit()操作中运行.考 ..
发布时间:2020-07-14 18:31:02 其他开发

同时使用图数据库和文档数据库

我正在考虑一种设置,其中将实体存储在文档数据库(例如CouchDB)和图形数据库(例如Neo4j)中. 基本原理是将每个实体信息(数据,blob,值,复杂的内部结构)存储在文档数据库中,同时将实体关系(父,子,关联实体)存储在图形数据库中. 有人做过/看到过/被这样的装置咬过吗?我应该期待什么样的问题?首先想到的是两阶段提交.但是备份在这里也有问题. 解决方案 您可以查看这本书" ..

为什么两阶段提交不适用于微服务架构?

我读了一篇帖子,说: 我们无法在微服务中实现传统的交易系统,例如两阶段提交 在分布式环境中. 我完全同意. 但是,如果有人可以解释此问题的确切原因,那就太好了. 如果我要通过微服务实现两阶段提交,将会遇到什么问题? 预先感谢 解决方案 避免两阶段提交的主要原因是,事务协调器是一种独裁者,因为它告诉所有其他节点要做什么.通常,事务协调器嵌入在应用程序服务器中.在第一阶 ..

在SELECT期间如何等待未决的INSERT提交?

我在Windows环境中使用PostgreSQL 9.2. 我处于使用MSDTC的2PC( 2阶段提交)环境中. 我有一个客户端应用程序,该应用程序以SERIALIZABLE隔离级别启动事务,在表中为特定的外键值(该列上有一个索引)插入新的数据行,并投票完成该操作.交易(交易已准备).交易将由交易协调员提交. 此后,立即在事务外部,同一客户请求所有行以获取相同的特定外键值. 由于 ..
发布时间:2020-05-03 06:10:15 其他开发

使用Atomikos进行两阶段提交(2PC)配置

我正在创建一个示例应用程序来测试两阶段提交(2PC).我已经从互联网上获取了此处使用的代码位.我正在将Spring,Hibernate和Atomikos与MySQL用作后端.我正在使用两个数据库,故意对第二个数据库进行调用无法检查是否对第一个数据库调用进行了回滚.不幸的是,它似乎不起作用.有人可以指向我一些示例代码的链接吗? 以下是我的配置: Hibernate会话工厂: ..
发布时间:2020-04-25 03:26:53 其他开发

上次资源优化

我正在编写一个不支持两阶段提交的资源适配器。 我知道有一种称为“上一次资源优化”的优化技术。 在JBoss上,你的XAResource类应该实现LastResource以便进行优化。 / p> 我的问题是:如何在WebLogic,WebSpehre,Glassfish等中完成这项工作...... 解决方案 Weblogic: AFAIK (可能非常错误)只有JDBC驱动程序可 ..
发布时间:2018-12-17 10:05:14 Java开发

在事务提交之前传递JMS消息

我有一个非常简单的场景,涉及应用程序服务器(Glassfish)中的数据库和 JMS 。方案很简单: 1。 EJB在数据库中插入一行并发送消息。 2.当使用MDB传递消息时,将读取和更新行。问题是有时候 >在数据库中。如果我们考虑2阶段提交协议,这实际上是可以理解的: 1。准备JMS 2.准备数据库 3. commit JMS 4.(微小的差距,在插入提 ..