在做电商项目的时候,有很多地方需要作业来完成,通过对比在scheduler的地方用了当当网的分布式作业框架Elastic-Job而没有选择spring自带的scheduler, elastic-job可以不依赖于Spring直接运行,但是也提供了自定义的命名空间方便与Spring集成。下面小编带领你详细的了解一下Elastic-Job是什么,怎么用.一步步的学习ElastIc-Job的原理及应用.
什么是作业?
作业即定时任务.无需做复杂的控制,在指定的时间执行指定的任务.
为什么需要作业?
时间驱动/事件驱动: 内部系统一般可以通过事件来驱动,但涉及到外部系统,则只能使用时间驱动.如:抓取外部系统价格.每小时抓取,由于是外部系统,不能像内部系统一样发送事件触发事件.
批量处理/逐条处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势,而且有的业务逻辑只能批量处理.
系统内部/系统解耦:作业一般封装在系统内部,而消息中间件可用于系统间解耦.
Elastic-Job是什么?
elastic-job主要的设计理念是无中心化的分布式定时调度框架,思路来源于Quartz的基于数据库的高可用方案。但数据库没有分布式协调功能,所以在高可用方案的基础上增加了弹性扩容和数据分片的思路,以便于更大限度的利用分布式服务器的资源。Elastic-Job是ddframe中dd-job的作业模块中分离出来的分布式弹性作业框架。去掉了和dd-job中的监控和ddframe接入规范部分。
怎么用?
Elastic-Job常用的三种作业类型: SimpleJob, SequenceDataFlowJob和ThroughputDataFlowJob
SimpleJob类型作业:
SimpleJob是常用的实现方式,意为简单实现.需要继承AbstractSimpleElasticJob ,用于执行普通的任务.
SimpleJob的任务测试类:
package test.scheduler.demojob