假设我们有一个用户、Wallet REST微服务和一个将事情粘合在一起的API网关。当Bob在我们的网站注册时,我们的API网关需要通过用户微服务创建一个用户,通过钱包微服务创建一个钱包。
下面是一些可能出错的场景:
>
用户Bob创建失败:没关系,我们只需向Bob返回一个错误消息。我们使用的是SQL事务,所以没有人在系统中看到Bob。一切都很好:)
创建了用户Bob,但在创建钱包之前,我们的API网关硬崩溃。我们现在有一个用户没有钱包(数据不一致)。
或者,我知道REST可能不适合这个用例。处理这种情况的正确方法是完全放弃REST并使用不同的通信协议(如消息队列系统)吗?或者我应该在我的应用程序代码中强制一致性(例如,通过有一个后台作业来检测不一致性并修复它们,或者通过在我的用户模型上有一个带有“creating”、“created”值的“state”属性,等等)?
说不通的:
什么会让你头疼:
最好的选择是:
但如果需要同步响应呢?
第1步:我想有一个
我知道最好使用 Saga 模式,但想想还是很有趣的: < Li > 2PC/XA分布式事务是否提供了仅从一个应用程序和一个TM与多个RM进行事务的可能性? < li >如果没有-如果每个微服务只能访问自己的数据库,如何在多个微服务之间使用2PC/XA分布式事务来提供使用2PC的能力?我很乐意看到一个例子 < li >我们是否需要将TransactionManager服务作为一个独立的微服务,在多个
我正在计划一个使用事件源的微服务模型。为了实现高可伸缩性和高吞吐量处理能力,我将使用Kafka作为微服务的消息代理。 在这一点上,我有问题的实现模型,以能够拥有Kafka主题和分区的好处。我的模型需要满足一些要求: 微服务必须从message broker获取数据(post/patch/put/delete) 数据一致性是强制性的,如果实体A需要实体B的先前存在,则必须只存在实体A的指向实体B的有
虽然每个微服务通常都有自己的数据,但某些实体需要在多个服务之间保持一致。 对于高度分布式环境(如微服务体系结构)中的这种数据一致性要求,设计的选择是什么?当然,我不想要共享数据库体系结构,即单个数据库管理所有服务的状态。这违反了孤立和不共享的原则。 我明白,微服务可以在创建、更新或删除实体时发布事件。对该事件感兴趣的所有其他微服务可以相应地更新各自数据库中的链接实体。 这是可行的,但是它会导致跨服
我有两个微服务和调用来更新数据,然后插入另一个数据,但让我们考虑一下 失败,然后我们需要回滚由 更新的数据,否则我们将处于不一致的状态。 我也经历了佐贺patterns.will它满足了这种矛盾 谁能为此提出更好的解决方案?
我有两个django REST API项目,我将它们解耦为微服务架构,其中一个服务是(SSO),它处理身份验证(我使用的是基于JWT令牌的身份验证)并管理用户信息,另一个是工资单服务。 问题是与工资单服务中的某个模型有关系。具体来说,我在工资单服务中有一个类,它有一个字段。这是我将添加用户的地方,我将从查询SSO服务中获得。 考虑到每个服务都有自己的数据库,我如何跨微服务共享数据库。