开发者社区 问答 正文

分布式事务如何控制?

分布式事务如何控制?

展开
收起
OSC开源社区 2024-05-29 12:18:41 44 分享 版权
1 条回答
写回答
取消 提交回答
  • 在Java EE规范里,明确支持了分布式事务。数据库,或者消息中间件等,在Java EE里,都是事务的资源管理(Resource Manager),他们自己支持本地事务,本地事务都有最好的性能。然而,如果使用分布式事务或者JavaEE称为全局事务,通过俩阶段提交协议来管理多个数据库,其他资源管理等,则性能会很差。记得以前做电信行业项目,全局事务管理器是由weblogic来提供,在性能测试中确实较差。

    Spring和SpringBoot本身不支持俩阶段提交协议,但可以使用JavaEE应用服务器提供的事务服务来完成,或者第三方的事务管理器。比如Spring Boot推荐了开源的Atomikos,Bitronix,我认为这个跟商业服务器一样,提供类似的全局事务管理。

    Java EE的分布式事务优点是对于开发人员来说是透明的,不需要考虑太多。它针对的事务管理都是数据库,消息中间件这样的系统,而并非分布式业务系统

    然而,对于分布式业务系统,有时候并不是简单的数据库等资源管理需要实现分布式事务就可以了,而是分布在各个系统上的业务需要实现“分布式事务”,这就需要业务系统进行改造,类似数据库那样的支持(业务上的)提交,回滚。

    2024-05-30 08:37:37
    赞同 展开评论
问答地址: