我正在将 Monolith spring 项目转换为 MSA 环境。 但是,我遇到了分布式事务的问题。
我知道解决分布式事务有两种方法:2pc commit
和 saga
。
我尝试使用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/