FME服务器队列和引擎
FME Server中有一个队列和一些引擎。一个特别大的工作任务不能阻止队列;最多只能捆绑一个引擎。用户可以将工作任务发送到特定的引擎,但只能使用配置文件,并且可以为每个单独的作业设置优先级。
但是,大型机构单位可能会有多个用户提交多个大型工作任务。在这种情况下,这些工作任务可能会占用所有的引擎,导致小型任务的(也许更重要的)工作停滞不前。
简单的说就是如果一个单位拥有多个需求不平等的部门,那么某些用户需要少量时间共享一小部分服务器,大型工作任务占用所有引擎导致小型任务停滞不前的这种方式并不适用。所以在FME Server中,可添加创建多个队列的能力,并将它们映射到多个引擎。这种技术也称服务器容量管理。
添加队列和分配资源
如下图所示。一共有八个引擎可用
下图中,显示的是一个默认的队列,可以通过Create Queue来创建一个新的队列(A)。
上图中有一个优先级参数,可以在队列级别设置作业优先级。工作级别优先级已弃用(尽管目前它仍作为高级参数存在),其中数字越小表示优先级越高。
PS:将引擎分配给队列,而不是引擎的队列。在新建的列队中,将引擎7分配给队列,优先级为3。引擎7也分配给默认队列,但其优先级为5。因此,如果在两个队列中都有等待引擎的工作任务,并且引擎7没有被其他任务占用,新建列队的工作就会得到优先考虑。
也可以将引擎7从默认队列中完全删除,只保存提交给新建队列的工作任务的引擎。这样做会使优先级设置变得多余。只有将相同的引擎分配给多个队列才具有优先权。
库
您还会发现每个存储库都可以分配给一个队列。像引擎一样,我将存储库分配给队列,而不是存储库的队列。与引擎不同,每个存储库最多分配一个队列。如果我将库添加到第二个队列中,它必须从第一个队列中删除:
默认情况下,FME将所有工作分配到其各自工作区存储库的队列中。所以可以建立一个库并将库分配给新建的队列,或者,将新建队列存储库分配给其他存储库等,或者不分配给任何存储库,在这种情况下,运行任务的用户将指定要提交给它的队列。
指定一个队列
以上内容显示了系统管理员如何设置队列。但是,也有用户将工作任务提交到特定队列的机制。
首先,如果一个存储库被分配给一个队列,那么不需要指定任何内容。他们只是提交工作进行处理。
如果用户想在运行时选择一个队列,那么他们可以在Web用户界面中执行此操作:
队列也通过REST API分配。命令/转换/作业路线给出了创建标签(队列)并将引擎分配给该标签的方法。
问题
Q:如果我提交一份工作而不指定队列呢?
A:如果任务存储库已分配给队列,则任务将进入该队列。如果存储库未分配给队列,则任务将进入系统默认队列。
Q:计划任务如何处理?
A:可以将计划工作任务分配给特定队列。因此,需要花费四个小时才能运行的日常更新工作可以保留在其他作业的单独队列中。
Q:分布式体系结构是否有任何作用?
A:借助分布式架构,引擎可以位于完全不同的机器上。因此,每天四小时更新可以发送到其分配的引擎位于不同服务器上的队列。
示例设置
假设我有八个引擎,知识和QA团队设置队列。可能会这样设置它:
队列 | 库 | 白天 | 夜间 | ||
引擎 | 优先 | 引擎 | 优先 | ||
世界巡回演示 | 世界巡回演示 | 1,2,3,4 | 1 | 1,2,3,4 | 1 |
服务器游乐场演示 | 2,3,4 | 2 | 2,3,4 | 2 | |
支持团队短期 | 支持 | 3,4 | 3 | 3,4 | 3 |
支持团队长期 | 支持 | 7,8 | 3 | 7,8 | 5 |
知识团队 | 知识 | 3,4 | 3 | 3,4 | 3 |
短期测试 | QA短期测试 | 5,6 | 4 | 5,6 | 3 |
长期测试 | QA长期测试 | 7,8 | 4 | 3,4,5,6,7,8 | 4 |
- 世界巡回演示总是有引擎1给自己。共享引擎2,3,4,但优先考虑他们。其他服务器演示的优先级略低于相同的引擎。
- 支持和知识团队共享两个短期工作引擎(3,4),同等优先。质量保证团队的短期工作有两台引擎(5,6)。
- 对于长期工作,支持团队与QA团队共享引擎7和8。支持团队在当天优先考虑,QA团队在晚上获得优先考虑。
- QA团队在夜间可以使用3-8引擎进行长期工作。但是如果其他工作要求这些引擎,这些工作就会得到优先考虑。
PS:如果QA团队在夜间在引擎3上开始工作,那么它会阻止该引擎上的其他工作。紧随其后创建的知识团队的工作任务将无法中断正在运行的工作。但是,一旦QA团队工作完成并且引擎变为空闲,没有创建出知识团队工作任务以外的任务时,知识团队将会获得优先权。
队列和存储库不是固定的。知识团队的成员仍可以将工作提交给支持队列,而不是他们自己的。
按需变更
这个新的排队系统非常灵活,因为它可以通过Web界面快速轻松地进行管理。
但更好的是,您还可以使用API调用管理队列:
这意味着您可以设置一个预定的进程来在一天中的不同时间重新映射队列。例如,在下午5点,您会开放更多的引擎直至长期工作,并且在第二天早上8点,为短期工作队列恢复更多引擎。
结论
对FME Server进行微调,以便在最佳时间为整个工作场所提供最好的服务。多个队列允许更大的灵活性,并且可以将大型工作任务与小型工作任务分开。