轻量级分布式延时任务处理组件easyTask-L-API介绍篇

Posted liuche

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了轻量级分布式延时任务处理组件easyTask-L-API介绍篇相关的知识,希望对你有一定的参考价值。

  easyTask-L的API设计比较简洁、易于理解和使用。主要涉及环形队列类、配置类、任务超类以及监控类四个方面。下面逐一做简单介绍。本文只对比较重要的API做介绍,其他API还望读者自行探索

环形队列(AnnularQueue)

  环形队列类设计为单例模式。通过AnnularQueue.getInstance();获取。

  1、void start(EasyTaskConfig config) throws Exception:

    启动easyTask-L,包括环形队列时钟、集群等一系列工作。且只需要在系统启动时调用一次即可。切勿重复调用。参数config是必须的,系统将此配置参数实例作为当前工作的参数。如果启动失败将抛出异常。

  2、String submit(Task task) throws Exception:

    向环形队列中提交新任务。提交失败则抛出异常

       3、String submitAllowWait(Task task) throws Exception

     向环形队列中提交新任务。提交失败则抛出异常。如果环形队列还没有启动成功,则任务不抛出异常,等待启动后再正式提交任务。

配置类(EasyTaskConfig)

  前面说了环形队列(集群)启动时需要给一个启动配置参数。因为这是系统必须的东西。

  1、String zkAddress;

  集群zookeeper地址配置。必填  如:127.0.0.1:2181

  2、int backupCount ;

  任务备份数量,默认2。最大2,超过部分无效

  3、String taskStorePath;

  自定义任务本地存储路径。必填

  4、int sQLlitePoolSize

  sqlite连接池大小设置。默认cpu数的两倍

  5、int serverPort

  设置当前节点Netty服务端口号。默认2020

  6、int timeOut

  设置集群通信调用超时时间。默认3秒

  7、int loseTimeOut

  ZK节点信息失效超时时间。默认超过60s就判断为失效节点,任何其他节点可删除掉

  8、int deadTimeOut

  ZK节点信息死亡超时时间。默认超过30s就判断为Leader失效节点,其Follow节点可进入选举新Leader

  9、int heartBeat

  节点对zk的心跳频率。默认2s一次

  10、int tryCount

  集群节点之间通信失败重试次数。默认2次

  11、int clearScheduleBakTime

  清理任务备份表中失效的leader备份。默认1小时一次。单位毫秒

  12、ExecutorService clusterPool

  集群公用程池。暂时不用设置

  13、ExecutorService dispatchs

  环形队列任务调度线程池。默认为cpu核心数

  14、ExecutorService workers

  环形队列工作任务线程池。默认为cpu核心数2倍

任务超类(Task)

  1、void setEndTimestamp(long endTimestamp)

  设置任务未来的执行时间戳。如果你设置的是一个过去的时间戳,则代表任务立即执行。适用于单次任务以及周期性任务

  2、void setTaskType(TaskType taskType)

  设置任务类型。单次任务或周期任务

  3、void setUnit(TimeUnit unit)

  设置周期任务的执行周期时间单位。支持天、小时、分、秒

  4、void setParam(Map<String,String> param)

  设置当前任务携带的执行参数。仅支持字符串类型。其他类型都可以转化为字符串

环形队列监控(AnnularQueueMonitor)

  1、int getTaskInAnnularQueueQty()

  获取环形队列中等待被触发执行的任务数

  2、Map<String, String> getDispatchsPoolInfo()

  获取分派任务线程池信息。包括:taskQty队列中等待执行的任务数,completedQty已经执行完成的任务数,activeQty正在执行任务的线程数,coreSize设置的核心线程数

  3、Map<String, String> getWorkersPoolInfo()

  获取执行任务线程池信息。包括:taskQty队列中等待执行的任务数,completedQty已经执行完成的任务数,activeQty正在执行任务的线程数,coreSize设置的核心线程数

集群监控(ClusterMonitor)

  1、String getCurrentNodeInfo()

  获取当前节点信息

  2、Map<String, Map<String, List>> getDBTraceInfoByTaskId(String taskId)

  获取任务的数据存储跟踪信息。因为涉及到访问数据库,不建议频繁调用

  3、ZKNode getCurrentZKNodeInfo()

  获取当前节点在zk上的注册信息

数据存储监控(DBMonitor)

  1、Map<String,List> getInfoByTaskId(String taskId)

  获取任务在本节点的数据存储信息

  

 

以上是关于轻量级分布式延时任务处理组件easyTask-L-API介绍篇的主要内容,如果未能解决你的问题,请参考以下文章

分布式 延时任务解决方案

基于RabbitMQ实现分布式延时任务调度

celery异步,延时任务, 周期任务

UCOSII 如何分配任务之间的延时节拍时间

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

PHP7之Reids键空间通知配合TP5 实现分布式延时任务