我正在考虑从AWS迁移到Google Cloud,其中有些概念对我来说是陌生的,而且我在网上找不到太多信息。使用AWS,您可以让一个Lambda以编程方式调用另一个Lambda,并等待回调。这是由Promise驱动的,因此完全异步并且很容易扩展。
使用Google云功能,您似乎没有此功能,这对我们至关重要,因为我们有一个运行GraphQL的微服务,并且它需要能够调用其他微服务中的云功能。
我能想到的唯一方法是使用cloud pub sub,其中GraphQL调度有关主题的事件,并且该事件包括由GraphQL生成的uuid。正确的微服务已订阅该主题,接收该事件,执行其所需的操作,然后针对与第一个事件中发送的uuid具有相同名称的主题发出响应事件。然后GraphQL微服务侦听该主题,获取响应事件,然后将响应返回给浏览器。
但是,这种方法似乎很复杂,可能很慢并且扩展性不好(您只能有1000个主题)。有更好的解决方案吗?令我惊讶的是,在线上对此没有更多讨论,这似乎是Google的重大失败。
答案 0 :(得分:1)
在函数之间共享代码的通常方法是简单地为其编写一个模块,然后根据需要在多个函数中调用该模块。您可以创建所需的任何API,并且在多个功能中部署该代码段无需花费任何额外费用。它也应该大规模减少成本,因为当您只需要一个函数调用时,您就不必为第二个函数调用付费。
如果要处理HTTP类型触发器,则可以简单地从一个功能向另一个功能发出HTTP请求。
如果您实际上需要触发不能基于HTTP的第二个函数执行,则可以使用pubsub。但是我同意这不是双向通信的好系统。