spring - 在实际运行环境(例如Netflix Inc.)中使用什么技术来解决分布式事务?

标签 spring architecture transactions axon saga

我正在将 Monolith spring 项目转换为 MSA 环境。 但是,我遇到了分布式事务的问题。

我知道解决分布式事务有两种方法:2pc commitsaga

我尝试使用Axon框架的Saga模式来解决它。

然而,Axon Framework 的 Saga 功能(专注于 DDD、EventSourcing 和 CQRS)似乎并不是很好。 (我只需要 Saga 模式,因为现在不可能应用 DDD 概念。)

在许多拥有完善的 MSA 环境的公司(例如 Netflix)中,使用什么技术(不是抽象技术)来解决分布式事务?

最佳答案

temporal.io许多公司(包括Netflix和Coinbase)都使用开源平台来保证业务流程的执行以及适当的补偿。 SAGA也直接支持。

这是来自 SAGA sample 的片段:

    Saga saga = new Saga(sagaOptions);
    try {
      String carReservationID = activities.reserveCar(name);
      saga.addCompensation(activities::cancelCar, carReservationID, name);

      String hotelReservationID = activities.bookHotel(name);
      saga.addCompensation(activities::cancelHotel, hotelReservationID, name);

      String flightReservationID = activities.bookFlight(name);
      saga.addCompensation(activities::cancelFlight, flightReservationID, name);
    } catch (ActivityFailure e) {
      saga.compensate();
      throw e;
    }

关于spring - 在实际运行环境(例如Netflix Inc.)中使用什么技术来解决分布式事务?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68269774/

相关文章:

java - 在 Spring Boot 中使用两个数据源

java - 在 CXF 中,有没有办法以编程方式对客户端的配置进行编程?

java - 使用 Jackson "Unexpected token (START_OBJECT), expected VALUE_STRING: Expected array or string."使用 LocalDateTime 将 JSON 解析为 POJO

java - Spring 共享全局状态的方式?

java - Android 架构的第一步 - 请帮我避免一个大错误

sql-server - 在 SQL Server 中一起使用 XACT_ABORT 和 TRY CATCH 中断 tSQLt 回滚

基于 Django 角色的 View ?

php - MVC - 用户输入验证 : controller, 模型或两者

java - 对事务性服务的理解——spring

hibernate 错误 - 已经有关联的托管连接