定期付款的系统设计模式



我想问一下,有哪些常见的、被广泛采用的模式来设计一个在用户订阅到期时自动续订的系统。

我特别问如何触发该操作?

假设有一个系统,其中包含一些执行所有逻辑的 RenewSubscription 方法。该方法应在用户的订阅过期后立即触发。

我看到实现它的唯一方法是具有某种后台任务(控制台应用程序或 lambda(,该任务每 N 秒(或分钟(查询一次数据库并检查是否有任何过期的订阅要续订。

是否可以在不每隔几秒钟查询一次数据库的情况下实现此操作?

有必要在某个时候查询数据库以获取订阅过期的用户,因此在任何情况下都需要某种 cron 作业。至于后台任务应该多久触发一次IMO,这取决于您在到期和续订之间的可接受阈值(秒,分钟,小时(。还要考虑 RenewSubscription 方法的性能、要更新的用户量以及运行数据库查询所需的时间。理想情况下,cron 作业应该在下一个作业开始之前完成,如果不可能,您需要考虑有多少进程可以并行运行而不会达到内存/CPU 限制(如果有(。我相信您必须运行一些基准测试才能为您的用例找到可接受的平衡。

最新更新