微服务数据检索

时间:2018-05-18 08:22:44

标签: architecture microservices

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

  1. 客户端应用程序向订单微服务发出请求并在生成n之后 请求用户微服务检索订单的用户信息
  2. 客户端应用程序向订购mircoservice发出请求,该请求向用户微服务发出请求
  3. 订购微服务数据库存储有关用户的必要信息
  4. 对于第一种情况 - 客户端应用程序从两个来源(订单和用户)一起构建和汇总数据非常复杂

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

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

    哪种情况最常用?

    和小问题#2 - 在微服务和web api应用的情况下 - 每个微服务只包含一个或两个控制器?

1 个答案:

答案 0 :(得分:3)

  

要回答你的所有三个案例,它将纯粹依赖于   微服务架构。

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

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

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

  

哪种情况最常用?

<强>答。 我不认为任何人使用第一种方法是不好的做法。如果你有不同的微服务数据库,那么第二种情况就是你的答案。如果您有单个数据库,那么您也可以继续使用第三个案例。但是您的服务层代码将在不同的微服务上复制。

  

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

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