【问题标题】: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 数据库写入

    您必须计算这种方法是否适合您。

    【讨论】:

      【解决方案2】:

      如果您使用谷歌云,最好的选择是使用Cloud Task。您可以创建一个未来触发日期的任务,first feature mentioned here

      只需使用目标日期和时间以及所需参数创建您的任务。在 D 日,此任务将使用参数调用 HTTP 端点。因此,只需创建一个准备好被调用并执行工作的函数。让 Cloud Task 将来管理触发器。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2012-12-18
        • 2018-01-22
        • 1970-01-01
        • 2012-02-27
        • 2019-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多