需求
需要根据客户指定时间触发业务
- 指定时间触发、指定时间结束,比如 12:01:09:13:13:29:30
- 用户可以随时修改时间
- 触发时间误差越小越好
- 业务量会不断增长
我当前的设计思路:
- 执行数据库操作 Job,定时查询快要生效或者失效的数据到 Redis list 结构中
- 执行 Redis 操作 Job 处理生效数据,定时查询当前内存快要生效数据,发现生效则进行事件触发,加入线程池中进行操作
- 执行 Redis 操作 Job 处理失效数据,定时查询当前内存快要失效数据,发现失效则进行事件触发,加入线程池中进行操作
- 每个 Job 的时间可以根据业务量进行调整,比如数据库半小时拉取一次半小时内会生效数据加载到 Redis,Redis 每 2 分钟遍历数据判断当前是否生效操作
- Redis 数据结构为 List,用户修改时间时后如果不再在时间范围内则进行删除,如果在则先删除再插入
大概的流程图
数据库查询执行 Job
Reids 生效执行 Job
我的疑问
- 使用 Redis list 数据结构是否合理,是否需要排序用 zset(集群下 zset 效率是否有问题)
- 业务量不断增大时需要对 Redis list 进行分区处理(多个 list 多台机器消费),怎样做到自动扩展
- 目前还没有进行具体的操作的时间估算,还不确定基于当前的方案最大可以处理的业务量和时间误差可以做到什么程度?当前方案的瓶颈和风险还有哪些?
对于当前方案我思考的还比较粗糙,大家对这个方案有什么疑问?有什么更好的想法
欢迎来到这里!
我们正在构建一个小众社区,大家在这里相互信任,以平等 • 自由 • 奔放的价值观进行分享交流。最终,希望大家能够找到与自己志同道合的伙伴,共同成长。
注册 关于