在Google Cloud Functions之间进行内部交流?

时间:2018-08-31 14:24:22

标签: google-cloud-platform google-cloud-functions

我们创建了一个Google Cloud Function,它实质上是一个内部API。在不公开该功能的HTTP端点的情况下,其他内部Google Cloud Functions是否可以与该API函数进行通讯?

我们已经查看过PubSub,但据我们所知,您可以发送请求(说!),但您不会收到响应。

理想情况下,由于额外的安全后果,我们不想公开HTTP端点,我们正在尝试采用微服务方法,因此每个功能都是其自己的实体。

2 个答案:

答案 0 :(得分:1)

我同情您的微服务方法,并试图保持您的服务独立。您无需打开所有HTTP功能即可完成此操作。克里斯·理查森(Chris Richardson)在其出色的网站microservices.io上描述了类似的案例:

  

您已应用“每个服务的数据库”模式。每个服务都有   它自己的数据库。但是,某些业务交易跨多个   服务,因此您需要一种机制来确保   服务。例如,假设您正在建立一个电子商务商店   客户有信用额度的地方。该应用程序必须确保   新订单不会超过客户的信用额度。自订单以来   并且客户位于不同的数据库中,应用程序无法简单地   使用本地ACID交易。

然后他继续:

  

使用此方法的电子商务应用程序将创建一个   使用由以下内容组成的基于编排的传奇的命令   步骤:

     
      
  1. 订单服务创建处于待处理状态的订单,并发布OrderCreated事件。
  2.   
  3. 客户服务部门收到尝试为该订单保留信用的事件。它将发布“保留信用”事件或   CreditLimitExceeded事件。
  4.   
  5. 订单服务接收事件并将订单状态更改为已批准或已取消。
  6.   

基本上,第一个微服务不是向同步函数返回同步返回值,而是向第二个微服务发送异步的“请求事件”,第二个微服务发出第一个服务选择的“响应事件”。您将使用Cloud PubSub发送和接收消息。

您可以在他的网站上的Saga pattern下阅读有关此内容的更多信息。

答案 1 :(得分:0)

最直接的方法是将您的API封装到一个常规函数或对象中,并将这些额外的代码与每个需要使用它的函数一起部署。您甚至可能希望像npm模块中所期望的那样完全模块化代码。