Architecture 在微服务体系结构中实现低耦合

Architecture 在微服务体系结构中实现低耦合,architecture,microservices,Architecture,Microservices,在我们的系统中,许多用例都需要客户详细信息。 在某些用例中,某些服务需要与第三方验证此数据,在另一种情况下,此数据应发送给其他第三方服务,以便向客户创建合同 在我看来,处理这一问题的选择很少,而且都很糟糕:( 向客户服务发送查询(这意味着与it的耦合度很高) 侦听来自客户服务的所有事件,并将所有客户的详细信息保存为需要该数据的所有服务中的缓存-(复杂的解决方案,由于同步问题,可能会发生许多错误等…) 我认为选项1更好,但这意味着许多服务与客户服务的高度耦合 有更好的方法吗?在架构考虑中,可能没有

在我们的系统中,许多用例都需要客户详细信息。 在某些用例中,某些服务需要与第三方验证此数据,在另一种情况下,此数据应发送给其他第三方服务,以便向客户创建合同

在我看来,处理这一问题的选择很少,而且都很糟糕:(

  • 向客户服务发送查询(这意味着与it的耦合度很高)
  • 侦听来自客户服务的所有事件,并将所有客户的详细信息保存为需要该数据的所有服务中的缓存-(复杂的解决方案,由于同步问题,可能会发生许多错误等…)
  • 我认为选项1更好,但这意味着许多服务与客户服务的高度耦合


    有更好的方法吗?

    在架构考虑中,可能没有“最佳”方法,但任何解决方案都将是对需求和条件的权衡

    例如,讨论了如何在微服务体系结构中共享数据的问题;我也喜欢和这个主题

    对于您的情况,我看到以下选项:

    • 每个服务都有一个数据库,用于存储其拥有的数据:基本上是您的第一个选择,实际上是“原始”微服务架构的想法。事实上,我不太同意这会导致高度耦合,但您必须仔细设计接口,使其独立于内部数据结构和逻辑。较小的服务和它们之间更多的通信是一个典型的结果
    • 一个由所有服务共享的单一数据库:这确实增加了更多的耦合,并打破了微服务体系结构的概念。但是,如果您希望用例/数据模型/数据库模式等很少发生更改,则可能是一个选项
    • 事件/订阅模式:您必须非常清楚您的事件是什么;如果您有许多事件和/或订阅者,则可能会变得复杂
    • 最后:重新思考微服务方法——例如,它可能有助于将多个单一服务组合成一个更大的服务
    决策还应取决于预期的数据量、可扩展性和更改频率