0

我们有两个微服务(M1 和 M2),每个微服务都有自己的模式 DB1 和 DB2。

  1. M1收到注册请求
  2. M1 调用 M2 进行验证
  3. M2 将验证结果(带有验证 id - VID)返回给 M1
  4. M1完成注册并持久化在DB1中,每次注册都会有Record Identifier (RID)

我的问题是我们在哪里保持 RID 和 RID 的验证结果之间的关系?

它们应该保留在 DB1(与 M1 关联)还是 DB2(验证模式)中?

如果关系需要在 M2 中持久化,则 M1 必须使用 RID 和 VID(验证 ID)调用 M2

微服务世界中推荐的方法是什么?

4

1 回答 1

0

提供的信息不足以提供真正有价值的答案,但您可以考虑以下几点:

  1. 在我看来,一个 VID 有多个 RID,但每个 RID 只有一个 VID。如果这是真的,对我来说将这种 1:M 关系存储在注册数据库中似乎更合理。
  2. 什么情况下需要VID后面的Validation schema信息?我的意思是说:
  • 你有一个方法,它返回连接到特定 VID 的所有注册?
  • 或者可能是,您有一个方法,返回用于特定注册的验证模式?

你看到区别了吗?为什么这个问题很重要?

最后,您可能会对本文感兴趣,尤其是第 4.4 章去中心化 -> 共享持久性。

您不共享相同的存储空间,但在我看来,您将其拆分得比需要的多,将注册和验证服务合并为一个可能是个好主意。当然,这是非常投机的说法。但是,如果您不确定我是否正确,请问问自己:

  • 其他服务/客户是否使用验证服务?
  • 验证服务是代表一个专门的业务单位/领域,还是只是其他单位流程的一部分?

诸如此类的事情。

最后:微服务世界不建议将数据放在哪里,但是当您决定将数据放在哪里以及您可能考虑的主要事项时,应该考虑什么:

  • 您的服务应该自主部署并自主运行。
  • 您的服务不应共享其存储空间(因为前一个)
  • 您应该能够根据需要扩展单个服务,而无需触及其他服务(这就是我们需要自主部署和可操作性的原因)
  • 粒度原则非常依赖于您的具体项目。当您决定“多少”时,您应该注意业务领域和维护所有其他原则的能力。

备注:上述原则绝不是详尽无遗的,但我希望所有这些都能为您完成工作提供一些指导。

于 2021-01-29T16:43:56.200 回答