高可用性服务器

高可用性服务器的运行方式与单独服务器稍有不同。

所有服务器都使用同一数据库和一个公共文件共享。该文件共享用于日志和若干其他目录,特别是以下目录:logsvar/emailvar/pluginsvar/repository。每个服务器还独立维护一些配置信息(例如,端口和主机)。数据库用于存放配置信息和运行时数据等。

由于这些服务器共享数据库,因此所有服务器都在同一区间上运行。

某些配置属性(例如,数据库和 JMS 连接信息)保留在服务器上。数据库配置在产品安装期间处理;在安装后不需要进行其他处理。

导入文件(代码站)

所有服务器都将轮询组件版本更改。轮询时间间隔由用户配置的参数指定(缺省情况下为 15 分钟)。数据库将处理服务器同步:服务器在写入至存储库之前,会获取对数据库的锁定。在作业完成后,将重置轮询时间。

事件

事件由触发事件的服务器处理。

工作流程引擎

工作流程由活动组成。活动可以按顺序运行、以并行方式运行或者以这两种方式的某种组合运行。典型工作流程可能由若干顺序活动组成,例如:

对于基于 JMS 的通信,可以采用若干方式来配置代理程序:

所有服务器都会不断轮询等待处理的工作流程,因此任何服务器都可能启动该工作流程。获取此工作流程的服务器将运行以下任务:

  1. 创建活动 A 的运行时实例并获取数据库锁定。
  2. 将它打算发送的命令记录在数据库中。
  3. 基于 JMS 将该命令发送到代理程序。
  4. 释放数据库锁定。

在它完成工作后,代理程序会基于 JMS 发送响应消息。该消息将(由其中一个服务器)写入至数据库,然后将(由其中一个服务器)启动下一个活动。启动了活动 B 的服务器将运行与上述相同的步骤。

在此处概述的简单工作流程中,活动可能全部由同一服务器处理,也可能由不同服务器(或某种组合)处理。当然,如果此工作流程由三个并行活动组成,那么也是相同的情况。

应用程序工作流程由数据库中的单个记录进行维护(同时只有一个线程处理工作流程)。

故障处理

在应用程序处理期间,将在工作流程中标记命令失败情况。错误处理是应用程序创作者的责任。可以使用回滚命令/步骤处理组件回滚。此处使用的回滚表示重新安装较低的组件版本。

如果服务器在代理程序运行命令时崩溃,那么 JMS 网孔会将工作流程分配给另一服务器。

如果代理程序在运行命令时崩溃或者消失(请记住,失败的步骤不会导致代理程序本身失败),那么服务器会假定该命令仍在运行;没有自动超时。通常情况下,分配超时时间间隔既不可行也不实用。


反馈