我正在使用Spring Boot,我的应用程序现在只是 Monolithic,以后可能会切换到微服务。
场景 1:我的数据库调用不依赖于 REST 响应
@Transactional
class MyService {
public void DBCallNotDependsOnRESTResponse(){
//DB Call
//REST Call, This restcall gives response like 200 "successfull"
}
}
场景 2:我的数据库调用取决于 REST 响应
@Transactional
class MyService {
public void DBCallDependsOnRESTResponse(){
//REST Call, making a Real Transaction using BrainTree
//DB Call, HERE DB CALL DEPENDS ON REST RESPONSE
}
}
在场景 1 的情况下,我没有任何问题,因为数据库会在 REST 失败的情况下回滚。
但是,在场景 2 的情况下,REST 调用不能回滚,以防数据库调用发生任何异常。
我已经在谷歌上搜索了上面的内容,我发现了一些解决方案,比如我们需要使用 Pub-Sub 模型系统之类的东西,但我无法清楚地理解这个概念。
如果有人能够为场景 2 提供解决方案,我会很高兴。其他电子商务企业如何有效地处理他们的交易,我想我的查询与一些架构设计有关。请建议一些好的架构方法来解决上述交易问题。你认为使用像 Kafka 这样的消息系统可以解决上述问题吗?仅供参考,目前,我的应用程序是单体的,我应该使用微服务吗?我是否需要使用两阶段提交或 Sagas 会解决我的问题?Sagas 是否可用于 Monolithic 应用程序?
编辑: 关于 RestCall:我实际上是在使用 BrainTree 进行 Real Transaction,这是一个 Rest Call。