文档章节

分布式任务调试框架的意义及与消息中间件的区别

o
 osc_y8yehimr
发布于 2019/03/20 09:48
字数 667
阅读 8
收藏 0

精选30+云产品,助力企业轻松上云!>>>

我们先思考下面几个业务场景的解决方案:

1、支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算

2、电商整点抢购,商品价格8点整开始优惠

3、12306购票系统,超过30分钟没有成功支付订单的,进行回收处理

4、商品成功发货后,需要向客户发送短信提醒

5、假如我们的大数据中心elasticsearch不足以支持类似于成绩分析这样数据千万级别的实时查询(当然,我们首先应该是加大elasticsearch的集群,然后合理的分片等办法,将elasticsearch先优化到极致,再思考下一步的办法)

我们可能需要在导入成绩分析数据后,进行多台主机的聚合统计分析(指分片,比如按一个个学校进行统计汇总),然后在中间层的统计数据基础上进行二次查询统计。这样,这种分布式的任务系统就有用了!黄海注


类似的业务场景非常多,我们怎么解决?

 

为什么我们需要定时任务

很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短信通知客户的业务场景,我们可以在发货成功后发送MQ消息到队列,然后去消费mq消息,发送短信。
但在某些场景下不能互换:

a)时间驱动/事件驱动:内部系统一般可以通过事件来驱动,但涉及到外部系统,则只能使用时间驱动。如爬取外部网站价格,每小时爬一次

 

 

 

 

b)批量处理/逐条处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理。如移动每个月结算我们的话费

 

 


 

 

c)实时性/非实时性:消息中间件能够做到实时处理数据,但是有些情况下并不需要实时,比如:vip升级

 

 

 


 

d)系统内部/系统解耦:定时任务调度一般是在系统内部,而消息中间件可用于两个系统间

o
粉丝 0
博文 500
码字总数 0
作品 0
私信 提问
加载中
请先登录后再评论。

暂无文章

OSChina 周一乱弹 —— 毛巾又怎么样?!我在乎的是大姐姐温柔的怀抱!

Osc乱弹歌单(2020)请戳(这里) 【今日歌曲】 @薛定谔的兄弟 :分享洛神有语创建的歌单「我喜欢的音乐」: 《雨 因你而下,于你而止》- Seto 手机党少年们想听歌,请使劲儿戳(这里) @Dan...

小小编辑
8分钟前
27
0
MySQL 常用操作

1 创建/打开/删除数据库 create database db;create database db character set utf8mb4;use db;drop database db;alter database db character set utf8mb4; 2 修复表 mysqlcheck --a......

氷泠
12分钟前
0
0
Node.js中的module.exports与export - module.exports vs exports in Node.js

问题: I've found the following contract in a Node.js module: 我在Node.js模块中找到了以下合同: module.exports = exports = nano = function database_module(cfg) {...} I wonder ......

javail
18分钟前
13
0
如何防止单击按钮时对话框关闭 - How to prevent a dialog from closing when a button is clicked

问题: I have a dialog with EditText for input. 我有一个使用EditText输入的对话框。 When I click the "yes" button on dialog, it will validate the input and then close the dialog.......

富含淀粉
48分钟前
7
0
访问者模式Visitor

一 概述 场景:通常来说,用于封装数据所用到的pojo类,其只包含get、set,对应的业务逻辑是在Service上完成的;但如果出现多个pojo类都共用一套逻辑时,则应该考虑将逻辑进行抽象,不同类型...

小明不觉小
今天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部