-
时间轮算法剖析;采用一个循环的槽列表作为主要的存储结构,每个槽对应一个列表(存放此刻应该被执行的命令集合),然后另起一个任务每隔一段时间对槽的当前位置进行变换(或者根据时间的推移当前位置进行变更)
-
如果列表存储的数据太大,可以将每个列表映射到redis的一个list
- 如果延迟的时间跨度太大,比如一个星期、一个月等;这样需要的list太多,占用的内存太大
将数据(需要触发的事件)按触发时间分散存储在多个文件中
启动一个任务,只将最近半小时的事件放入内存,以达到节省内存的目的
- 延时服务中台化
将延迟任务中心作为中台化,作为基础服务提供出去; 确保与其他使用模块进行解耦 将到期的事件列表存放到队列中间件中,使用的模块进行监听队列 以达到解耦的目的 -
改造MQ实现延时消息
- 消息按顺序存储在CommitLog文件中;
- Dispatch线程将消息按主题分发到不同的Queue中。
3865



被折叠的 条评论
为什么被折叠?



