在上一篇文章中,我们介绍了如何使用弹性作业来实现定时任务。在使用使用时解决了竞争问题,还可以实现高度可用的计时任务执行。
但是,当我们制定时间任务时,还有另一种类型的问题,即任务执行速度太长。同时,为了实现定时任务的高可用性,已经启动了许多任务实例,但是每个任务的一次是一个,一个是一个任务执行时,一个是一个任务。实例正在运行,并且实例正在运行,并且资源利用率不高。
因此,我们将继续介绍使用弹性作业配置来加速任务执行并使用资源使用的目标!
建议在文章末尾在仓库中下载该项目,然后在此基础上修改。知识并继续以下内容!
步骤1:创建碎片任务
这是确定当前任务的分片项目值以执行不同的碎片任务。碎片项目的值取决于以后要配置的碎片总数,但请注意,它是从0计数的。打印以显示碎片效果。当您真正实现业务逻辑时,您必须记住根据碎片数设计执行任务的设计。例如:您可以根据批处理任务的ID区分不同的数据以处理不同的数据,以避免重复执行和问题。
步骤2:在配置文件中,设置配置任务的实现,执行表达式和碎片的总数参数,这对于测试很重要
它在此处设置为3,因此任务将分为3件,每个零件都对应于第一步中的开关分支。
单一限制操作
完成上述代码后,尝试启动上面实现的第一个实例。
目前,我们可以看到每5秒间隔一次,此示例将打印这样的日志:
正如我上面说的那样,每个任务都分为3个碎片任务,每个碎片对应于开关的一个分支。由于我们在当前情况下仅启动了一个实例,因此所有三个碎片任务都分配给了这个唯一的示例。
双序列运行
接下来,我们启动一个实例(请注意使用-dserver.port以更改不同的端口,否则本地开始将不成功)。这次,这两个实例的日志已更改:
登录示例1:
登录示例2:
随着示例数量的增加,碎片的分布也发生了变化。这也意味着,当任务开始执行时,使用两个任务执行实例,以便可以优化我们的任务执行和资源利用效率。
您也可以尝试继续实例并关闭实例以观察任务的动态分配。怎么样?编写这样的时间任务更方便吗?记住自己写的时间,所以您可以更深入!在下一篇文章中,我们将继续介绍一些有关定时任务的高级内容。
本文的完整项目可以在下面的仓库中查看目录:
如果您认为这篇文章很好,欢迎支持,您的关注是我的动力!
欢迎来到我的公共帐户:程序猿DD,分享干货和外面思考!