我有一个用例,我需要在两个不同的地区创建完全相同的postgresql
数据库。在same schema and same tables and same data
这两个数据库中,一切都是一样的。
我有一个使用实现distributed transaction
。因此,如果一个请求到达区域a并写入区域a数据库,例如Person表,那么必须在这两个数据库的Person
表中写入完全相同的记录,或者如果有任何错误,应该回滚写尝试。
我想弄清楚我是否可以在春季使用相同的Person
实体和CRUD存储库附加两个不同的数据源,因此respoistory.save()
方法可以在两个数据库中写入Person表。
AbstractRoutingDataSource
,但这是为了在数据库中实现多租户。其他的解决方案也略有不同,用例是在不同的数据库中写入不同的记录(主要是基于不同的数据点进行分片)。
spring是否提供任何开箱即用的解决方案,以便我可以在两个不同的数据库中实现对同一个表的事务性写入?
spring是否提供任何开箱即用的解决方案,以便我可以在两个不同的数据库中实现对同一表的事务性写入?
取决于你对"开箱即用"的定义。-它本身不实现分布式事务,但确实支持使用这样做的库。然而,要使一切正常工作相对复杂,并且需要在运行时环境中仔细配置额外的组件。
Spring Boot关于分布式事务的X文档在这里:https://docs.spring.io/spring-boot/docs/2.7.x/reference/htmlsingle/#io.jta
The Spring BootX文档在这里:https://docs.spring.io/spring-boot/docs/current/reference/html/io.html#io.jta但是同样值得注意的是,对于3。x版本之后,Spring Boot团队改变了方向,决定由相关的JTA提供商提供集成支持(参见https://github.com/spring-projects/spring-boot/issues/28589),因此出现了https://github.com/snowdrop/narayana-spring-boot
这样的项目。