将Pub/Sub与GKE一起用于谷歌云存储



我有一个GKE应用程序,它目前由谷歌云存储桶中的通知驱动。我想将这个node.js应用程序转换为由PubSub通知触发。我一天中大部分时间都在谷歌文档页面上爬行,但没有明确的答案。我看到一些python代码可以做到这一点,但它并没有多大帮助。

目前编写的代码正在运行——一个图像降落在我的GCS存储桶中会触发对我的GKE吊舱的通知,我的功能就会运行。试图了解我需要在函数内部做什么来订阅Pub/Sub主题以触发处理。欢迎提出任何建议。

首先谢谢,我不知道GCS的通知功能

原理是接近的,但您使用PubSub作为中介。您没有使用watchbucket命令直接通知应用程序,而是通知PubSub主题。

从那里,通知到达PubSub主题,现在您必须创建订阅。可能有两种类型:

  • Push:指定一个HTTP URL,该URL通过POST请求调用,正文包含通知消息
  • Pull:您的应用程序需要创建与PubSub订阅的连接并读取消息

Pro和cons

  • 推送需要从PubSub推送订阅到应用程序的身份验证。如果您使用内部IP,则不能使用此解决方案(URL端点必须是可公开访问的(。主要优点是模型的可扩展性和简单性
  • Pull需要对订阅者(这里是您的应用程序(进行身份验证,因此,即使您的应用是私人部署的,您也可以使用Pull订阅。Pull建议用于高吞吐量,但需要更高的处理、并发/多线程编程技能。您不按请求率进行缩放(与Push模型一样(,而是根据您阅读的消息数量进行缩放。您需要手动确认这些消息

此处提到了数据模型。您的pubsub消息类似于

{
"data": string,
"attributes": {
string: string,
...
},
"messageId": string,
"publishTime": string,
"orderingKey": string
}

文档中描述了这些属性,有效载荷(base64编码,小心(具有此格式。和你今天得到的非常相似。

那么,为什么是属性呢?因为您可以使用PubSub上的筛选功能来创建仅包含消息子集的订阅。


如果您在GKE集群中使用Cloud Run for Anthos,您也可以隐藏装备并使用Cloud Event(基于Knative事件(。这里的主要优势是解决方案的可移植性,因为消息符合云事件格式,而不是GCP特有的。

最新更新