可能对于java初学者来说,分布式的有关内容还暂时接触不到,但是有兴趣想往java架构师方向走下去的小伙伴们,现在就可以去了解了,例如,了解分布式任务调度框架是指的什么?都有哪些呢?
在传统的分布式任务调度中都有一个调度中心的,这个调度中心呢也都要部署称多节点的集群,以避免单点的故障,然后呢还有一堆的执行器,执行器是负责执行调度中心分发的任务的。
分布式任务调度器SkySchedule职责:
可以通过分布式调度,把任务均分到各个消费者服务器上面。
可以保证任务100%被执行了。
一般情况下任务的执行有三种情况:
At most once 任务可能没有执行,但绝不会重复执行了。
At least one 任务绝对会执行,但可能会重复执行了。
Exactly once 每条任务肯定会被执行一次且仅执行一次,但是很多时候这是用户所想要的。
由于在有些项目的业务场景中,允许重复执行,目前SkySchedule只支持到At least one。Exactly once后续会提供的。
如果某台消费者服务器挂掉,是能自动重新分配任务到其他消费者服务器的。如果是增加消费者服务器,也能对剩余的任务自动重新分配的。
也为了防止单点故障,SkySchedule服务是需要部署到多台服务器上的,如果其中某台挂掉或出现了故障,存活的SkySchedule服务器也能正常对外服务的。
Saturn呢是基于elastic-job开发的分布式定时任务调度框架,它能够实现集中化统一配置、基于exector负载的任务分片调度、任务监控告警及api任务管理等平台等一系列功能,更重要的是其还支持容器化的技术,同时saturn(开源版本)中的任务不仅支持java,还支持shell脚本。目前saturn已经在github上开源了,相关文档也可以在github上找到了。
saturn架构的概念如下:
Saturn定时任务调度它的最小单位是分片,就是说任务的一个并行执行单元。Saturn的基本任务就是将任务分成多个分片,并将每个分片通过算法调度到对应的executor上去执行。
好了,以上就是本篇文章的全部内容了,还想了解更多java架构师相关信息,记得关注本站消息哦。
推荐阅读: