Elastic-Job

3千字带你搞懂XXL-JOB任务调度平台

余生长醉 提交于 2020-10-21 13:27:22
简介: 一篇文章带你认识分布式任务调度平台XXL-JOB! 思维导图 一、概述 在平时的业务场景中,经常有一些场景需要使用定时任务,比如: 时间驱动的场景:某个时间点发送优惠券,发送短信等等。 批量处理数据:批量统计上个月的账单,统计上个月销售数据等等。 固定频率的场景:每隔5分钟需要执行一次。 所以定时任务在平时开发中并不少见,而且对于现在快速消费的时代,每天都需要发送各种推送,消息都需要依赖定时任务去完成,应用非常广泛。 二、为什么需要任务调度平台 在Java中,传统的定时任务实现方案,比如Timer,Quartz等都或多或少存在一些问题: 不支持集群、不支持统计、没有管理平台、没有失败报警、没有监控等等 而且在现在分布式的架构中,有一些场景需要分布式任务调度: 同一个服务多个实例的任务存在互斥时,需要统一的调度。 任务调度需要支持高可用、监控、故障告警。 需要统一管理和追踪各个服务节点任务调度的结果,需要记录保存任务属性信息等。 显然传统的定时任务已经不满足现在的分布式架构,所以需要一个分布式任务调度平台,目前比较主流的是elasticjob和xxl-job。 elasticjob由当当网开源,目前github有6.5k的Star,使用的公司在官网登记有76家。 跟xxl-job不同的是, elasticjob是采用zookeeper实现分布式协调 ,实现任务高可用以及分片。

xxl-job总体还可以,轻量级,应能满足需求,有几个关键的能力

▼魔方 西西 提交于 2020-10-14 22:57:51
xxl-job总体还可以,轻量级,应能满足需求,有几个关键的能力 1、内部多线程,多任务可在单个执行器上并发执行 2、支持简单的任务依赖关系,工作流 3、支持多语言Java、Shell、Python等 4、支持单实例调度(可以解决业务中台多实例部署的分布式锁问题)、分片调度 5、有界面,支持多租户隔离,每个租户管理自己的执行器,互相不影响 6、问题:普通用户没有权限管理自己的执行器,做成多租户模式需要提前向admin申请分配执行器名称 其他的工作流调度系统,Argo、Airflow、ooize、AZKaban、Luigi、elastic-job、quartz等 其中 Argo是K8S生态的工作流调度新秀,功能非常完善,git活跃度非常高 来源: oschina 链接: https://my.oschina.net/u/4332858/blog/4279865

细数那些使用过的定时器

时光怂恿深爱的人放手 提交于 2020-10-05 23:56:09
前言 何为定时器,说白了就是指定一个延迟时间,到期执行,就像我们早上定的闹铃一样,每天定点提醒我们起床;当然在我们各个系统中也是无处不在,比如定时备份数据,定时拉取文件,定时刷新数据等等;定时器工具也是层出不穷比如Timer,ScheduledExecutorService,Spring Scheduler,HashedWheelTimer(时间轮),Quartz,Xxl-job/Elastic-job等;本文将对这些定时器工具做个简单介绍和对比,都在哪些场景下使用。 Timer Timer可以说是JDK提供最早的一个定时器了,使用简单,功能也相对来说比较简单;可以指定固定时间后触发,固定时间点触发,固定频率触发; Timer timer = new Timer(); timer.schedule( new TimerTask() { @Override public void run () { System.out.println(System.currentTimeMillis() + " === task1" ); } }, 1000 , 1000 ); 时间默认为毫秒,表示延迟一秒后执行任务,并且频率为1秒执行任务;Timer内部使用TaskQueue存放任务,使用TimerThread单线程用来执行任务: private final TaskQueue queue =

基于开源架构的任务调度系统在证券数据处理中的探索和实践

二次信任 提交于 2020-09-28 13:26:07
摘要: 为了应对证券行业盘后批处理业务复杂度上升带来的批处理时间窗口逐步缩小和运维越来越困难的挑战,上交所技术积极拥抱开源技术,结合上交所批处理的生产经验教训,以零人工介入、自动化运维为目标,开发了一种跨平台、支持多种部署模式的任务调度系统。本文从上交所批处理系统面临的实际挑战出发,通过调研几类典型的批处理架构,选择以开源软件Spring cloud dataflow为基础,设计并研发了上交所批处理任务调度系统。目前,该系统已经在交易系统生产环境上平稳试运行半年有余,为该系统在上交所各技术系统的推广打下了坚实的基础。 关键字:( 任务调度、批处理、Spring cloud dataflow、上交所技术 ) 背景和挑战 随着证券交易市场的快速发展,交易业务种类和待处理数据量也随之不断增加,核心应用系统的批处理业务越来越复杂。不同的批处理业务不但内部批处理单元相互依赖,而且与上下游对接系统的交互也越来越繁杂,导致留给批处理业务的处理时间窗口和应急时间窗口越来越小,这些都对新的批处理架构的高效性、高可用性和易维护性等方面提出了更高的要求。针对上交所批处理业务目前的实际情况,面临着如下问题和挑战。 首先是上交所各系统业务类型和数据量的增多对批处理架构的调度性能和功能提出了更多的要求。目前,上交所的核心交易盘后批处理业务类型越来越多,比如A/B股、综合业务、期权、沪港通等

阿里Sentinel支持Spring Cloud Gateway啦

感情迁移 提交于 2020-08-20 08:27:16
1. 前言 4月25号,Sentinel 1.6.0 正式发布,带来 Spring Cloud Gateway 支持、控制台登录功能、改进的热点限流和注解 fallback 等多项新特性,该出手时就出手,紧跟时代潮流,昨天刚发布,今天我就要给大家分享下如何使用! 2. 介绍(本段来自Sentinel文档) Sentinel 1.6.0 引入了 Sentinel API Gateway Adapter Common 模块,此模块中包含网关限流的规则和自定义 API 的实体和管理逻辑: GatewayFlowRule:网关限流规则,针对 API Gateway 的场景定制的限流规则,可以针对不同 route 或自定义的 API 分组进行限流,支持针对请求中的参数、Header、来源 IP 等进行定制化的限流。 ApiDefinition:用户自定义的 API 定义分组,可以看做是一些 URL 匹配的组合。比如我们可以定义一个 API 叫 myapi,请求 path 模式为 /foo/ 和 /baz/ 的都归到 myapi 这个 API 分组下面。限流的时候可以针对这个自定义的 API 分组维度进行限流。 其中网关限流规则 GatewayFlowRule 的字段解释如下: • resource:资源名称,可以是网关中的 route 名称或者用户自定义的 API 分组名称。 •

Zuul中聚合Swagger的坑

怎甘沉沦 提交于 2020-08-19 23:06:23
每个服务都有自己的接口,通过Swagger来管理接口文档。在服务较多的时候我们希望有一个统一的入口来进行文档的查看,这个时候可以在Zuul中进行文档的聚合显示。 下面来看下具体的整合步骤以及采坑记录。Cloud版本:Finchley.SR2, Boot版本:2.0.6 加入Swagger的依赖: 1. <!-- Swagger --> 2. <dependency> 3. <groupId>io.springfox</groupId> 4. <artifactId>springfox-swagger-ui</artifactId> 5. <version>2.9.2</version> 6. </dependency> 7. <dependency> 8. <groupId>io.springfox</groupId> 9. <artifactId>springfox-swagger2</artifactId> 10. <version>2.9.2</version> 11. </dependency> 增加聚合代码: 1. @EnableSwagger2 2. @Component 3. @Primary 4. public class DocumentationConfig implements SwaggerResourcesProvider { 5. 6.

开源 Spring Boot 中 Mongodb 多数据源扩展框架

女生的网名这么多〃 提交于 2020-08-17 05:41:11
开源 Spring Boot 中 Mongodb 多数据源扩展框架 原创 尹吉欢 猿天地 2019-04-25 在日常工作中,我们通过Spring Data Mongodb来操作Mongodb数据库,在Spring Boot中只需要引入spring-boot-starter-data-mongodb即可。 然后配置连接信息如下: 1. spring.data.mongodb.uri=mongodb://localhost:27017/test 或者 1. pring.data.mongodb.authentication-database= # Authentication database name. 2. spring.data.mongodb.database=test # Database name. 3. spring.data.mongodb.host=localhost # Mongo server host. 4. spring.data.mongodb.password= # Login password of the mongo server. 5. spring.data.mongodb.port=27017 # Mongo server port. 6. spring.data.mongodb.username= # Login user of the

Linus通过了Linux中避免master/slave等术语的提案

蹲街弑〆低调 提交于 2020-08-10 07:31:15
Linux 内核维护者 Dan Williams 曾于 7 月初提交一份提案,建议逐步取消 master/slave 和 blacklist/whitelist 术语。近日,Linus Torvalds 则在 Linux 5.8 版本库的拉取请求中 批准 了该提议。 自此,Linux 开发人员则需要使用新的术语来替代 master/slave 和 blacklist/whitelist 的使用。 拟议的 master/slave 替代术语包括有: primary/secondary main/replica or subordinate initiator/target requester/responder controller/device host/worker or proxy leader/follower director/performer 拟议的 blacklist/whitelist 替代术语包括有: denylist/allowlist blocklist/passlist 目前,Linux 团队并没有推荐任何具体的术语,而是要求开发人员根据情况进行选择,新的术语将用于为 Linux 内核编写的新源代码及其相关文档。而旧的术语将只被允许用于维护旧的代码和文档,或 "在为现有的(截至 2020 年)强制使用这些术语的硬件或协议规范更新代码时"才可以进行使用。

又是不懂开源协议惹的祸,唯品会 Saturn 未声明上游项目版权被拒

北城余情 提交于 2020-08-04 17:50:43
22 日晚, Apache SkyWalking Founder 吴晟在朋友圈中指出,因违反开源协议要求,SkyWalking 只能 暂时 拒绝针对唯品会 Saturn 项目的插件需求 。 Saturn 是 fork 自 ElasticJob,并更改了版权信息,这是一个非常严重的许可证问题。基于 ElasticJob 的原始许可证 Apache 2.0 ,所有文件的 header 都应该保留,即便他们修改了代码。所以,无论你或是任何人想要做这个插件,我们都不能正式接受它作为 Apache SkyWalking 的一部分。如果你认识他们,请联系他们。只有在他们纠正了许可证问题,并且回滚了所有的 header 之后,我们才能支持他们的新版本。 我们联系吴晟了解相关情况,根据他的说法,他在查看 Saturn 源码时,发现项目实际上是 fork 自当当网的 ElasticJob。 ElasticJob 采用的 Apache 2.0 开源许可协议。根据 Apache 2.0 协议的要求,衍生项目需要在源码中有明确标识,说明此项目是 fork 自 ElasticJob ,一般就是在使用到的源码上保留原始附加 版权 信息,方可进行二次分发。 也就是说,Saturn 需要保留原项目文档中的版权 header 说明,声明当当的原始版权。但吴晟发现,Saturn 项目大部分文档中并没有声明版权归