淘宝开源任务调度框架tbschedule
背景
分布式任务调度是非常常见的一种应用场景,一般对可用性和性能要求不高的任务,采用单点即可,例如linux的crontab,spring的quarz,但是如果要求部署多个节点,达到高可用的效果,上面的方案就不适用了。
实际上任务调度的实现有两种情况,第一种是通过mq来实现,mq做好了数据切分,负载均衡的效果,本文说的是另一种情况。
要求
一、不重复
如果只达到这个要求,有很多方法,假设任务处理的是一张表中的数据,那可以根据某个字段取模达到不重复的效果。
二、不遗漏
如果用上面的方案解决了重复的问题,有一个节点挂掉,需要其他节点接管挂掉节点的任务,这就要求分布式任务调度必须有指挥中心,否则很容易造成重复或者遗漏。
tbschedule
上图是tbschedule的架构图,基本满足了分布式任务调度的要求,zookeeper有两个功能,一个是配置数据存储,另一个是作为调度中心,管理界面直接连接zookeeper取得配置信息,并且修改配置,通过zookeeper通知任务修改配置项。
要求不高的话可以直接拿来用,虽然文档少,但是代码量很少,可以直接通过读代码了解功能。
tbschedule已经满足了大多数需求,代码写的也非常优秀,但是有几个地方是可以改进的,
1、前面提到的,一般情况下,我们是不需要多个节点同时工作的,只要有一个节点工作,挂掉其他节点能接替就可以了。因为取数据通常不是性能瓶颈,瓶颈在处理数据,多个节点的目的无非是为了高可用。如果通过sql取模进行分片,sql的性能非常低,走不了索引。如果表数据已经做了水平拆分,那可以直接根据数据源切分任务项。
2、tbschedule是把所有任务都处理完才算结束,但是有些场景要求只执行一次,哪怕还有任务要处理,tbschedule需要增加一个配置项;
3、执行时间修改必须在每个执行周期后才能生效,这个经常在调试的时候出现麻烦,这样做确实是最简单的做法,避免了很多问题,但是如果开发人员要配置任务每分钟执行一次,结果写错了配置成每天执行一次,就完美的落入陷阱,等半天也看不到执行,还以为配置错了,重启可以解决;
4、没有负载均衡效果,tbschedule认为每台机器的配置都是一样的,就算配置一样,数据项不一样也容易引起其中一个节点压力特别大。需要根据机器的负载情况、程序的繁忙情况做一个加权平均来做负载。
淘宝开源任务调度框架tbschedule的更多相关文章
- 淘宝分布式NOSQL框架:Tair
Tair 分布式K-V存储方案 tair 是淘宝的一个开源项目,它是一个分布式的key/value结构数据的解决方案. 作为一个分布式系统,Tair由一个中心控制节点(config server)和一 ...
- 淘宝开源编辑器Kissy Editor和简易留言编辑器【转】
原来也写过一篇关于百度Ueditor编辑器的介绍:百度Ueditor编辑器的使用,ASP.NET也可上传图片 最开始是使用CuteEditor控件,需要好几mb的空间,因为刚开始学习ASP.NET的时 ...
- 淘宝开源Key/Value结构数据存储系统Tair技术剖析
摘要: Tair的功能 Tair是一个Key/Value结构数据的解决方案,它默认支持基于内存和文件的两种存储方式,分别和我们通常所说的缓存和持久化存储对应. Tair除了普通Key/Value系统提 ...
- 通过源码分析Java开源任务调度框架Quartz的主要流程
通过源码分析Java开源任务调度框架Quartz的主要流程 从使用效果.调用链路跟踪.E-R图.循环调度逻辑几个方面分析Quartz. github项目地址: https://github.com/t ...
- 分布式开源调度框架TBSchedule原理与应用
主要内容: 第一部分 TBSchedule基本概念及原理 1. 概念介绍 2. 工作原理 3. 源代码分析 4. 与其它开源调度框架对照 第二部分 TBSchedule分布式调度演示样例 1. TBS ...
- 基于淘宝开源Tair分布式KV存储引擎的整合部署
一.前言 Tair支撑了淘宝几乎所有系统的缓存信息(Tair = Taobao Pair,Pair即Key-Value键值对),内置了三个存储引擎:mdb(默认,类似于Memcache).rdb(类似 ...
- [KISSY5系列]淘宝全终端框架 KISSY 5--从零开始使用
KISSY 是淘宝一个开源的 JavaScript 库,包含的组件有:日历.图片放大镜.卡片切换.弹出窗口.输入建议等 一.简介 KISSY 是一款跨终端.模块化.高性能.使用简单的 JavaScri ...
- 淘宝开源Web服务器Tengine安装教程
简介Tengine是由淘宝核心系统部基于Nginx开发的Web服务器,它在Nginx的基础上,针对大访问量网站的需求,添加了很多功能和特性.Tengine的性能和稳定性已经在大型的网站如淘宝网,淘宝商 ...
- 淘宝开源系统监控工具Tsar
Tsar是淘宝开发的一个非常好用的系统监控工具,在淘宝内部大量使用 它不仅可以监控CPU.IO.内存.TCP等系统状态,也可以监控Apache,Nginx/Tengine,Squid等服务器状态 ...
随机推荐
- kaggle之人脸特征识别
Facial_Keypoints_Detection github code facial-keypoints-detection, 这是一个人脸识别任务,任务是识别人脸图片中的眼睛.鼻子.嘴的位置. ...
- django表单及母板
在之前的埔文中说到了对Model的操作以及对url的路由映射等内容,对应django的mtv框架则是完成了学习,Model与viewer的操作,那么本节主要来唠叨一下template,当Model,v ...
- SSH连接LINUX乱码解决方法
1.vi /etc/sysconfig/i18n 将内容改为 LANG="zh_CN.GB18030" LANGUAGE="zh_CN.GB18030:zh_CN.GB2 ...
- 1207--ATM自动取款机的实现
#include <stdio.h> #include <stdlib.h> #include <stdbool.h> //提示用户操作 void alert(ch ...
- 在VS中如何用C++连接Mysql
在如鹏网上看到的如何用C连接Mysql,解决了大二时的一直困惑,大喜! 第一步下载 安装的数据库是如鹏网的Mysql :http://pan.baidu.com/s/1c0m3xIw 提取码:m9sn ...
- activiti笔记四 关于部署信息表act_re_deployment
一.简要描述 部署流程定义时需要被持久化保存下来的信息.二.表结构说明 字段名称 字段描述 数据类型 主键 为空 取值说明 ID_ ID_ nvarchar(64) √ 主键ID NAME_ 部署名称 ...
- Maven 学习笔记
1. Maven 工具的意义: 从事软件开发,无论什么样的项目,什么样的技术,都要经历:编码.测试.打包.发布等几个特定过程,而这些过程在软件开发周期中都是重复的.繁琐的.Maven的出现是为了将开发 ...
- SQL Server 本地时间和UTC时间的相互转换的代码
DECLARE @LocalDate DATETIME, @UTCDate DATETIME, @LocalDate2 DATETIME SET @LocalDate = GETDATE() SE ...
- 在Python3.5下安装和测试Scrapy爬网站
1. 引言 Scrapy框架结构清晰,基于twisted的异步架构可以充分利用计算机资源,是爬虫做大的必备基础.本文将讲解如何快速安装此框架并使用起来. 2. 安装Twisted 2.1 同安装Lxm ...
- python笔记之编程风格大比拼
python笔记之编程风格大比拼 虽然我的python age并不高,但我仍然愿意将我遇到的或者我写的有趣的python程序和大家一块分享,下面是我找到的一篇关于各类python程序员的编程风格的比较 ...