【发布时间】:2023-03-22 04:15:01
【问题描述】:
我们需要在我们的微服务架构中找到解决分布式事务管理的最佳方法。
这是问题陈述。
我们有一个复合微服务,它应该与底层的其他 2 个原子微服务交互(这显然是为了特定目的)并有单独的数据库,例如我们可以将这两个微服务视为
- STUDENT_SERVICE (STU_DB)
- TEACHER_SERVICE (TEACHR_DB)
在复合服务用例中,就像用户(管理员)可以为特定课程的学生分配教师等。
我想知道我们如何在一个事务中解决这个问题,因为每个服务(STUDENT_SERVICE 和 TEACHER_SERVICE)都有单独的数据库,并且所有这些都应该在一个事务中发生,无论是提交还是回滚。
由于这两个服务是分开的,我认为 JTA 不会有帮助,因为它意味着将这两个应用程序(服务)部署在同一个应用程序服务器上!
如上所述,我已选择退出 JTA //伪代码 类 CompositeService{
AssignStaff(resquest){
//txn Start
updateStudentServiceAPI(request);
UpdateTeacherServiceAPI(request);
//txn End
}
}
api执行后系统应处于一致状态
【问题讨论】:
标签: spring-boot jakarta-ee distributed-transactions