Skip to content

Saturn Amazing Feature Description

Calvin Xiao edited this page Dec 2, 2016 · 15 revisions

As you know Saturn is originated from Dangdang's elastic job. But we enhance it according to our requirement and understandings. Here is the list to show their difference to help you how to make your decision between them. For the feature map, please refer to Feature Map

为什么我们需要修改Elastic Job


首先我们使用Elastic Job的时间节点比较早,Elastic Job那时还在密集开发中。

其次是我们唯品会内部对于任务调度的需求和当当有不少差异的地方,如我们需要支持秒级调度,需要支持消息调度,需要本地类型作业等等,更重要的是我们需要兼容原有的的PHP的CRON TABLE模式的作业,这个正是当时Elastic Job不支持的地方。

再者,我们的运维管理模式与当当还是有许多不同之处,这个对于我们系统的功能设计也带来了影响。如我们的物理机体系的单进程管理模式,如何能高效的利用资源和增强作业的容错性等方面这些都是我们需要重点考虑的地方。当时Elastic Job难以在短时间内在开源版本提供给我们,所以以Elastic Job做为Saturn的Code base成为了我们的选择。当然这中间Elastic Job的开发者们给了我们很大的帮助和支持,在此一并感谢!

Saturn基于Elastic Job的主要改动点和增强点

管理控制台(Console)功能增强


控制台的功能变更和功能增强主要的指导思想是符合我们自己的运维管理思路为主。因为从运维管理的角度看,以往我们PHP的CRON TABLE的方式管理作业遇到了很多的问题和瓶颈例如:作业被分散在不同的机器上,没有一个很好的维度做统一的管理和监控,特别是PHP的作业容易发生僵死无运维无法知道等等。所以在考虑Console的时候,我们是希望做到统一的配置即在中央管理上做一次配置,就可以让多个作业运行;统一管理即可以在中央管理上控制作业的启用、禁止等等无需登录对应的机器操作;统一监控即可以提供不同维度的视图为管理做出指引。

监控管理

作业运行时的监控管理对于运维而言是很重要的,如何帮助运维能一眼看到图标就能判断出作业是否有问题,或者存在风险尤为重要。所以我们为执行节点(Executor)和作业提供了Dashboard视图。

  • Executor Dashboard: 展示一个命名空间下online和offline的executor的数量,并展示每个executor的运行作业负荷情况已经作业分片列表。运维人员可以通过该试图立即判断出是否有executor下线,是否某个executor负荷过重造成风险等等。
  • Executor List: 重点增加了Executor版本的监控,以及启动时间的监控。例如从启动时间可以看出Executor是否被重启了、是否用错了版本等。
  • Job Dashboard: 展示一个命名空间下不同状态的作业数(ready, running, stopped, stopping),以及每个作业的成功率。运维人员可以快速定位错误率高的作业。
  • Job List: 重点增加了作业的启动时间以及下次启动的预估,同时展示了对应的分片落在那台机器上等。
作业管理

作业管理出了做基本的配置之外,我们还提供了更多的丰富的管理功能,帮助业务快速上线以及日常管理,包括:

  • 作业批量查询
  • 作业批量导入、导出(这个帮助开发人员在测试环境下将测试好的数据导入到生产环境中,避免再次配置的认为失误)
  • 作业暂停时间设置(这个对于非核心作业任务,可以设置在大促期间不运行,让出资源给别的系统)
  • 作业动态增加作业以及删除作业(无需更新Executor以及停止Executor运行才能操作)
  • 优先节点配置 (可以将作业人为安排在某个节点运行,如已经被授权过的连接银行的系统等)
  • 超时配置 (作业如果运行操作指定时间会被kill掉,避免僵死)
  • 本地模式作业配置 (作业没有分片,只要有Executor就会跑,类似一个机器一个分片,同时无需failover,这样机器伸缩对于作业无影响,无需重新配置)
  • 负荷配置 (逻辑设置作业的相对负荷,调度器可以自动根据这个配置将作业分配到何时的Executor)
资源调度平衡
多Zookeeper集群的支持

执行节点(Executor)功能增强


作业类型的支持
作业模式支持
作业运行管理

开发增强


容器化支持