分布式任务调试框架的意义及与消息中间件的区别
2023-09-27 14:28:13 时间
我们先思考下面几个业务场景的解决方案:
1、支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算
2、电商整点抢购,商品价格8点整开始优惠
3、12306购票系统,超过30分钟没有成功支付订单的,进行回收处理
4、商品成功发货后,需要向客户发送短信提醒
5、假如我们的大数据中心elasticsearch不足以支持类似于成绩分析这样数据千万级别的实时查询(当然,我们首先应该是加大elasticsearch的集群,然后合理的分片等办法,将elasticsearch先优化到极致,再思考下一步的办法)
我们可能需要在导入成绩分析数据后,进行多台主机的聚合统计分析(指分片,比如按一个个学校进行统计汇总),然后在中间层的统计数据基础上进行二次查询统计。这样,这种分布式的任务系统就有用了!黄海注
类似的业务场景非常多,我们怎么解决?
为什么我们需要定时任务
很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短信通知客户的业务场景,我们可以在发货成功后发送MQ消息到队列,然后去消费mq消息,发送短信。
但在某些场景下不能互换:
a)时间驱动/事件驱动:内部系统一般可以通过事件来驱动,但涉及到外部系统,则只能使用时间驱动。如爬取外部网站价格,每小时爬一次
b)批量处理/逐条处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理。如移动每个月结算我们的话费
c)实时性/非实时性:消息中间件能够做到实时处理数据,但是有些情况下并不需要实时,比如:vip升级
d)系统内部/系统解耦:定时任务调度一般是在系统内部,而消息中间件可用于两个系统间
相关文章
- 简单绕过 DbgUiRemoteBreakin 反调试
- CVE-2018-0798:Microsoft office 公式编辑器 Matrix record 字段栈溢出漏洞调试分析
- CVE-2012-0774:Adobe Reader TrueType 字体整数溢出漏洞调试分析
- Java本地远程断点调试(实战记录)
- 108 python高级 - 调试
- Eclipse远程调试weblogic
- stm32文件系统读写操作调试总结
- H3C PPP显示与调试
- 工程(一)Lego_Loam安装调试及运行
- 公交语音播报调试第三天
- 开源发布:VS代码段快捷方式及可视化调试快速部署工具
- iOS开发中调试小技巧
- Linux环境Nginx安装与调试以及PHP安装
- delphi 2007 远程调试