Task系统设计与使用

Task是一个轻量级的分布式任务计算系统,他可以帮助你快速编写一个可以在集群环境下运行的分布式方法,而这只需要你使用一行代码就可以在你原有的方法上做到.

一个简单例子:

public class Hello {public void say(String msg) throws InterruptedException {Thread.sleep(1000);System.out.println(msg);}
}public class SetUp {public static void main(String[] args) throws InterruptedException {// 获取Hello对象的代理实例Hello hello = Task.registerASyncClass(Hello.class);// 此时say方法会被立即返回且是被集群中的某个节点给调用了hello.say("hello world");}
}

Task支持业务场景

Task的设计的目的是支持分布式任务计算,可以作为一款任务执行引擎.支持一下特点:

  1. 支持任务的开始\暂停\删除
  2. 采用多种调度算法,可以指定任务在特定节点消费\在不同的Executor上执行
  3. 扩展性强,可以对接各种mq服务\executor模块\支持Spring的BeanFactory或者第三方DI容器
  4. 支持分布式任务执行,整个调用过程可以让开发者无感知
  5. 携带监控系统,可以随时了解系统运行的状态

Task系统架构

Task主要分为以下几个模块:

ClientProxy: 用于获取任务提交的代理对象,如上Task.registerASyncClass(Hello.class)可以获取Hello对象的代理实例,用于提交任务到mq服务。

Coding: 可以对方法的调用动作进行描述和重放方法的执行,并可以对描述信息进行序列化存取到mq服务和反序列化成一个Runnable对象

MQ: 用于存放方法调用信息描述的地方,默认支持Redis的List结构队列,并预留扩展用于对接各个MQ组件

Controller: 任务调度的控制中心,负责任务调度路由,任务的开始、暂停等动作

Diapatch: Task采用的是拉取的方式进行任务调用。Dispatch模块设计的目的主要是合适的时间去从MQ中拉取任务并监管任务的执行情况,异常处理

BeanFactory: 任务所属对象的Bean管理,默认采用google的guice管理,已预留扩展,可以方便支持其它DI容器,可以方便扩展Spring的BeanFactory

Executor: 任务真正执行的地方,Dispatch模块会把拉取到任务通过Coding转成Runnable对象,并交给Executor模块,Executor模块类似于本地的ExecutorService框架,用于本地的并发模型。已预留扩展,可以实现自己的Executor模块

你想好了吗

你是否真的需要这样的一个工具,到底是异步还是同步,什么样的才可以称的上任务。在使用前,希望你也可以考虑清楚这些问题。这里我需要声明的是,
能同步的最好不要异步。异步分布执行虽然可以提高系统吞吐量,但它是在高于一定得计算量请求量的情况下才可以显现出来这一特点。当你决定需要它时,
你就要决定放弃及时响应的特性,虽然它可以达到近实时的计算(在无压力下,一个任务默认可能会出现延迟1s执行,这个时间可以设置)。另外,你是否需要的是一个分布式的异步并行框架,
还是JDK自带的单机并发框架,如果executorservice就可以满足了,那你也不必使用它了,虽然我个人觉得这个在使用时会更方便,但我并不想让你那么做,能满足需求就好
方案永远不止一个,用你最熟悉的吧。

项目地址:https://github.com/WangJunTYTL/task

Task一个轻量级分布式任务计算系统相关推荐

  1. hadoop 依赖式job_每天一学:一个轻量级分布式任务调度框架 XXL-JOB

    概述 XXL-JOB是一个轻量级分布式任务调度平台,其核心设计目标是开发迅速.学习简单.轻量级.易扩展.现已开放源代码并接入多家公司线上产品线,开箱即用. 官方地址中文版:http://www.xux ...

  2. 一个轻量级分布式RPC框架--NettyRpc

    1.背景 最近在搜索Netty和Zookeeper方面的文章时,看到了这篇文章<轻量级分布式 RPC 框架>,作者用Zookeeper.Netty和Spring写了一个轻量级的分布式RPC ...

  3. LTS 轻量级分布式任务调度框架(Light Task Scheduler)

    框架概况: LTS是一个轻量级分布式任务调度框架.有三种角色, JobClient, JobTracker, TaskTracker.各个节点都是无状态的,可以部署多个,来实现负载均衡,实现更大的负载 ...

  4. 轻量级分布式任务调度平台 XXL-JOB

    From:https://www.cnblogs.com/xuxueli/p/5021979.html github 地址 及 中文文档地址:https://github.com/xuxueli/xx ...

  5. LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷

    LTS 轻量级分布式任务调度框架(Light Task Schedule) - 推酷

  6. 分布式数据流计算系统的数据缓存技术综述

    点击上方蓝字关注我们 分布式数据流计算系统的数据缓存技术综述 袁旭初, 付国, 毕继泽, 张岩峰, 聂铁铮, 谷峪, 鲍玉斌, 于戈 东北大学计算机科学与工程学院,辽宁 沈阳 110169 论文引用格 ...

  7. SpringBoot2.x整合轻量级分布式定时任务ShedLock3.x的使用详解

    目录 前言 SpringBoot2.x整合轻量级分布式定时任务ShedLock3.x的使用详解 一.关于ShedLock 二.ShedLock的三个核心组件 三.ShedLock使用三步走 四.Spr ...

  8. [UWP]实现一个轻量级的应用内消息通知控件

    [UWP]实现一个轻量级的应用内消息通知控件 原文:[UWP]实现一个轻量级的应用内消息通知控件 在UWP应用开发中,我们常常有向用户发送一些提示性消息的需求.这种时候我们一般会选择MessageDi ...

  9. 轻量级分布式 RPC 框架

    RPC,即 Remote Procedure Call(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样. RPC 可基于 HTTP 或 TCP 协议,Web Servi ...

最新文章

  1. 上传大数据到SharePoint 2010
  2. 现实世界的Windows Azure:采访Dot Net Solutions的首席执行官Dan Scarfe
  3. 那些年,使用Github的正确姿势
  4. 【deep learning学习笔记】注释yusugomori的LR代码 --- LogisticRegression.cpp
  5. java 504错误怎么解决_求助java.lang.NoClassDefFoundError怎么解决,报错信息如下
  6. 【Linux】基础每日一命之cutmvscp命令
  7. 树莓派安装ftp服务器
  8. Java - 经常使用函数Random函数
  9. linux 批量删除进程的两种方法
  10. 马哥Linux2016最新高薪运维视频课程
  11. Vue+Vant的组件自定义使用阿里图标库图标
  12. Robotium学习
  13. shell 脚本-while用法
  14. 炫彩界面库(DirectUI)-QQ概念版模仿-动态的画面展现,异型透明,显示悠悠飘动的白云,不断起舞的花藤,给您不一样的视觉享受!
  15. 【校招Web前端面试干货分享】
  16. Vmware14安装苹果系统macos
  17. Android——扩大ImageButton的点击区域
  18. 破解excel格式保护
  19. AWS全球年度技术大会--上海站、广州站
  20. python遇到执行超时如何跳过避免任务卡死

热门文章

  1. 数据库系统期末总结(一)(往届试卷2018A卷、C卷、E卷选择题)
  2. #199-【莫队】小Z的袜子
  3. Xilinx MIG IP核app_wdf_rdy信号一直为低
  4. ICLR2020推荐阅读论文50篇
  5. python练习-Python输出不重复的字符
  6. 【UEFI基础】Protocol介绍
  7. office常用技巧总结【word篇】
  8. matlab语音合成技术,matlab语音合成详细版
  9. 【最新干货】深信服2021届安服类笔试题
  10. Dubbo之服务导入流程解析