Gleasy的分布式任务调度中间件CloudJob

声明
本文为Gleasy原创文章,转载请指明引自Gleasy团队博客

一.CloudJob是什么
它是一个中间件,不能够独立运行。需要用它应用配置后使用它提供的API来解决某些特定的问题。
它提供jar包供JAVA应用使用。目前暂无提供其它语言的客户端。
它运行时需要使用redis和zookeeper,所以使用它的前提是必须同时使用redis和zookeeper。

二.它解决什么问题
CloudJob主要解决的问题是将大量小的或者定时执行的计算任务分配到若干服务器结点(或者称之为计算集群)去执行。它并不提供并行计算能力,超大型任务需要使用者自行分解提交并汇总。它不是MapReduce框架,不是Hadoop。它有些像Rpc,但不同之处它是自动负载均衡的,任务有进度有状态可中止,可异步,还可识别出相同任务,自动去重;它有些像Quartz,但它是分布式的;
这么一个四不像的中间件,在Gleasy众平台中起着至关重要的作用。
场景1:Gleasy的在线Office,涉及大量的文件类型转换工作(doc to html, xls to grid,html 2 doc,etc…)。在线Office平台接受到用户请求,直接把任务丢进CloudJob,后端的转换集群就开始有条不紊地处理(相同文件的转换任务只会执行一次,无论多少用户提交),并将结果反馈。
场景2:Gleasy的定时发送邮件(设定某个时间发送某封邮件到某个或者某些人),定时任务提醒,生日提醒,日程提醒,甚至是周提醒,月提醒。。。等等需要在将来做的一些具体的任务,就可以把任务和定时规则丢进CloudJob,CloudJob会在时间到达之时,正确地执行。

三.技术特性
集群结点个数可达数千;
支持结点动态增加;
任务自动负载均衡;
支持海量定时任务,任务数量可达亿级别;
完全支持Crontab定义任务触发规则;
严格保证任务处理的实时性和顺序性;
支持任务同步或异步执行
支持查询任务执行状态和结果
支持避免同一任务重复执行,可复用其结果

四.设计思想
1. 技术选型
Powered by Java
使用zookeeper作为集群状态维护和结点发现工具
使用redis shard作为存储

2. 主体架构图
online casino />

3. 任务处理示意图

五.单台服务器性能测试
硬件环境:CPU INTEL I5 4核,内存12G,硬盘7200转.

定时任务提交(tps=5000)
target/benchtest/bin/TestJobProducer /data/config/util/config_0_11.properties cron 200 20000
线程总时间:864684;平均:43.2342
实际总时间:4484; 平均:0.21685

普通任务提交(tps=14285)
target/benchtest/bin/TestJobProducer /data/config/util/config_0_11.properties fasyc 200 20000
线程总时间:282056;平均:14.1028
实际总时间:1540; 平均:0.077

 

此条目发表在 Java技术, 分布式技术, 数据库技术, 运维 分类目录。将固定链接加入收藏夹。

Gleasy的分布式任务调度中间件CloudJob》有 2 条评论

  1. Pingback 引用通告: Gleasy分布式架构体系介绍 | Gleasy团队博客

  2. Pingback 引用通告: 大型WEB应用性能调优总结 | Gleasy团队博客

发表评论