是否仍在使用XA/JTA交易?

Chr*_*ars 4 mysql postgresql jta xa distributed-transactions

我有一个应用程序,可以交互多个数据库和一些自定义服务.对于某些操作,我需要类似事务的行为,其中一组更改要么跨所有数据库/服务提交,要么在发生错误时回滚.

X/Open组和Java JTA的XA标准似乎使用两阶段提交过程来解决这个问题.一些数据库(mySQL,Postgres,Oracle)支持这些接口,但我觉得它们不经常使用或不受欢迎.真的吗?如果是这样,为什么?

我知道在mySQL上有一些与XA有关的复制相关问题.此外,XA事务可能会明显变慢.还有其他原因导致XA不受欢迎/不常见吗?

A.H*_*.H. 6

XA有几点:

  • 它发挥作用,没有公认的替代方案.如果必须使用分布式事务,则无法绕过XA.
  • 这是"标准技术",没有炒作,没有营销.因此它飞行在大多数人的雷达之下.
  • 即使使用它,Jack Application Developer也很有可能不知道它,因为大多数部分通常隐藏在某些框架中.
  • 对XA的需求确实有所下降,因为面向服务的体系结构(SOA)和消息队列是大肆宣传的体系结构范例,试图 避免子系统的这种紧密耦合.虽然至少SOA似乎也在下降得很好.;-)
  • 经常被遗忘的XA部分是在事务实际中断时使用的必需代码和工具.在XA中有一些郊区,事务管理器在相当长的一段时间内既不能提交也不能回滚所有资源.这一点只会增加"只有你真的必须使用它".