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

Google cloud platform 如何使用Google云端点(网关)在单个api端点中从多个微服务(云运行容器)创建组合响应?,google-cloud-platform,microservices,google-cloud-endpoints,google-cloud-run,Google Cloud Platform,Microservices,Google Cloud Endpoints,Google Cloud Run,我熟悉firebase平台,但总体而言,我是谷歌云平台的新用户。 我正在从事一个使用微服务结构构建的项目,我确实有很多问题找不到答案,或者更好的是,我找不到任何例子。 不幸的是,我所能找到的所有例子都很简单,能够为我的问题推断出一个可行的答案 我采用了新的云运行服务,并决定使用完整的托管版本(而不是kubernetes)。我构建了几个微服务(每个服务都是使用express for node或flask for python构建的,具体取决于服务的功能)。每个微服务都公开自己的端点,并有自己的ap

我熟悉firebase平台,但总体而言,我是谷歌云平台的新用户。 我正在从事一个使用微服务结构构建的项目,我确实有很多问题找不到答案,或者更好的是,我找不到任何例子。 不幸的是,我所能找到的所有例子都很简单,能够为我的问题推断出一个可行的答案

我采用了新的云运行服务,并决定使用完整的托管版本(而不是kubernetes)。我构建了几个微服务(每个服务都是使用express for node或flask for python构建的,具体取决于服务的功能)。每个微服务都公开自己的端点,并有自己的api来调用这些方法——我使用一个服务帐户来允许应用程序执行内部调用

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

我的问题(特别是指云运行结构)与如何创建api端点以与客户端应用程序通信有关,客户端应用程序在内部调用多个服务并将其响应合并到一个服务中

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

  • 云运行服务1->crud用户api

  • 云运行服务2->crud产品api

  • 云端点外部可见api->从服务1获取用户,然后从服务2获取产品,并返回组合响应用户Jane Doe的所有绿色产品

如何在端点网关中直接聚合响应、检查故障以及如果一切顺利,如何将聚合响应发送到客户端

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

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


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

据我所知,API网关应该只是作为一个代理,将所有微服务作为一个端点来提供。对于这种情况,我认为您可以采用以下两种方法:

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

2:客户端(如UI)可以调用服务,并在服务端进行聚合


我觉得,在api网关上这样做不是一个好主意。

根据我的理解,api网关应该只是作为一个代理,将所有的微服务作为一个端点来提供。对于这种情况,我认为您可以采用以下两种方法:

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

2:客户端(如UI)可以调用服务,并在服务端进行聚合


我觉得,在api网关上这样做不是一个好主意。

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

我知道您希望在api Getway中聚合响应,但找不到相应的代码示例。我找到了一个关于你想要实现什么的指南。完整的代码实现可以在这里找到


但是请记住,这种实现思想并不是最佳实践。

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

我知道您希望在api Getway中聚合响应,但找不到相应的代码示例。我找到了一个关于你想要实现什么的指南。完整的代码实现可以在这里找到


但是请记住,这种实现思想并不是最佳实践。

只有在将要合并的两个服务是独立的情况下,这才可以。这意味着它们之间没有功能/业务关系,聚合过程中不会出现并发或不一致问题

只有在将要合并的两个服务是独立的情况下,这才可以。这意味着它们之间没有功能/业务关系,聚合过程中不会出现并发或不一致问题

Manmay这就是我的想法,但我希望在网关级别找到一些东西,并直接在网关中进行聚合。我更愿意保持整个结构的独立性(试图保持微服务的完全独立性),而您的答案1正好克服了这一点。答案2的问题在于,为了在客户端进行聚合,我将被迫进行多次调用(网关的目的是避免多次调用)。我知道这是可能的,我正在寻找,我只是不知道它是否可能在谷歌端点。只要它为你工作,它会好的。但是,当将来您必须组合/编排多个类似这样的简单服务时,所有服务都需要处于网关级别,在网关中,您可能会打破单一责任原则,在网关中做好业务逻辑/编排逻辑的一部分。在更复杂的情况下,可能导致网关被拆分。只是一个想法。我可以建议使用:N个拥有自己域(DB)的核心服务&1+编排/组合微服务,以公开需要调用多个核心服务(而不是维护自己的数据)的服务以及通过它的网关api。但是如果你