当前位置: 首页 > 知识库问答 >
问题:

微服务应该负责这个还是api网关?

栾耀
2023-03-14

我正在构建一个微服务架构,但有一部分我有点困惑。我使用Kafka作为消息代理系统在我的服务中进行通信。一个完美的例子是Uber的请求估计API。它返回持续时间、距离、价格等。我假设他们对每一项都有一个微服务,即定价服务、持续时间/距离服务、司机服务、,等等。我的问题是,当点击endpoint时,requests microservice是否会对其他microservice进行rest调用,以检索持续时间、距离等数据?或者API网关会解决这个问题吗?

共有3个答案

倪风史
2023-03-14

实际上,并非所有网关API都支持多个调用和聚合。在微服务体系结构中,有一种常见的模式(“应用编程接口组合”、“组合模式”,特别是“聚合器模式”),其思想是您需要制作一个单独的服务,该服务将包含多个调用和聚合的业务逻辑。

子车煌
2023-03-14

这两种方法都是完全有效的,但是我将采用估计微服务的方法,以避免在API网关中放入太多逻辑。

也许将来你的估计计算会改变,每次更新网关对我来说意义不大。

毛弘博
2023-03-14

我说这取决于用例。如果服务A需要知道服务B知道什么,那么服务A向服务B进行REST调用是完全合理的。但是如果网关只需要A和B的组合知识,那么网关可以组合结果。

 类似资料:
  • 我有两个微服务,用户微服务和订单微服务。 因此客户端只需要调用一个endpointhttp://localhost:9090/api/getdetail 我们如何在API网关级别实现这一点?

  • 微丝网应该可重复使用吗?对于可重用,我并不意味着共享特定于域的模型。 我的意思是,为一个应用程序创建的微服务是否应该在另一个应用程序中重用?如果它们可以在应用程序中重用,是否足够? 分离微服务的最佳方法是什么。从我的观点来看,一旦一个微服务调用另一微服务,它就会紧密耦合,这意味着它不容易(无需修改)被提取并放入另一个没有它所引用/来自的相同服务的微服务应用程序中。 在我看来,要使它们脱钩,有以下几

  • 使用App Engine Flexible环境,我准备部署Angular 4客户端,并研究云endpoint来处理我的节点。js/express微服务似乎简化了endpoint请求的安全保护和身份验证,我想澄清几件事: > 我是使用云endpoint作为API网关,将请求路由到各个微服务后端,还是应该将微服务本身构建为各个endpoint应用程序? 我是静态托管Angular 4应用程序(与服务器

  • 我有一个包含10个微服务的微服务架构,每个微服务提供一个客户端。在由微服务团队管理/控制的客户机内部,我们只接收参数并将它们传递给一个通用http调用程序,该调用程序接收endpoint和N个params,然后进行调用。所有微服务都使用http和web api(我猜技术并不重要)。 对于我来说,作为微服务团队提供一个客户是没有意义的,应该是消费者的责任,如果他们想创建一些抽象或者直接调用它是他们的

  • 在微服务架构中,建议: > 客户端应用程序到API网关的通信应该是同步的(就像http上的REST一样)。 API网关到微服务的通信也应该是同步的 但是服务到服务的通信应该是异步的。 您应该尽可能遵循的另一个规则是,只使用内部服务之间的异步消息传递,只使用从客户端应用程序到前端服务(API网关加上第一级微服务)的同步通信(如HTTP)。 现在,如果我理解正确的话,当用户向API gateway请求

  • 我有一个使用GraphQL的微服务架构。它有一个GraphQL网关,它使用模式拼接来组合所有GraphQL模式。 我计划按照以下方式实现身份验证和授权: 身份验证-令牌由第三方(AWS Cognito) 解码--我想在网关级别执行此操作。这是一个巨大的好处。它将消除很多跨多个微服务的逻辑。这也使得迁移变得很容易,以防我们需要更改提供程序(AUTH0?)。加 服务中的授权-所有服务必须管理的是授权和

  • 在构建API时,编写接口代码是一个很好的实践,因此返回CompletionStage似乎是一个最好的方法。然而,我意识到我碰巧总是在获得CompletionStage之后调用.ToCompletableFuture。在这种情况下,推荐的方法是什么?