定时和延时问题在业务场景中的常见处理

本文涉及的产品
任务调度 XXL-JOB 版免费试用,400 元额度,开发版规格
Serverless 应用引擎免费试用套餐包,4320000 CU,有效期3个月
MSE Nacos/ZooKeeper 企业版试用,1600元额度,限量50份
简介:

如何优雅的处理业务流程和信息分发中的定时和延时问题?

本文将从如何处理业务流程和信息分发中的定时和延时问题出发,横向比较了业界常见的几种方案,如直接多线程编码、Spring定时调度框、大型分布式调度框架、消息中间件定时消息,因为消息中间件接口友好,调用方便,性能稳定,特别推荐了使用消息中间件来处理此类问题。同时对比了ActiveMQ、RabbitMQ和RocketMQ三种消息中间件在此类场景中的优劣势。
为了帮助大家理解消息中间件的使用,特别列举了三种常见场景及使用方案,同时列举了消息中间件RocketMQ定时消息的优势,近期定时消息特性会做大的更新,推出的新版定时消息已在阿里内部,稳定运行近两年,近期会发布到公有云上,敬请期待。

1 适用场景

在业务处理流程和信息分发过程中,定时延时处理的需求可谓无处不在。如何优雅的满足想要在未来的某个时间点,处理预期事件、分发既定信息,满足对时间线的强诉求场景和业务逻辑的设计,常常也是我们经常会遇到的问题。笔者在横向对比过几个常用的技术方案之后,大概总结如下,分别都会有不同的优缺点:**

直接多线程编码 Spring定时调度框 大型分布式调度框架 消息中间件定时消息
优点 较少 1.spring集成环境,方便开发者集成。
2.接口、注解友好,方便开发者使用。
3.适合单机使用。
1.专用于分布式调度处理场景。
2.充分利用业务机器资源,处理调度任务。
3.经历过大规模流量验证,高可用。
1.接口友好,方便开发使用。
2.支持“定时”和“延时”两种场景。
3.大型分布式场景,性能较好。
缺点 1.多线程编码,易出错。
2.重复造轮子,不符合开发原则。
3.程序较复杂,难以维护。
1.适合单机使用,分布式环境需要解决分布式锁问题。
2.适合定时场景,无法实现延时功能支持延时场景。
1.没有单独开源、售卖。
2.适合定时场景,无法实现延时功能支持延时场景。
无调度任务分片功能。

友好的接口设计、敏捷的开发模式,便于开发者快速高效地集成、研发。同时支持“定时”和“延时”两种场景,以高性能和高可用,支撑大规模的分布式业务场景。整体来看,消息中间件的使用更加便捷。
那么在不同的消息中间件之间,是否对这样的功能又有差别呢?首先让我们来看看一个优秀的定时延时消息中间件,需要满足哪些特性?**

  • 轻量级,高性能,精确到秒级
  • 支持高可用
  • 足够的定时长度,比如可以支持到30天、60天等
  • 支持取消定时消息,取消延时任务
  • 支持绝对定时和相对定时
  • 支持海量定时消息存储,高时效精度

综上,我们对业界几个常见的消息中间件做了简单对比:在现有的主流消息系统中,ActiveMQ、RabbitMQ和RocketMQ都有提供定时消息的实现。但是ActiveMQ定时性能在300TPS左右,只适合小量场景。RabbitMQ提供了一个定时插件,性能可达2000TPS左右,但不支持高可用,且不能堆积太多消息。
RocketMq融合了各大定时技术组件的优势,同时弥补了其他组件设计上的局限,研发出了RocketMq新版定时消息,以适用支撑更多定时延时场景。
是骡子是马拉出来溜溜。我们简单看下几个典型定时延时场景,使用RocketMq定时消息的实现方案。
场景一    用户秒杀爆品,使用优惠券,创建订单就冻结了用户优惠券额度,对于下单失败的用户,需要超时自动解冻用户被冻结的优惠券额度。超时自动解冻机制,需要满足高精度、高可用、支持海量业务、支持超长延时。

1_jpeg

场景二    外卖业务对时效性非常敏感,从用户下单起,便产生了“外送超时时间”,保障外卖业务的顺序进行。外卖超时机制,需要满足高精度、高可用、支持海量业务。
2_jpeg

场景三    钉钉软件设置日程后,需要在日程时间达到时,自动提醒用户。钉钉日程提醒,需要满足高精度、支持超长延时。
3_jpeg

2 概念介绍

那么让我们来熟悉下消息队列RocketMq定时消息对于定时消息、延时消息的概念。在用户使用的视角和体验上,分为“定时性消息”和“延时性消息”两大类。
定时性消息:Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是推迟到未来的某一个确定时间投递到 Consumer 进行消费。如上一节中“场景三”。
延时性消息:Producer 将消息发送到消息队列 RocketMQ 服务端,但并不期望这条消息立马投递,而是从当前时间延迟一定时段后才投递到 Consumer 进行消费。如上一节中“场景一”和“场景二”。
使用文档详见官网:
https://help.aliyun.com/document_detail/43349.html?spm=a2c4g.11186623.4.2.7e613030bocffQ

3 RockeMq定时消息优势

高性能高可用
RocketMQ的分级延迟消息,性能较高,可无限堆积,且满足高可用要求,支持精确到秒级的定时需求,且在海量存储的情况下,时效精度较高。
产品成熟度高
在阿里巴巴集团的各大业务及大促场景中,RocketMq定时消息已经得到广泛运用,经历了无数流量洪峰和稳定性考验,积累沉淀出了业界先进稳定的定时消息系统。
技术社区活跃
RocketMq作为apache顶级项目,已经建设完整的技术生态体系。支持多语言,多协议,定时消息天然继承了顶级项目的优点,具备完整的技术生态。
专业技术支持
阿里云专注云计算,RocketMq持续伴随阿里云技术架构进化升级。技术设施对外输出的同时,以强大的技术团队服务客户业务,为使用RocketMq产品的客户,持续提供专业技术支持。

4 特别说明

本次新版定时消息功能进行了深度内核层架构优化,设计原理和功能实现上都做了较大的升级调整,从根本上进行了定时消息架构的变革,极大地提高了定时消息的稳定性和性能。

相关实践学习
快速体验阿里云云消息队列RocketMQ版
本实验将带您快速体验使用云消息队列RocketMQ版Serverless系列实例进行获取接入点、创建Topic、创建订阅组、收发消息、查看消息轨迹和仪表盘。
消息队列 MNS 入门课程
1、消息队列MNS简介 本节课介绍消息队列的MNS的基础概念 2、消息队列MNS特性 本节课介绍消息队列的MNS的主要特性 3、MNS的最佳实践及场景应用 本节课介绍消息队列的MNS的最佳实践及场景应用案例 4、手把手系列:消息队列MNS实操讲 本节课介绍消息队列的MNS的实际操作演示 5、动手实验:基于MNS,0基础轻松构建 Web Client 本节课带您一起基于MNS,0基础轻松构建 Web Client
相关文章
|
JavaScript 前端开发 API
从架构到API,你真的掌握了Electron的全貌吗?
本文首发于微信公众号“前端徐徐”。作者徐徐从架构层面、协作方式、底层支持、源码层面及API设计等方面剖析了Electron的原理。通过分析Electron的核心组件(Chromium和Node.js)、进程隔离、上下文桥接及IPC机制等内容,揭示了Electron在设计上的精妙之处及其对开发高效、稳定桌面应用的重要性。了解这些原理有助于开发者更好地设计和解决问题。
802 2
从架构到API,你真的掌握了Electron的全貌吗?
|
开发框架 JSON 前端开发
Go主流框架对比:Gin Echo Beego Iris
由于go的标准库非常丰富,尤其是net/http包的存在,基本上把别的语言需要通过框架搞的事情都做了,不用框架光用标准库也能顺畅的开发需求了。
2973 0
|
2月前
|
SQL 监控 关系型数据库
查寻MySQL或SQL Server的连接数,并配置超时时间和最大连接量
以上步骤提供了直观、实用且易于理解且执行的指导方针来监管和优化数据库服务器配置。务必记得,在做任何重要变更前备份相关配置文件,并确保理解每个参数对系统性能可能产生影响后再做出调节。
303 11
|
自然语言处理 JavaScript 前端开发
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(1)
Vue3 + Vite + TypeScript + Element-Plus:从零到一构建企业级后台管理系统(前后端开源)(1)
|
9月前
|
存储 弹性计算 人工智能
2025年阿里云企业云服务器ECS选购与配置全攻略
本文介绍了阿里云服务器的核心配置选择方法论,涵盖算力需求分析、网络与存储设计、地域部署策略三大维度。针对不同业务场景,如初创企业官网和AI模型训练平台,提供了具体配置方案。同时,详细讲解了购买操作指南及长期运维优化建议,帮助用户快速实现业务上云并确保高效运行。访问阿里云官方资源聚合平台可获取更多最新产品动态和技术支持。
|
8月前
|
Linux 数据安全/隐私保护 Windows
文件传输告别龟速!1分钟搞定Windows↔CentOS高速通道 小白也能玩转的Xftp秘籍
Xftp 是一款便捷的远程文件传输工具,与 XShell 类似,支持通过 SFTP 协议实现文件上传和下载。首先需下载安装 Xftp,并获取目标 Linux 系统(如 CentOS)的 IP 地址。打开 Xftp 后,按 `Ctrl + N` 新建会话,输入主机 IP、协议(SFTP)、用户名和密码连接服务器。
483 15
文件传输告别龟速!1分钟搞定Windows↔CentOS高速通道 小白也能玩转的Xftp秘籍
|
12月前
|
存储 监控 区块链
探索区块链技术在数据安全中的应用
本文深入探讨了区块链技术如何革新数据安全领域,通过其独特的去中心化、不可篡改和透明性特点,为数据安全提供了新的解决方案。我们将从区块链的基本原理出发,分析其在保护数据完整性、增强隐私保护以及提升交易安全性方面的应用,并通过案例研究展示区块链技术在实际场景中的有效性。
|
12月前
|
监控 数据可视化 搜索推荐
6 款办公软件对比评测:谁在团队项目可视化管理中脱颖而出?
本文深入评测了6款办公软件,包括板栗看板、Trello、Asana、Monday.com、ClickUp和Wrike,重点分析了它们在团队项目可视化精细管理中的功能特性与优势。板栗看板以其直观的界面、便捷的任务操控、高效的团队协作和精准的数据洞察,成为中小团队快速实现项目管理可视化的理想选择。其他软件也各有千秋,适合不同规模和需求的团队使用。
306 1
|
NoSQL 前端开发 Redis
Windows 下安装和配置 Redis (图文教程)
Windows 下安装和配置 Redis (图文教程)
|
Java 编译器 Spring
面试突击78:@Autowired 和 @Resource 有什么区别?
面试突击78:@Autowired 和 @Resource 有什么区别?
15928 6