有这个问题主要描述如下:
问题点:
-
A 和 B 甚至更多用户, 在不同时间点需要执行一项任务,那么如何有效率的判断时间点已经到了, 然后执行任务(轮询判断?或者是信号量?还是定时器?)
-
如何记录[保存] 1 中的未执行任务(数据库?),以及需要执行的时间点
场景举例:
用户 A 希望在 1:00 1:43 ... 10:08 里各时间点发布一条消息,且每一条消息独立
用户 B 希望在 1:06 2:08 ... 11:13 里各时间点发布一条消息,且每一条消息独立
用户 C ......
个人想法:
- 假如限制用户设定的定时任务数量(最多 10 条), 那么在数据库里就需要存储 10 条消息,以及其时间点,但是若用户数量增加,那么数据量也会变得很大
- 同时,若每个用户有一个(轮询)判断时间点是否符合的线程,那么用户数量增多也会使得系统负载过高,若使用信号量 /定时器(这个是对任务的), 那么一个用户下最多会产生 10 条定时器,这也会负载过高。
希望有好的方法可以交流一下, 或者交流一下涉及的技术栈,谢谢浏览的各位