揭秘华为分布式定时任务调度系统(建议收藏)
点击上方[全栈开发者社区]→右上角[...]→[设为星标⭐]
来源:http://rrd.me/e5k4Y
我们先思考下面几个业务场景的解决方案:
支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算
电商整点抢购,商品价格8点整开始优惠
12306购票系统,超过30分钟没有成功支付订单的,进行回收处理
商品成功发货后,需要向客户发送短信提醒
类似的业务场景非常多,我们怎么解决?
为什么我们需要定时任务
很多业务场景需要我们某一特定的时刻去做某件任务,定时任务解决的就是这种业务场景。一般来说,系统可以使用消息传递代替部分定时任务,两者有很多相似之处,可以相互替换场景。如,上面发货成功发短信通知客户的业务场景,我们可以在发货成功后发送MQ消息到队列,然后去消费mq消息,发送短信。
但在某些场景下不能互换:
a)时间驱动/事件驱动:内部系统一般可以通过时间来驱动,但涉及到外部系统,则只能使用时间驱动。如怕取外部网站价格,每小时爬一次
b)批量处理/逐条处理:批量处理堆积的数据更加高效,在不需要实时性的情况下比消息中间件更有优势。而且有的业务逻辑只能批量处理。如移动每个月结算我们的话费
c)实时性/非实时性:消息中间件能够做到实时处理数据,但是有些情况下并不需要实时,比如:vip升级
d)系统内部/系统解耦:定时任务调度一般是在系统内部,而消息中间件可用于两个系统间
java有哪些定时任务的框架
单机
timer:是一个定时器类,通过该类可以为指定的定时任务进行配置。TimerTask类是一个定时任务类,该类实现了Runnable接口,缺点异常未检查会中止线程
ScheduledExecutorService:相对延迟或者周期作为定时任务调度,缺点没有绝对的日期或者时间
spring定时框架:配置简单功能较多,如果系统使用单机的话可以优先考虑spring定时器
分布
Quartz:Java事实上的定时任务标准。但Quartz关注点在于定时任务而非数据,并无一套根据数据处理而定制化的流程。虽然Quartz可以基于数据库实现作业的高可用,但缺少分布式并行调度的功能
TBSchedule:阿里早期开源的分布式任务调度系统。代码略陈旧,使用timer而非线程池执行任务调度。众所周知,timer在处理异常状况时是有缺陷的。而且TBSchedule作业类型较为单一,只能是获取/处理数据一种模式。还有就是文档缺失比较严重
elastic-job:当当开发的弹性分布式任务调度系统,功能丰富强大,采用zookeeper实现分布式协调,实现任务高可用以及分片,目前是版本2.15,并且可以支持云开发
Saturn:是唯品会自主研发的分布式的定时任务的调度平台,基于当当的elastic-job 版本1开发,并且可以很好的部署到docker容器上。
xxl-job: 是大众点评员工徐雪里于2015年发布的分布式任务调度平台,是一个轻量级分布式任务调度框架,其核心设计目标是开发迅速、学习简单、轻量级、易扩展。
分布式任务调度系统对比
1. 什么是分布式定时任务
把分散的,可靠性差的计划任务纳入统一的平台,并实现集群管理调度和分布式部署的一种定时任务的管理方式。叫做分布式定时任务。
2. 常见开源方案
elastic-job , xxl-job ,quartz , saturn, opencron , antares
elastic-job
elastic-job 是由当当网基于quartz 二次开发之后的分布式调度解决方案 , 由两个相对独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成 。
Elastic-Job-Lite定位为轻量级无中心化解决方案,使用jar包的形式提供分布式任务的协调服务。
Elastic-Job-Cloud使用Mesos + Docker(TBD)的解决方案,额外提供资源治理、应用分发以及进程隔离等服务
亮点:
基于quartz 定时任务框架为基础的,因此具备quartz的大部分功能
使用zookeeper做协调,调度中心,更加轻量级
持任务的分片
支持弹性扩容 , 可以水平扩展 , 当任务再次运行时,会检查当前的服务器数量,重新分片,分片结束之后才会继续执行任务
失效转移,容错处理,当一台调度服务器宕机或者跟zookeeper断开连接之后,会立即停止作业,然后再去寻找其他空闲的调度服务器,来运行剩余的任务
提供运维界面,可以管理作业和注册中心。
elastic-job结合了quartz非常优秀的时间调度功能,并且利用ZooKeeper实现了灵活的分片策略。除此之外,还加入了大量实用的监控和管理功能,
以及其开源社区活跃、文档齐全、代码优雅等优点,是分布式任务调度框架的推荐选择。
由于elastic-job-lite 不支持动态添加作业,此处仅贴上elastic-job-Cloud架构图
xxl-job
由个人开源的一个轻量级分布式任务调度框架 ,主要分为 调度中心和执行器两部分 , 调度中心在启动初始化的时候,会默认生成执行器的RPC代理
对象(http协议调用), 执行器项目启动之后, 调度中心在触发定时器之后通过jobHandle 来调用执行器项目里面的代码,核心功能和elastic-job差不多,同时技术文档比较完善
系统架构图:
quartz
quartz 的常见集群方案如下,通过在数据库中配置定时器信息, 以数据库悲观锁的方式达到同一个任务始终只有一个节点在运行,
优点:
保证节点高可用 (HA), 如果某一个几点挂了, 其他节点可以顶上
缺点:
同一个任务只能有一个节点运行,其他节点将不执行任务,性能低,资源浪费
当碰到大量短任务时,各个节点频繁的竞争数据库锁,节点越多这种情况越严重。性能会很低下
quartz 的分布式仅解决了集群高可用的问题,并没有解决任务分片的问题,不能实现水平扩展
Saturn
Saturn是唯品会在github开源的一款分布式任务调度产品。它是基于当当elastic-job 1.0版本来开发的,其上完善了一些功能和添加了一些新的feature。
亮点:
支持多语言开发 python、Go、Shell、Java、Php。
管理控制台和数据统计分析更加完善
缺点:
技术文档较少 , 该框架是2016年由唯品会的研发团队基于elastic-job开发而来
opencron
一个功能完善真正通用的linux定时任务调度定系统,满足多种场景下各种复杂的定时任务调度,同时集成了linux实时监控,webssh,提供一个方便管理定时任务的平台
缺点:仅支持 kill任务, 现场执行,查询任务运行状态 等, 主要功能是着重于任务的修改和查询上。不能动态的添加任务以及任务分片。
antares
优点:
一个任务仅会被服务器集群中的某个节点调度,调度机制基于成熟的 quartz
并行执行 , 用户可通过对任务预分片,有效提升任务执行效率
失效转移
弹性扩容,在任务运行时,可以动态的加机器
友好的管理控制台
缺点:
不能动态的添加任务,仅能在控制台对任务进行触发,暂停,删除等操作
文档不多,开源社区不够活跃
系统架构图如下:
4. 比较
此处列出了几个代表性的开源产品
http://www.taodudu.cc/news/show-5424930.html
相关文章:
- 判断是手机端还是PC端的验证
- 为什么很多公司都转型go语言开发?Go语言能做什么
- 网吧服务器写虚拟内存,网吧无盘虚拟内存设置是否正确分析
- 300台无盘服务器,300台左右机器的网吧用无盘还是有盘?
- 大学python和vb哪个简单-VB强大还是python强大
- win2003服务器维护,Windows 2003服务器维护技巧
- linux下去ldap数据,Linux系统下要如何修改LDAP中的数据
- 网吧使用多路宽带线路详细教程(图文)
- dos如何访问服务器文件,如何利用DOS命令将文件上传到服务器
- 巨头垄断下的创业机会
- 2007中国网吧行业发展调查报告-WBZL版
- 打造个性化网吧系统
- 【转载文章】手把手教你写批处理______附加我的读书笔记
- 从彭尼的游戏推算英雄联盟胜利的方式
- 网吧模式一台服务器拖显示器,这台曲面显示器令你网咖保持长久战斗力
- 教你如何重装电脑系统xp
- rx6700xt和rtx3060ti的差距大吗 哪个好
- 诺基亚
- 港水货诺基亚6700s的上网设置教程(互联网、wap、彩信)
- 嵌入式与产品-凤舞天
- 程序猿的九重天
- 凤舞 - 编译 客户端
- 安装mysql初始化失败原因_MySQL安装出错历险记 之 Framework初始化失败
- 凤舞
- 天子服务器找不到了,《天子》凤舞江湖服务器揭秘
- 凤舞天骄新手卡激活码
- 凤舞天骄加密文本文件批量转换工具(包含DELPHI源代码)
- 凤舞天骄TB商店修改器V1.0(DELPHI源代码,无需注册)
- 天骄2 mysql错误_关于凤舞天骄7740,Mysql5.0出现cmd.dll及11188.exe的处理办法
- 5 mysql 凤舞天骄_凤舞天骄mysql初始化失败平台的搭建
揭秘华为分布式定时任务调度系统(建议收藏)相关推荐
- 遇见未知的Saturn |准备篇:分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...
- quarts集群 运维_分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)...
1.业务场景 保险人管系统每月工资结算,平安有150万代理人,如何快速的进行工资结算(数据运算型) 保险短信开门红/电商双十一 1000w+短信发送(短时汇聚型) 工作中业务场景非常多,所涉及到的场景 ...
- 分布式定时任务调度系统技术解决方案(xxl-job、Elastic-job、Saturn)
分布式定时任务调度系统技术解决方案(xxl-job.Elastic-job.Saturn) 参考文章: (1)分布式定时任务调度系统技术解决方案(xxl-job.Elastic-job.Saturn) ...
- java分布式任务调度 唯品会,分布式定时任务调度系统Saturn安装部署
简介 Saturn (定时任务调度系统)是唯品会自主研发的分布式的定时任务的调度平台,目标是取代传统的Linux Cron/Spring Batch Job/Quartz的方式,做到全域统一配置,统一 ...
- 分布式定时任务调度系统 Saturn 安装部署
一.简介 Saturn (定时任务调度系统)是唯品会自主研发的分布式的定时任务的调度平台,目标是取代传统的Linux Cron/Spring Batch Job/Quartz的方式,做到全域统一配置, ...
- 分布式定时任务调度系统技术选型
点击上方"方志朋",选择"设为星标" 回复"666"获取新整理的面试文章 来源:EFbiz blog.csdn.net/guyue35/ar ...
- 分布式定时任务调度系统技术选型--转
http://www.expectfly.com/2017/08/15/%E5%88%86%E5%B8%83%E5%BC%8F%E5%AE%9A%E6%97%B6%E4%BB%BB%E5%8A%A1% ...
- 分布式定时任务调度系统
一:我们先思考下面几个业务场景的解决方案: - 支付系统每天凌晨1点跑批,进行一天清算,每月1号进行上个月清算 - 淘宝整点抢购,商品价格8点整开始优惠 - 12306购票系统,超过30分钟没有 ...
- 分布式工作流任务调度系统Easy Scheduler正式开源
分布式工作流任务调度系统Easy Scheduler正式开源 1.背景 在多位技术小伙伴的努力下,经过近2年的研发迭代.内部业务剥离及重构,也经历一批种子用户试用一段时间后,EasyScheduler ...
最新文章
- 白嫖一时爽!一直白嫖一直爽!程序员必备神器!
- mvc3 RenderAction传参问题
- python电脑要求-学python对电脑配置有要求么
- java中有哪几种注释方式_在 Java 中, 有多种注释方法,其中 __________ 适用于单行注释。...
- 从壹开始学习 NetCore 新篇章 ║ Blog.Core 开发社之招募计划书
- python类继承返回值_python继承threading.Thread实现有返回值的子类实例
- 使用Oraclize让智能合约调用外部数据
- 将MFC Grid Control封装为DLL的做法及其在DLL中的使用方法
- L3_08——图中所有边都是相等的常数
- matlab 2014
- 用.Net MVC模式做Topjui后台,通过实现IModelBinder转换前端查询条件,实现前端动态查询...
- python爬取付费音乐包_用Python代码来下载任意指定网易云歌曲(超详细版)
- PPT 最后一页写什么结束语既得体又能瞬间提升格调?
- 简化企业组网 H3C S1224F以太网交换机评测
- java爬虫正则表达式_Java爬虫预热之正则表达式 - 菜鸟头头
- 基于stm32单片机的台历日历计时器万年历Proteus仿真(源码+仿真+全套资料)
- ChatGPT专业应用:撰写节日营销活动方案
- 这些专业是考研大户!
- Informix SQL-Tracing
- Gitlab集成odoo单点登录
热门文章
- 中国男足为什么总是输?
- OSChina 周一乱弹 —— 有人要给本汪介绍妹子啦
- 计算机时间无显示桌面,我的Win10电脑显示只显示时间而没有日期怎么办?怎么解决?...
- linux下U盘无法删除文件的解决办法
- 单片机C51基础编程之跑马灯
- 组播路由器软件的比较
- Strom本地环境搭建
- Zabbix与乐维监控对比分析(一)——架构、性能篇
- AI创业周报第3期:自动驾驶创企纷纷挖角Waymo特斯拉,AI制药不再是个伪命题
- On the value of temporal information in information retrieval (完)