【问题标题】:Is this "legal" microservices design?这是“合法”的微服务设计吗?
【发布时间】:2019-09-10 16:58:12
【问题描述】:

设置:

  • 在整个系统中,每个客户都有一个项目列表的概念,这需要一个被多个服务 A、B、C 理解的概念。
  • 这些相同的多个服务执行针对该项目列表的不同类型的工作。
  • B 或 C 操作的项目列表版本不是最新的,只要他们最终获得最新版本即可。

我的设计:

  • 一个服务 A 是项目列表当前状态的真实来源。该列表在此服务中进行操作。
  • 当列表更改时,A 会发布列表,而 B 和 C(此事件的订阅者)会将其副本存储在自己的存储中。
  • 当 B 和 C 工作时,他们使用列表的本地副本。
  • B 和 C 还具有特定于其域的其他状态。

我的理由:

由于 B 和 C 在工作时不向 A 索要列表,因此他们不依赖 A。如果由于某种原因 A 出现故障,对系统的影响只是 B 和 C 不有最新的信息,这是可以接受的,并且当 A 被修复时会得到缓解。

这有什么问题吗?

【问题讨论】:

  • 听起来像观察者模式;但你应该问一个更具体的问题以获得更具体的答案。 “有什么问题吗,”是主观的,对 SO 来说是一个过于宽泛的问题。
  • 这并没有错。您可以查看此视频,该视频解释了与您正在做的类似的概念 youtube.com/watch?v=STKCRSUsyP0。确实这个问题太宽泛了。
  • 这种方法没有错。它是微服务之间数据集成的标准方式。

标签: design-patterns service architecture domain-driven-design microservices


【解决方案1】:

B 和 C 具有所谓的缓存。过期是可以接受的,只要用 A 验证当前版本是什么(通常使用最后修改的日期时间)就可以了。

【讨论】:

    猜你喜欢
    • 2018-09-29
    • 2020-10-04
    • 2017-09-21
    • 2016-04-15
    • 1970-01-01
    • 2020-06-20
    • 2019-06-18
    • 2018-04-28
    • 2017-06-25
    相关资源
    最近更新 更多