【问题标题】:Microservices data retrieve微服务数据检索
【发布时间】:2018-10-28 15:12:12
【问题描述】:

美好的一天 我读了一些关于微服务架构的书,但我仍然有疑问.. 其中之一是关于您需要检索一些实体的数据的情况,这些实体与其他实体连接...... 例如:我们有订单和用户微服务,例如每个订单都有一些关于用户和客户想要检索用户订单的信息 所以我看到了三种方法来实现这一点:

  1. 客户端应用程序向微服务发出订单请求,然后发出 n 请求用户微服务以检索订单的用户信息
  2. 客户端应用程序向订单微服务发出请求,后者向用户微服务发出相互请求
  3. 订单微服务数据库存储有关用户的必要信息

对于第一种情况 - 客户端应用程序从两个来源(订单和用户)构建和聚合数据是很复杂的

第二种情况 - 如果我们有两个以上的微服务,那么总请求时间将会增加

第三种情况与数据一致问题(用户更改数据,但订单服务数据库尚未更新)

哪种情况最常用?

还有一个小问题 #2 - 对于微服务和 Web api 应用程序 - 每个微服务只包含一个或两个控制器?

【问题讨论】:

    标签: architecture microservices


    【解决方案1】:

    要回答您的所有三种情况,这完全取决于 微服务架构。

    第一种情况 -> 根据这种情况,您的客户必须通过调用不同的微服务来做出统一的响应。这是客户端的开销,这是一种糟糕的架构方法。

    第二种情况 -> 与第一种情况相比,这是一种很好的方法。如果您有独立的数据库/表(没有任何直接关系),那么这将是一个好方法。只需将 orderId/userId 的引用存储在相应的表中即可获取这些详细信息。您的总请求时间将分组,但您的用户模块将独立于订单模块工作。通过这种方法,您将实现松散耦合。

    第三种情况 -> 如果您没有为每个微服务使用不同的数据库,那么这将是您的最佳方法,因为它将减少对数据库以及其他微服务的调用次数。您可以通过为每个所需模型实现服务方法来获取直接详细信息。

    哪种情况最常用?

    回答。 我认为没有人使用第一种方法作为其不好的做法。如果您对不同的微服务有不同的数据库,那么第二种情况就是您的答案。如果您有单个数据库,那么您也可以继续使用第三种情况。但是你的服务层代码会被复制到不同的微服务中。

    如果是微服务和 web api 应用程序 - 每个微服务只包含一个或两个控制器?

    每个微服务中的控制器数量没有标准。这将取决于微服务的规模和该微服务执行的职责。

    【讨论】:

      猜你喜欢
      • 2020-08-07
      • 2022-10-30
      • 2019-03-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多