【问题标题】:GCP: Best approach for sending scheduled notificationGCP:发送预定通知的最佳方法
【发布时间】:2021-03-31 00:24:42
【问题描述】:
我正在开发一个类似提醒的应用,它需要在特定时间发送通知。
基本上,用户会创建某种提醒,我需要在指定的时间发送通知。我正在使用 Firebase Cloud Messaging 发送通知。
我现在的想法是将所有请求存储在我的数据库中,并拥有每天触发的“爬虫”服务来检查所有请求并在需要时发送通知。
这适用于少数用户,但如果我很幸运并且我的应用吸引了大量用户,这些服务将不得不每天处理数百万个请求,我不想做这种昂贵的操作。
我对所有解决方案持开放态度,但更喜欢 Google Cloud 提供的解决方案。
【问题讨论】:
标签:
firebase
google-cloud-platform
push-notification
firebase-cloud-messaging
【解决方案1】:
您可以将 Firebase 函数与 Cloud Scheduler 一起用作触发器。
假设您将该调度程序配置为每分钟运行一次。这仍然是 1 * 60 * 24 * 30 = 43200 函数每 30 天运行一次。与 Firebase/G Cloud Functions 的定价相比,这仍然非常低。
我正在做类似的事情。
我使用 Firebase Firestore(与 Cloud Firestore 相同)。
对于每个用户,我都有一个“time_to_send”字段。当函数运行时,它会查询“time_to_send”值小于(过去)或等于 > 的用户。
对于那些用户(通常是少数,因为它每分钟运行一次),该函数会发送通知并将“time_to_send”更新为未来的值(下次应该通知他们)。
也就是说,就成本而言,您必须计算:
- 每月运行 43.2k 计划函数
- (用户数)X(每个用户每月的平均通知数)X(1 数据库读取 + 1 数据库写入)
您必须计算这种方法是否适合您。