首页 文章

微服务数据检索

提问于
浏览
2

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

  • 客户端应用程序向订单微服务发出请求,然后向用户微服务请求检索用户信息的订单

  • 客户端应用程序向订购mircoservice发出请求,这对用户微服务进行了请求

  • 订单微服务数据库存储有关用户的必要信息

For first case - 客户端应用程序从两个来源(订单和用户)一起构建和汇总数据很复杂

For second case - 如果我们有两个以上的微服务,那么总请求时间将会增长

For third case 与数据一致性问题(用户更改数据,但订单服务数据库尚未更新)

哪种情况最常用?

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

1 回答

  • 1

    要回答这三种情况,它将完全依赖于微服务架构 .

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

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

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

    哪种情况最常用?

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

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

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

相关问题