【问题标题】:Deal with enumeration in Microservices architecture处理微服务架构中的枚举
【发布时间】:2018-05-11 10:06:15
【问题描述】:

我最近在设计我们新系统的微服务架构时遇到了一个问题。 为了提供更多上下文,让我们假设我们有两个不同的服务。

  • 一个服务负责付款,另一个负责支付

  • B 服务负责跟踪订单。

我们有一个用例,需要从服务 A 更新订单状态。

我们在服务 B 内的枚举列表中有这些状态。

如何避免在两个服务之间共享此枚举? 我需要有解耦的服务。

请随时要求澄清。

【问题讨论】:

  • 为什么不在服务 B 中提供适当的状态更新并从服务 A 调用它?
  • 但是,服务 A 应该知道服务 B 的状态吗?
  • 一切都取决于您拥有的架构。如果您通过 HTTP 从服务 A 与服务 B 进行通信,则可以为特定状态更新创建一个简单的端点并从服务 A 调用它们。

标签: architecture microservices enumeration


【解决方案1】:

不确定我的问题是否正确。假设您的支付服务中存在三种情况,例如:成功、失败、待处理,并且订单服务中定义了特定状态。而且我们不想在这两个微服务之间共享任何数据状态。建议您发布事件以排队等待任何给定的付款状态。并让订单服务监听此事件,并有条件逻辑在此处更新订单状态。这样我们就可以实现松耦合的服务。

【讨论】:

    【解决方案2】:

    您所描述的内容听起来像是服务 A 依赖于服务 B,并且必须有必要的服务接口。如果状态是服务提供的信息,它们应该被视为 API 的一部分,因此作为 API 描述的一部分可供消费者使用。

    还有一个一般性说明 - 我认为您提出问题的原因是对确切的服务边界不安全。请注意,在微服务架构风格中设计任何系统时,绘制正确的服务边界是最困难的部分。边界通常应该是特定于域的,但也可能需要考虑组织和技术限制。请参阅此article,我建议您阅读 Fowler 有关该主题的所有材料。

    【讨论】:

      猜你喜欢
      • 2018-01-07
      • 2017-03-19
      • 2021-02-05
      • 2018-09-24
      • 2015-04-30
      • 2016-11-05
      • 1970-01-01
      • 1970-01-01
      • 2018-08-11
      相关资源
      最近更新 更多