【问题标题】:How do I create boundaries for my microservices?如何为我的微服务创建边界?
【发布时间】:2020-06-27 13:36:02
【问题描述】:

我们有一个基于 Web 的整体 CRUD 应用程序(称为 A),它执行特定任务。现在,我们有一个新要求,它在功能上或多或少独立于A。受众不同,使用时间、功能等都不同。因此,我们决定将其构建到一个新的服务B 中。

B 需要来自A 的身份验证信息时,问题就开始了。预计这可能会再次发生,我们从A 中提取了身份验证并将其作为单独的提供者CAB 都可以针对现在包含用户信息的 C 进行身份验证。

出现的下一个问题是用户配置文件A 过去用于保存用户配置文件,但现在,我们将其中大部分移至C。但是,我们需要保留一些额外的字段,B 需要这些字段。问题是我是否应该

  1. 保留C 中的所有字段,因为它是身份验证服务,也是保存所有用户信息的地方。
  2. 将其保存在 B,因为这是唯一需要它的地方。

更一般地说,我的问题是如何决定如何将整体分割成单独的部分,如何拆分数据以及如何处理像 userids 这样在所有服务中“共享”的东西?

【问题讨论】:

  • 一般情况下,我会将用户信息保存在身份验证服务中。这使得应用程序 D、E、F、G、H 等更易于创建和维护。
  • 这通常是有道理的,但有一些与 B 相关的信息与用户相关。这就是我困惑的原因。
  • 没有更多细节,很难提供比一般答案更多的东西。我理解你为什么不想进入你的具体情况。
  • 如果您可以让我知道您在寻找什么,我可以添加详细信息。

标签: database-design architecture microservices


【解决方案1】:

我同意 Gilbert 的评论:与用户相关的数据字段应该保存在用户身份验证服务中。

一般而言,可能没有一种“正确”的方式来设置边界,但确实存在一些一般概念,例如bounded contexts 的想法。此外,在处理微服务架构时应牢记的一个重要目标是服务应该能够相互独立地开发和部署。

关于我发现有用的主题的更多资源和最佳实践:

【讨论】:

    猜你喜欢
    • 2020-09-12
    • 2021-04-13
    • 2020-03-27
    • 2019-04-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-17
    • 2017-07-25
    • 2021-12-23
    相关资源
    最近更新 更多