微服务架构中数据重复会导致代码重复吗?

问题描述 投票:0回答:3

比如我们有一个微服务架构的应用。服务使用事件总线相互通信,如下所示:

  1. TeamService 订阅
    UserCreated
    事件
  2. UserService 发布
    UserCreated
    事件
  3. TeamService 将
    UserCreated
    事件中的用户存储到自己的数据库中

因此,我们在某些服务中复制数据。这在微服务架构中没问题。但是处理这些数据的代码又如何呢?例如,用户可能有

isPublic
字段。如果
isPublic
字段为 false,则用户的个人资料信息仅对用户本人和具有管理员权限的用户可见。

因此,UserService 和 TeamService 必须具有相同的代码来处理此逻辑。或者是否有另一种方法可以在不重复代码的情况下处理

isPublic
字段?

architecture microservices code-duplication
3个回答
1
投票

您可以构建一个包含公共代码的库,并将其添加为

UserService
TeamService

中的依赖项

0
投票

在微服务架构中,数据可以在多个服务中复制,例如用户服务和团队服务,但只有一项服务拥有并提供数据。例如,用户个人资料数据归用户服务所有,并且应仅由用户服务提供。

因此,如果任何 UI 或其他服务想要显示个人资料服务,那么它会向用户服务提出相同的要求,如果个人资料不公开,用户服务可能会拒绝(访问被拒绝)。


0
投票

解决此问题的一种方法是禁止其他服务直接处理用户相关逻辑。相反,希望执行此类逻辑的服务应调用用户服务来执行所需的逻辑。根据您的要求和特定服务,调用也可以是异步的,以符合事件驱动的架构。

© www.soinside.com 2019 - 2024. All rights reserved.