
课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
序你就是要必须懂,那么如何才能有效实现分布式定时任务呢?如何才能修炼成高级程序猿,下面我长沙java培训老师带大家看当当的这款开源产品是非常棒的,解决了我的项目中定时任务的单点问题,使系统有了高可用的保证。要说缺点嘛,也有一个,就是每一个任务都需要新写一个类实SimpleJob接口。
比如短信提醒,每天定时的给用户下发短信,如果部署了多台,同一个用户将发送多条。只部署一台机器,可用性又无法保证。今天向大家介绍一款开源产品,分布式定时任务解决方案----elastic-job。
二、简介
Elastic-Job是一个分布式调度解决方案,由两个相互独立的子项目Elastic-Job-Lite和Elastic-Job-Cloud组成。在我们的项目中使用了轻量级无中心化解决方案,Elastic-Job-Lite。
1、分片概念
任务的分布式执行,需要将一个任务拆分为多个独立的任务项,然后由分布式的服务器分别执行某一个或几个分片项。
比如达内java培训老啊在有一个遍历数据库某张表的作业,现有2台服务器。为了快速的执行作业,那么每台服务器应执行作业的50%。为满足此需求,可将作业分成2片,每台服务器执行1片。
作业遍历数据的逻辑应为:服务器A遍历ID以奇数结尾的数据;服务器B遍历ID以偶数结尾的数据。如果分成10片,则作业遍历数据的逻辑应为:每片分到的分片项应为ID%10,而服务器A被分配到分片项0,1,2,3,4;服务器B被分配到分片项5,6,7,8,9,直接的结果就是服务器A遍历ID以0-4结尾的数据;服务器B遍历ID以5-9结尾的数据。
Elastic-Job并不直接提供数据处理的功能,框架只会将分片项分配至各个运行中的作业服务器,开发者需要自行处理分片项与真实数据的对应关系。
2、作业高可用
上述作业中,如果有一个应用挂掉,分片项将会重新分片,没有挂掉的应用将获得分片项0-9。
三、实际应用
这里我们采用大家都比较熟悉的基于spring配置文件的配置。
在我们的项目当中,使用定时任务是避免不了的,我们在部署定时任务时,通常只部署一台机器。部署多台机器时,同一个任务会执行多次。(以上部分摘自博客园)
想要掌握java程序员的精髓,那就要不断的研究与学习。长沙it培训老师希望学java的你早日修炼成高手,不要放弃治疗,来长沙达内官网了解学习吧!