1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景也各不相同,这使得我们定时任务系统应该集管理、调度、任务分配、监控预警为一体的综合调度系统,如何打造一套健壮的、适应不同场景的系统,技术选型尤其重要。 针对以上场景我们需要我们的分布式任务系统具备以下能力: 1.支持多种作业类型(shell作业/Java作业) 2.支持作业HA,负载均衡和失败转移 3.支持弹性扩容(应对开门红以及促销活动) 4.支持Job Timeout 处理 5.支持统一监控和告警 6.支持作业统一配置 7.支持资源隔离和作业隔离 2. 定时任务调度的特点 任务调度就是设点某一时间点自动触发的任务,该任务可以在时间规律上去循环执行。一般的技术quartz、spring task、java.util.Timer,这几种如果在单一机器上跑其实问题不大,但是如果一旦应用于集群环境做分布式部署,就会带来一个致命的问题,那就是重复执行,当然解决方案有,但是必须依赖数据库,将任务执行状态持久化下来。 特点: 时间驱动:系统一般可以通过时间来驱动,定时定点定次。 批量处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理。如对账批处理、资金管理系统回盘、部分银行的报盘前的制盘 非实时性:定时任务不要求实时性,一般不用于C端用户的交互,更多的用于业务数据的处理 隔离性/专一性:可以跟其他系统分离,只关注业务数据的处理,不影响用户的操作和用户系统的性能。 基本原理: 3.开源定时任务框架 Quartz:Java事实上的定时任务标准。但Qu...
评论