淘宝开源任务调度框架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等服务器状态 ...
随机推荐
- Html5移动端页面布局通用模板暨移动端问题总结
最近的移动端项目终于告一段落了,其中遇到了不少问题,在此和大家总结分享. 首先,说一下结构.一般的手机页面大致可以分为五块:head, content, foot,solidbar,dialog. 针 ...
- 不能修改“System Roots”钥匙串 即下载的.cer 文件添加不到钥匙串
双击提示 :不能修改“System Roots”钥匙串要更改根证书是否会被信任,请在“钥匙串访问”中打开它,然后修改它的信任设置. 解决办法:添加到 登录或显示LOGIN的 keychain(记 ...
- python 3.6 import pymysql错误
在3.x之后可以用pymysql来代替之前的mysqldb模块. 首先安装pip: 终端命令: easy_install pip 随后成功安装pip 继续输入命令 pipinstall PyMySQL ...
- (转) 学习C++ -> 指针初步
学习C++ -> 指针初步 一.指针 1. 什么是指针? 我们知道, 计算机的内存是由一个个独立的存储单元组成, 并且系统会对每一个存储单元分配一个唯一的号码, 称为这个存储 ...
- netCDF
NetCDF started in 1989 most used in geoscience community array-oriented self-describing header, desc ...
- Tomcat学习笔记 - 错误日志 - Tomcat部署项目或修改xml配置出现无法保存的情况(拒绝访问)
原因分析:(windows下) 可能有人会发现在编辑好 tomcat-users.xml 文件后无法保存,原因是使用的用户没有权限修改文件,可能是把 Tomcat 发行包放到了一个需要管理员权限才能修 ...
- [转]设置MS Office Word for mac的默认显示比例
由于mac os的分辨率比较大,在PC上显示正常的word文档(显示比例100%),在mac下打开会很小,需要经常调整显示比例,如调到125%.130%或150%,可以通过下面方法来设置默认显示比例, ...
- http://codepen.io/zhou-yg/pen/NqgPmg 在线编辑器
http://codepen.io/zhou-yg/pen/NqgPmg 在线编辑器
- Python解析json字符串
{"status":0,"result":{"location":{"lng":116.47847460177,&quo ...
- RenderPartial RenderAction Partial Action
MVC Razor中有不同的展现partial view的方法,许多开发人员子在选择使用 RenderPartial or RenderAction or Partial or Action help ...