sat*_*ees 4 2phase-commit distributed-transactions spring-boot microservices
我有两个mico-serives A和B,它们连接到单独的数据库,从Mico-serives A我需要在同一个转换中持久保存(保存)A和B的对象如何实现这一点.
我正在使用带有netflix-oss的Spring微服务.请给出关于执行2阶段提交的最佳方法的建议.
小智 6
您无法在分布式环境中的微服务中实现传统的事务系统.
您应该使用事件采购+ CQRS 技术,因为它们是原子的,您将获得类似于在单片系统中实现事务或2PC的功能.
其他可能的方式是事务日志挖掘,我认为link-in正在使用这种方式,但它有自己的缺点和优点.例如,不同数据库的二进制日志不同,同一种数据库中的事件在不同版本之间存在差异.
我建议你使用事件采购+ CQRS和字符串事件在事件店内然后尝试达到最终一致性的基础CAP定理传输多个事件微服A和B之间和更新域后的状态中的每个步骤.
建议您使用ActiveMQ,RabbitMQ或Kafka等消息代理在不同的微服务之间发送事件源事件,并将它们串在mysql或其他系统等事件存储中.
除了模仿事务之外,这种方式的另一个好处是您将拥有完整的审计日志.
归档时间: |
|
查看次数: |
2632 次 |
最近记录: |