GCP:发送预定通知的最佳方法
GCP: Best approach for sending scheduled notification
我正在开发一个类似提醒的应用程序,需要在特定时间发送通知。
基本上,用户会创建某种提醒,我需要在指定时间发送通知。我正在使用 Firebase Cloud Messaging 发送通知。
我现在的想法是将所有请求存储在我的数据库中,并拥有每天都会触发的“爬虫”服务,以检查所有请求并在需要时发送通知。
这适用于少量用户,但如果我运气好并且我的应用程序吸引了大量用户,这些服务每天将不得不处理数百万个请求,我宁愿不进行这种昂贵的操作。
我对所有解决方案持开放态度,但更喜欢来自 Google Cloud 的解决方案。
您可以使用带有 Cloud Scheduler 作为触发器的 Firebase 函数。
假设您将该调度程序配置为每分钟 运行。这仍然是每 30 天 1 * 60 * 24 * 30 = 43200 个函数 运行s。与 Firebase/G Cloud Functions 的定价相比,这仍然很低。
我正在做类似的事情。
我使用 Firebase Firestore(与 Cloud Firestore 相同)。
对于每个用户,我都有一个“time_to_send”字段。当函数 运行s 时,它查询具有小于(过去)或等于 << 现在 >> 的“time_to_send”值的用户。
对于那些用户(通常是一个小数字,因为它每分钟 运行s),该函数发送通知并将“time_to_send”更新为将来的值(下一次应该通知他们)。
也就是说,就成本而言,您必须计算:
- 43.2k 计划函数每月 运行 秒
- (用户数量)X(每个用户每月的平均通知数量)X(1 数据库读取 + 1 数据库写入 )
您必须计算您是否负担得起这种方法。
如果您使用 google 云,最好的选择是使用 Cloud Task. You can create a task with a date of trigger in the future, first feature mentioned here
只需使用目标日期和时间以及所需参数创建您的任务即可。在 D-day,此任务将使用参数调用 HTTP 端点。因此,只需创建一个准备好调用并执行该工作的函数。以后让 Cloud Task 管理触发器。
我正在开发一个类似提醒的应用程序,需要在特定时间发送通知。 基本上,用户会创建某种提醒,我需要在指定时间发送通知。我正在使用 Firebase Cloud Messaging 发送通知。
我现在的想法是将所有请求存储在我的数据库中,并拥有每天都会触发的“爬虫”服务,以检查所有请求并在需要时发送通知。
这适用于少量用户,但如果我运气好并且我的应用程序吸引了大量用户,这些服务每天将不得不处理数百万个请求,我宁愿不进行这种昂贵的操作。
我对所有解决方案持开放态度,但更喜欢来自 Google Cloud 的解决方案。
您可以使用带有 Cloud Scheduler 作为触发器的 Firebase 函数。
假设您将该调度程序配置为每分钟 运行。这仍然是每 30 天 1 * 60 * 24 * 30 = 43200 个函数 运行s。与 Firebase/G Cloud Functions 的定价相比,这仍然很低。
我正在做类似的事情。
我使用 Firebase Firestore(与 Cloud Firestore 相同)。
对于每个用户,我都有一个“time_to_send”字段。当函数 运行s 时,它查询具有小于(过去)或等于 << 现在 >> 的“time_to_send”值的用户。
对于那些用户(通常是一个小数字,因为它每分钟 运行s),该函数发送通知并将“time_to_send”更新为将来的值(下一次应该通知他们)。
也就是说,就成本而言,您必须计算:
- 43.2k 计划函数每月 运行 秒
- (用户数量)X(每个用户每月的平均通知数量)X(1 数据库读取 + 1 数据库写入 )
您必须计算您是否负担得起这种方法。
如果您使用 google 云,最好的选择是使用 Cloud Task. You can create a task with a date of trigger in the future, first feature mentioned here
只需使用目标日期和时间以及所需参数创建您的任务即可。在 D-day,此任务将使用参数调用 HTTP 端点。因此,只需创建一个准备好调用并执行该工作的函数。以后让 Cloud Task 管理触发器。