如何使用 Google 云端点(网关)在单个 api 端点中创建来自多个微服务(云 运行 容器)的组合响应?

How create a combined response from multiple microservices (cloud run containers) in a single api endpoint using Google Cloud Endpoints (gateway)?

我对firebase平台比较熟悉,但对google云平台整体来说还是比较新的。 我正在开发一个使用微服务结构构建的项目,我确实有很多问题无法找到答案,或者更好的是我找不到任何示例。 不幸的是,我能够找到的所有示例都非常简单,能够为我的问题推断出可行的答案。

我采用了新的云 运行 产品,我决定使用完全托管版本(不是 kubernetes)。我构建了几个微服务(每个服务都是使用 express for node 或 flask for python 构建的 - 取决于服务的作用)。每个微服务都公开它自己的端点并拥有自己的 api 来调用方法 - 我使用服务帐户来允许应用程序执行内部调用。

我现在想将应用程序公开给外部(特别是我使用 vuejs 技术构建的客户端),我试图利用另一个 google 产品来创建和公开一个 api: google 个端点。

我的问题(具体指云 运行 结构)与创建 api 端点以与客户端应用程序通信的可能性和我需要做什么有关,在内部调用多个服务并将它们的响应合并为一个。

为了清楚起见,我们举个例子:

我如何直接在端点网关中聚合响应,检查是否有故障,如果一切顺利,将聚合响应发送给客户端?

我需要在其他东西中构建聚合端点,例如云函数?或者我可以直接在 google 端点网关中完成?

请注意,对于云 运行,google 端点是另一个云 运行 容器。

感谢大家的帮助,运行这里几乎没有选择。

根据我的理解,API 网关应该只是充当代理,将所有微服务呈现为单个端点。对于这种情况,我认为您可以采用以下两种方法:

1:实现一个新的微服务(或任何现有微服务),它将执行调用和响应聚合。

2:客户端(如 UI)可以调用服务并在他们这边进行聚合。

我觉得,在 api-gateway 做这件事不是个好主意。

在我看来,从架构的角度来看,对您来说最好的选择是创建一个新的微服务,它将接收其他两个的响应,然后聚合它们。

我了解到您想在 api-geteway 中聚合响应,但您找不到它的代码示例。 Here I was able to find a guide on what are you wanting to implement. The full code implementation can be found in this repository.

不过请记住,这种实施想法并不是最佳做法。

这没关系,前提是要合并的这两个服务是独立的。也就是说它们之间没有functional/business关系,聚合过程中不会出现并发或不一致的问题。