我有两个微型服务器A和B连接到单独的数据库,从微型服务器A我需要以相同的转换持久保存(保存)A和B的对象,以实现这一目标。
我正在使用带有netflix-oss的Spring微服务。请给出有关实现两阶段提交的最佳方法的建议。
您无法在分布式环境中的微服务中实现传统的交易系统。
您应该使用 Event Sourcing + CQRS 技术,由于它们是原子的,因此您将获得在整体系统中实现事务或2PC之类的东西。
其他可能的方式是 事务日志挖掘 ,我认为链接输入正在使用这种方式,但是它有其优点和缺点。例如,不同数据库的二进制日志不同,并且同一类型数据库中的事件在不同版本之间也存在差异。
我建议您在事件存储中使用事件源+ CQRS和字符串事件,然后在微服务A和B之间转移多个事件并在每个步骤中更新域 状态* 后,尝试根据 CAP定理 达到 最终一致性 。 ***
建议您使用诸如 ActiveMQ , RabbitMQ 或 Kafka之 类的消息代理在不同的微服务之间发送基于事件的事件,并将它们放入诸如mysql或其他系统的事件存储中。
除了模仿事务之外,这种方式的另一个好处是您将拥有完整的 审核日志 。