解耦账户和用户服务

Decouple account and user service

我正在尝试分离帐户和用户服务这 2 个。

在用户注册时,用户输入他们的帐户信息(公司名称、税号等)+ 用户信息(个人资料设置等)。

我想知道在注册时分离这两个服务以使一个表单提交存储在这两个服务中的最佳方法是什么?

目前我有一个设置,当用户注册时,它会向 auth 服务发送一个 post 请求,其中 auth 服务会触发一个 webhook 到帐户和用户服务。

我觉得这很容易出错,可能不是标准方法。

我想知道如何正确执行此操作 - 即 netflix、google 等如何执行此操作

非常感谢!

可能是的,方法是正确的,两者中直接从前端获取数据的服务负责向另一个服务发送异步事件,以便它也可以改变其数据库中的数据和数据一致性保持不变,即最终一致性范式本身。

唯一的问题是消息载体/代理应该是高度可用的。

您需要一种机制来实现跨多个微服务的事务。在这种情况下,微服务架构建议使用 SAGA design pattern 和补偿事务。

SAGA实际上是一组微服务的事务序列。每个事务更新每个微服务,微服务更新自己的数据库并发布消息或事件以启动 saga 中的下一个事务以更新下一个微服务。如果这样的事务在任何微服务中失败,那么 SAGA 会执行一系列补偿事务来撤消先前事务所做的更改。

SAGA分为两种类型:

  1. 编排 - 每个事务发布事件,这些事件依次触发其他微服务中的事务(没有编排器)。
  2. 编排 - 有一个单独的编排器来管理事务并告诉参与者需要执行哪些事务。

您还应该记住,当您将这样的模式添加到架构中时,架构的复杂性会显着增加,有关问题和缺点的更多信息,请参阅 link

可以在链接 1 and 2 中找到更多详细信息。