如何优雅的处理业务逻辑中的定时和延时问题?
本文将从如何处理业务流程和信息分发中的定时和延时问题出发 , 横向比较了业界常见的几种方案 , 如直接多线程编码、Spring定时调度框、大型分布式调度框架、消息中间件定时消息 , 因为消息中间件接口友好 , 调用方便 , 性能稳定 , 特别推荐了使用消息中间件来处理此类问题 。 同时对比了ActiveMQ、RabbitMQ和RocketMQ三种消息中间件在此类场景中的优劣势 。 为了帮助大家理解消息中间件的使用 , 特别列举了三种常见场景及使用方案 , 同时列举了消息中间件RocketMQ定时消息的优势 , 近期定时消息特性会做大的更新 , 推出的新版定时消息已在阿里内部 , 稳定运行近两年 , 近期会发布到公有云上 , 敬请期待 。
1适用场景在业务处理流程和信息分发过程中 , 定时延时处理的需求可谓无处不在 。 如何优雅的满足想要在未来的某个时间点 , 处理预期事件、分发既定信息 , 满足对时间线的强诉求场景和业务逻辑的设计 , 常常也是我们经常会遇到的问题 。 笔者在横向对比过几个常用的技术方案之后 , 大概总结如下 , 分别都会有不同的优缺点:**

文章图片
友好的接口设计、敏捷的开发模式 , 便于开发者快速高效地集成、研发 。 同时支持“定时”和“延时”两种场景 , 以高性能和高可用 , 支撑大规模的分布式业务场景 。 整体来看 , 消息中间件的使用更加便捷 。 那么在不同的消息中间件之间 , 是否对这样的功能又有差别呢?首先让我们来看看一个优秀的定时延时消息中间件 , 需要满足哪些特性?**
轻量级 , 高性能 , 精确到秒级支持高可用足够的定时长度 , 比如可以支持到30天、60天等支持取消定时消息 , 取消延时任务支持绝对定时和相对定时支持海量定时消息存储 , 高时效精度综上 , 我们对业界几个常见的消息中间件做了简单对比:在现有的主流消息系统中 , ActiveMQ、RabbitMQ和RocketMQ都有提供定时消息的实现 。 但是ActiveMQ定时性能在300TPS左右 , 只适合小量场景 。 RabbitMQ提供了一个定时插件 , 性能可达2000TPS左右 , 但不支持高可用 , 且不能堆积太多消息 。 RocketMq融合了各大定时技术组件的优势 , 同时弥补了其他组件设计上的局限 , 研发出了RocketMq新版定时消息 , 以适用支撑更多定时延时场景 。 是骡子是马拉出来溜溜 。 我们简单看下几个典型定时延时场景 , 使用RocketMq定时消息的实现方案 。 场景一用户秒杀爆品 , 使用优惠券 , 创建订单就冻结了用户优惠券额度 , 对于下单失败的用户 , 需要超时自动解冻用户被冻结的优惠券额度 。 超时自动解冻机制 , 需要满足高精度、高可用、支持海量业务、支持超长延时 。

文章图片
【如何优雅的处理业务逻辑中的定时和延时问题?】场景二外卖业务对时效性非常敏感 , 从用户下单起 , 便产生了“外送超时时间” , 保障外卖业务的顺序进行 。 外卖超时机制 , 需要满足高精度、高可用、支持海量业务 。

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

文章图片
2概念介绍那么让我们来熟悉下消息队列RocketMq定时消息对于定时消息、延时消息的概念 。 在用户使用的视角和体验上 , 分为“定时性消息”和“延时性消息”两大类 。 定时性消息:Producer将消息发送到消息队列RocketMQ服务端 , 但并不期望这条消息立马投递 , 而是推迟到未来的某一个确定时间投递到Consumer进行消费 。 如上一节中“场景三” 。 延时性消息:Producer将消息发送到消息队列RocketMQ服务端 , 但并不期望这条消息立马投递 , 而是从当前时间延迟一定时段后才投递到Consumer进行消费 。 如上一节中“场景一”和“场景二” 。 使用文档详见官网:https://help.aliyun.com/document_detail/43349.html?spm=a2c4g.11186623.4.2.7e613030bocffQ
3RockeMq定时消息优势高性能高可用RocketMQ的分级延迟消息 , 性能较高 , 可无限堆积 , 且满足高可用要求 , 支持精确到秒级的定时需求 , 且在海量存储的情况下 , 时效精度较高 。 产品成熟度高在阿里巴巴经济体的各大业务及大促场景中 , RocketMq定时消息已经得到广泛运用 , 经历了无数流量洪峰和稳定性考验 , 积累沉淀出了业界先进稳定的定时消息系统 。 技术社区活跃RocketMq作为apache顶级项目 , 已经建设完整的技术生态体系 。 支持多语言 , 多协议 , 定时消息天然继承了顶级项目的优点 , 具备完整的技术生态 。 专业技术支持阿里云专注云计算 , RocketMq持续伴随阿里云技术架构进化升级 。 技术设施对外输出的同时 , 以强大的技术团队服务客户业务 , 为使用RocketMq产品的客户 , 持续提供专业技术支持 。
4特别说明本次新版定时消息功能进行了深度内核层架构优化 , 设计原理和功能实现上都做了较大的升级调整 , 从根本上进行了定时消息架构的变革 , 极大地提高了定时消息的稳定性和性能 。
推荐阅读
- 通达信精选指标:价位时空主图,画线战法是技术派的核心内功
- 疫情冲击经济,第一个“破产”的国家出现!今年5次调查自华产品
- 美国用“核试验”来恫吓中国“核裁军”,那是赤裸裸的核讹诈
- 寂然单排134连胜,队友却全程挂机,赛后寂然发现挂机队友的一个秘密
- RNG新上单暴露了?绿毛小明聊天记录曝光:记得照顾好我们的兄弟
- 三国杀:卡牌是否应该“界限突破”?且看这版「界闪电」设计如何
- 下周开始,缘分跟桃花邂逅相遇,迎来幸福爱情的四生肖,恭喜脱单
- 情商高、会说话,相处起来很舒服的星座,走到哪里都受欢迎
- 笑起来超迷人,却不喜欢笑的星座,摩羯上榜
- 十二星座里,翻脸比翻书快,特别爱作的4个星座
