基于时间的通知服务
Time based notifications service
我正在处理订阅,其中用户订阅了一个计划并且它有一个过期。
所以基本上每个用户存储都有一个 expiration
字段。
我希望能够在用户计划实际过期时立即收到通知。
现在,我有一项每天对所有用户运行一次的工作,并检查是否有人已过期,但理想情况下,我希望在用户过期时获得服务器回发或某种事件 运行 每天都这样。
您能想到处理此类事情的任何第三方服务/数据库/其他工具吗?
许多服务,例如 Stripe,会在用户的订阅续订/过期时通过 webhook 通知您。他们只是像我一样 运行 重复工作吗?
希望我说得足够清楚,如果能帮助我将搜索重点放在 Google 中,也将不胜感激。
我当前的堆栈是 Mongodb、Node.js、AWS
谢谢
我们不确定 Stripe 如何处理它。
我想到了两个解决方案。让我们从简单的开始:
定时任务
正如您提到的,您已经有了一个 Cronjob 解决方案,但您可以改为 运行 每小时或每 10 分钟。只需确保将查询优化到最大程度,这样它就不会超重到 运行。
它很有吸引力,易于实施,边缘情况很少,但正如您可能遇到的那样,一旦您达到数百万客户,它可能会拖累性能。
计时器
实现各不相同,您需要担心边缘情况,但概念:
- 在开始日* (00:00) 查询所有设置为今天过期的客户,将它们保存到数组(内存中)。按时间对数组进行排序(最好是降序)。
- 创建定时器以在最后一个数组的元素时间执行。
- 功能:如果Client X现在到期,查询数据库以确保订阅没有被延长。如果不是,请通知。
- 从跟踪数组中删除 Client X。重复步骤 2.
在开始日* - 也 运行 在脚本启动时。
我正在处理订阅,其中用户订阅了一个计划并且它有一个过期。
所以基本上每个用户存储都有一个 expiration
字段。
我希望能够在用户计划实际过期时立即收到通知。
现在,我有一项每天对所有用户运行一次的工作,并检查是否有人已过期,但理想情况下,我希望在用户过期时获得服务器回发或某种事件 运行 每天都这样。
您能想到处理此类事情的任何第三方服务/数据库/其他工具吗?
许多服务,例如 Stripe,会在用户的订阅续订/过期时通过 webhook 通知您。他们只是像我一样 运行 重复工作吗?
希望我说得足够清楚,如果能帮助我将搜索重点放在 Google 中,也将不胜感激。
我当前的堆栈是 Mongodb、Node.js、AWS
谢谢
我们不确定 Stripe 如何处理它。
我想到了两个解决方案。让我们从简单的开始:
定时任务
正如您提到的,您已经有了一个 Cronjob 解决方案,但您可以改为 运行 每小时或每 10 分钟。只需确保将查询优化到最大程度,这样它就不会超重到 运行。
它很有吸引力,易于实施,边缘情况很少,但正如您可能遇到的那样,一旦您达到数百万客户,它可能会拖累性能。
计时器
实现各不相同,您需要担心边缘情况,但概念:
- 在开始日* (00:00) 查询所有设置为今天过期的客户,将它们保存到数组(内存中)。按时间对数组进行排序(最好是降序)。
- 创建定时器以在最后一个数组的元素时间执行。
- 功能:如果Client X现在到期,查询数据库以确保订阅没有被延长。如果不是,请通知。
- 从跟踪数组中删除 Client X。重复步骤 2.
在开始日* - 也 运行 在脚本启动时。