定时任务的调度问题

简介: 定时任务的调度问题

公众号merlinsea


  • 定时任务执行定期删除的功能背景
  • 在用户已经购买的短链是有一个有效期限的,如果一旦超过了有效期限,流量包就不能使用,这种情况相当于逻辑删除,但过期的流量包 依旧存储在数据库中,这种流量包对用户而言是没有意义的,但却依旧占据着服务器端端物理内存。随着业务的发展,这种过期的流量包 的记录会占用数据库的内存资源,因此需要引入定时任务,每过一段时间对过期的流量包进行物理删除。


  • 业界常用的删除手段
  • 逻辑删除:这种删除是通过del标记位来判断,当del=0标识没有删除,用户可见;del=1标识已经删除,用户不可见。 优点:可以在服务器端存储用户的记录数 缺点:删除的数据依旧占据着数据库资源
  • 物理删除:这种删除是直接操作数据库,将数据彻底删除,且无法恢复 优点:删除的数据将不会占据数据库的内存资源 缺点:无法恢复用户删除的数据
  • 转移到日志文件归档: 将用户删除的记录存储到日志文件中,如elasticSearch 优点:删除的数据不会继续占据用户数据库,且可以恢复用户的数据,方便做行为分析。


  • 定时任务的分类
  • 单机定时任务:单机的容易实现,但应用于集群环境做分布式部署,就会带来重复执行,解决方案有很多比如加锁、数据库等,但是增加了很多非业务逻辑。
  • 分布式调度定时任务:把需要处理的计划任务放入到统一的平台,实现集群管理调度与分布式部署的定时任务 叫做分布式定时任务 支持集群部署、高可用、并行调度、分片处理等。


  • 单机分布式任务存在的问题:

640.jpg


  • 常见的定时任务


  • 单机:Java自带的java.util.Timer类配置比较麻烦,时间延后问题
  • 单机:ScheduledExecutorService,是基于线程池来进行设计的定时任务类,在这里每个调度的任务都会分配到线程池里的一个线程去执行该任务,并发执行,互不影响
  • 单机:SpringBoot框架自带,SpringBoot使用注解方式开启定时任务
  • 启动类里面 @EnableScheduling开启定时任务,自动扫描
  • 定时任务业务类 加注解 @Component被容器扫描
  • 定时执行的方法加上注解 @Scheduled(fixedRate=2000) 定期执行一次
  • 分布式任务调度框架
  • Elastic-Job
  • XXL-Job
  • Quartz
  • 常见的分布式定时任务框架对比

640.jpg


  • 如何选择分布式定时任务框架?


  • XXL-Job和Elastic-Job都具有广泛的用户基础和完善的技术文档,都可以满足定时任务的基本功能需求
  • xxl-job侧重在业务实现简单和管理方便,容易学习,失败与路由策略丰富, 推荐使用在用户基数相对较少,服务器的数量在一定的范围内的场景下使用
  • elastic-job关注的点在数据,添加了弹性扩容和数据分片的思路,更方便利用分布式服务器的资源, 但是学习难度较大,推荐在数据量庞大,服务器数量多的时候使用


相关文章
VS Code Server 离线安装(解决超时,XHR Failed等问题)
VS Code Server 离线安装(解决超时,XHR Failed等问题)
|
11月前
|
NoSQL 数据库 Redis
分布式锁的实现方案有哪些
分布式锁用于协调跨多个节点的任务执行。基于数据库的分布式锁利用唯一性约束或悲观锁确保锁的唯一性;Redis 实现则依赖 SETNX 指令或 redisson 客户端,通过原子操作保证互斥性;ZooKeeper 通过临时顺序节点与 Watch 机制,实现锁的竞争、释放及获取。
168 4
|
资源调度
umi中AssertionError [ERR_ASSERTION]: filePath not found of
umi中AssertionError [ERR_ASSERTION]: filePath not found of
|
9月前
|
人工智能 自然语言处理 运维
AI性能极致体验:通过阿里云平台高效调用满血版DeepSeek-R1模型
DeepSeek是近期热门的开源大语言模型(LLM),以其强大的训练和推理能力备受关注。然而,随着用户需求的增长,其官网在高并发和大数据处理场景下常面临服务不稳定的问题。本文将深度测评通过阿里云平台调用满血版DeepSeek模型(671B),以充分发挥其性能和稳定性。阿里云提供高效、低延迟、大规模并发支持及稳定的云服务保障,并为用户提供100万免费token,简化操作流程,确保企业在AI应用上的高效性和成本效益。尽管如此,DeepSeek API目前不支持联网搜索和图片、文档分析功能,需结合其他工具实现。
1396 17
|
9月前
|
存储 人工智能 并行计算
KTransformers:告别天价显卡!国产框架让单卡24G显存跑DeepSeek-R1 671B大模型:推理速度飙升28倍
KTransformers 是由清华大学和趋境科技联合推出的开源项目,能够优化大语言模型的推理性能,降低硬件门槛。支持在仅24GB显存的单张显卡上运行671B参数的满血版大模型。
2275 8
KTransformers:告别天价显卡!国产框架让单卡24G显存跑DeepSeek-R1 671B大模型:推理速度飙升28倍
|
Java API 调度
JobService源码探究之 onStartJob()返回false立马被destroy
JobService源码探究之 onStartJob()返回false立马被destroy
JobService源码探究之 onStartJob()返回false立马被destroy
|
Rust JavaScript 前端开发
【Neovim】配置美化完整流程
【Neovim】配置美化完整流程
7528 0
【Neovim】配置美化完整流程
|
机器学习/深度学习 弹性计算 运维
轻松使用:阿里云轻量应用服务器轻量评测
轻松使用:阿里云轻量应用服务器轻量评测,阿里云服务器ECS和轻量应用服务器有什么区别?云服务器ECS是明星级云服务器
709 0
|
数据可视化 数据挖掘 Linux
科研绘图丨使用R语言Pheatmap包快速绘制基因表达量热图的方法,支持聚类和配色自定义修改
科研绘图丨使用R语言Pheatmap包快速绘制基因表达量热图的方法,支持聚类和配色自定义修改
|
Arthas Java 测试技术
Arthas 进阶教程
本场景带您体验如何在Alibaba Cloud Linux  2.1903 LTS 64位操作系统的云服务器上通过 arthas-demo 和一个 Spring Boot 应用,演示 Arthas 命令的用法。
下一篇
开通oss服务