在 PubSub 后端函数或 Http 函数之间进行选择
Choosing between PubSub Backend Function or Http Function
我们正在设计 Google PubSub 的监听端,并将为此使用 Google 函数。有两种选择,推送和后端功能。使用 Http 推送并将消息推送到函数。后端函数使用触发来调用函数。
我们遇到困难的地方在于决定哪种方法可能更适合我们的应用程序。我们无法在 Google 文档中找到这两种方法之间的差异列表。
我们注意到的一些事情是:
- Http 函数使用 Expressjs 结构,其中后端函数只是一个函数。
- 消息退休似乎仅适用于后端功能。
- 尚不清楚死信队列是否以及如何与后端函数一起工作。
- 每秒可处理的消息数是否有差异?
- 还有很多我们不想问的项目...
这里的问题是,应该确定什么来帮助在接收 PubSub 消息的 http 函数或后端函数之间进行选择?
我的观点更多是在安全性和可用性方面。
后端函数
- 内置 pubsub 和函数之间的身份验证
- 无public曝光
- 无死信主题容量
- 无消息过滤能力
- 无订购键容量
推送功能
- 需要自己管理安全(使用
no-allow-unauthenticated
部署该功能并在您的推送订阅中放置一个服务帐户以确保安全)
- Public曝光(入口控制设置为内部阻止所有外部调用,包括pubsub推送订阅,您不能使用此功能)
- 由 PubSub 和其他进程触发(非常适合测试或重放事件)
- 死信主题、重试策略、排序键和过滤可用。
- 更便携的格式。您可以推送到任何端点:Cloud Functions、Cloud 运行、Compute Engine,甚至是外部端点。你不那么被束缚
两种情况都可以重试
所以,我更喜欢推送订阅+http Cloud Function 的模式。每秒消息数应该是一个问题(至少每秒最多 250k 条消息)
很遗憾我不能发表评论,所以我有一个单独的答案。
根据我个人的经验和意见,如果可能的话,我总是更喜欢 Pub/Sub 触发的云功能(实际上这是 'push' 订阅)。
我的主要推理:
- 更简单的安全性,因此出错的空间更小,例如,公开暴露端点的机会更少。
- Pub/Sub 中的消息 - 一种水平可伸缩性机制(将其用作缓冲区)。客户端发布消息,'forgets'...
- 一条消息可以触发不止一种(类型)云函数 ('in parallel')。
不足之处(个人观点):
- 隐式确认
- 无排序或过滤
我们正在设计 Google PubSub 的监听端,并将为此使用 Google 函数。有两种选择,推送和后端功能。使用 Http 推送并将消息推送到函数。后端函数使用触发来调用函数。
我们遇到困难的地方在于决定哪种方法可能更适合我们的应用程序。我们无法在 Google 文档中找到这两种方法之间的差异列表。
我们注意到的一些事情是:
- Http 函数使用 Expressjs 结构,其中后端函数只是一个函数。
- 消息退休似乎仅适用于后端功能。
- 尚不清楚死信队列是否以及如何与后端函数一起工作。
- 每秒可处理的消息数是否有差异?
- 还有很多我们不想问的项目...
这里的问题是,应该确定什么来帮助在接收 PubSub 消息的 http 函数或后端函数之间进行选择?
我的观点更多是在安全性和可用性方面。
后端函数
- 内置 pubsub 和函数之间的身份验证
- 无public曝光
- 无死信主题容量
- 无消息过滤能力
- 无订购键容量
推送功能
- 需要自己管理安全(使用
no-allow-unauthenticated
部署该功能并在您的推送订阅中放置一个服务帐户以确保安全) - Public曝光(入口控制设置为内部阻止所有外部调用,包括pubsub推送订阅,您不能使用此功能)
- 由 PubSub 和其他进程触发(非常适合测试或重放事件)
- 死信主题、重试策略、排序键和过滤可用。
- 更便携的格式。您可以推送到任何端点:Cloud Functions、Cloud 运行、Compute Engine,甚至是外部端点。你不那么被束缚
两种情况都可以重试
所以,我更喜欢推送订阅+http Cloud Function 的模式。每秒消息数应该是一个问题(至少每秒最多 250k 条消息)
很遗憾我不能发表评论,所以我有一个单独的答案。
根据我个人的经验和意见,如果可能的话,我总是更喜欢 Pub/Sub 触发的云功能(实际上这是 'push' 订阅)。
我的主要推理:
- 更简单的安全性,因此出错的空间更小,例如,公开暴露端点的机会更少。
- Pub/Sub 中的消息 - 一种水平可伸缩性机制(将其用作缓冲区)。客户端发布消息,'forgets'...
- 一条消息可以触发不止一种(类型)云函数 ('in parallel')。
不足之处(个人观点):
- 隐式确认
- 无排序或过滤