Microsoft Office Project Server 队列系统.docx
- 文档编号:28921376
- 上传时间:2023-07-20
- 格式:DOCX
- 页数:34
- 大小:496.09KB
Microsoft Office Project Server 队列系统.docx
《Microsoft Office Project Server 队列系统.docx》由会员分享,可在线阅读,更多相关《Microsoft Office Project Server 队列系统.docx(34页珍藏版)》请在冰豆网上搜索。
MicrosoftOfficeProjectServer队列系统
MicrosoftOfficeProjectServer2007队列系统
本文内容:
∙概述
∙队列过程
∙队列体系结构
∙项目队列和时间表队列
∙队列部署
∙队列分组
∙队列状态
∙队列管理
∙管理队列
本文介绍MicrosoftOfficeProjectServer2007队列系统,它在此版本的ProjectServer中是一项重要的新功能。
本文概述以下方面的内容:
队列系统、队列过程和体系结构、队列作业的分组方法、队列作业可能处于的状态,以及如何通过MicrosoftOfficeProjectWebAccess用户界面管理队列。
概述
队列是指排队等待的行列;当服务请求数超过最佳服务能力时,需要用到队列。
在企业项目管理系统中,出现这种情况的场合有几种,例如:
∙在周五快下班时,某小公司几乎所有500名员工均提交其时间表。
∙在召开团队状态会议前的几小时内,几乎所有项目经理均发布其项目。
OfficeProjectServer2007队列系统的用途是,以从容不迫和可靠的方式处理这些需求上的突然变化。
OfficeProjectServer2007队列系统获取所有用户输入、在MicrosoftSQLServer中记录请求条目,然后在先来先服务的基础上以异步方式处理数据。
建立队列可确保OfficeProjectServer2007EPM解决方案不会在出现需求高峰时停止工作。
OfficeProjectServer2007系统中几乎所有重要的操作均要经由OfficeProjectServer2007队列系统进行。
这些操作包括:
∙项目保存
∙项目发布
∙时间表保存
∙时间表提交
∙项目备份/恢复
∙报表数据服务操作
∙多维数据集生成服务操作
∙服务器端计划(和节点一致性处理)
ProjectServer队列系统具有以下优点:
∙可靠性
1.数据完整性:
利用明确定义的协议来保存队列中的任何作业。
如果某作业仅保存了一半,则不会处理它。
此外,所有作业均保存到SQLServer而不是文件系统中,并利用SQLServer的事务。
2.按序传递:
如果ProjectProfessional的用户单击“保存”,再单击“发布”,则Project队列系统会确保先处理“保存”作业,再处理“发布”作业。
3.容错:
可以重试队列中的失败作业。
此外,当队列NT服务的多个实例正在运行时,如果它们中的某个停止响应,则另一个会自动承载额外的负载(此过程称为透明故障转移)。
∙可伸缩性
4.多线程处理:
OfficeProjectServer2007队列系统可以同时处理多项作业。
例如,可以同时处理项目1保存、项目2发布和多维数据集生成作业。
5.可以直接添加更多的中间层服务器以更好地处理负载。
每台中间层服务器均将具有Project队列服务,而且负载将自动平衡。
6.队列中的作业数量仅受限于SQLServer的伸缩限制。
∙可管理性
队列过程
下图演示队列过程:
1.用户从客户端应用程序发起服务器请求(例如从ProjectProfessional发布项目)。
用户在请求中传递作业标识号(即用来跟踪请求的唯一标识符)。
2.ProjectWeb服务提取请求并将它放入队列中。
3.作为确认,将向用户颁发作业标识号。
4.用户通过颁发的作业标识号进行查询,以检查请求的状态。
5.OfficeProjectServer2007队列系统将请求的状态返回给用户。
队列体系结构
ProjectServer队列系统的逻辑体系结构由以下四个模块组成。
∙作业存储
∙作业轮询
∙作业处理
∙作业状态检查和管理
在请求由ProjectServer队列服务组成时(例如添加或处理作业或者检索状态),这些模块作为一个整体工作,以执行必需的任务。
本节详细介绍此过程。
队列模块
队列NT服务作为设置的一部分,安装在每台ProjectServer应用程序服务器计算机上。
它为场中定义的每个共享服务提供程序(SSP)启动一个“队列工作进程”。
队列工作进程为与其SSP关联的所有ProjectWebAccess(PWA)实例提供服务,并在“SSP管理员”标识下运行。
在浏览本节的其余内容时,请记住此部署模型。
有关详细信息,请参阅本文后面的队列部署。
ProjectServer队列系统由以下四个模块组成:
1.作业存储:
队列作业存储在草稿和已发布的ProjectServer数据库中。
这样一来,在正常的ProjectServer数据库备份和恢复例程中,也会备份和还原作业。
2.作业轮询:
作业轮询线程按固定间隔轮询作业存储,以检查有无新作业。
轮询间隔由管理员在ProjectWebAccess的“队列管理”页中配置。
a.队列工作进程为它所服务的每个PWA实例启动作业轮询线程。
作业轮询线程在“队列工作进程”进程内运行,并在“队列工作进程”标识下运行。
b.作业轮询线程具有两个主属性:
属性
说明
类型
给定的作业轮询线程可以是“项目作业轮询线程”(查找
与项目相关的作业)或“时间表作业轮询线程”(查找
与时间表相关的作业)。
ProjectWebAccess实例
每个作业轮询线程都查找起源于ProjectWebAccess的
特定实例的作业。
3.作业处理:
作业轮询线程会为它找到的每项作业生成一个作业处理线程。
管理员可以配置作业处理线程的最大数量。
请注意,作业处理线程驻留在“队列NT服务”进程内,并在“队列NT服务”标识下运行。
4.作业状态检查和管理:
这是最终用户看到的ProjectServer队列的模块。
a.ProjectWebAccess的“管理队列”页:
管理员使用此页查看队列中任何作业的状态。
他们还可以取消或重试失败的作业。
此功能是PWA的一部分,用户无需下载特殊的工具。
b.ProjectWebAccess的“队列设置”页:
管理员可以查看或更改队列的设置,例如轮询间隔和作业处理线程的最大数量。
此功能是PWA的一部分,用户无需下载特殊的工具。
c.ProjectWebAccess的“我的排队作业”页:
任何用户都可以使用此界面检查作业的状态。
此功能是PWA的一部分,用户无需下载特殊的工具。
d.队列状态PSI:
软件开发人员可以使用这些API获取任何队列作业的状态。
可以使用几个很有效的筛选器来缩窄搜索范围。
全体模块如何协同工作
当系统接到任务以执行请求(例如添加作业、处理作业和检索作业状态)时,ProjectServer队列系统的模块必须互相配合,并作为一个整体工作。
添加作业
可以通过许多种方式将作业添加到队列中。
例如,项目经理可以通过ProjectProfessional保存项目,团队成员可以提交时间表,或者第三方应用程序可以发布项目。
在执行这些操作中的每一项时,都会调用ProjectServer接口(PSI)中的元素,从而将适当的作业添加到队列中。
作业处理
作业处理出现在不同的阶段中,并涉及到不同模块之间的交互:
1.启动队列工作进程:
在队列NT服务启动时,它为场中定义的每个共享服务提供程序启动一个队列工作进程。
队列NT服务应一直运行,以便Project队列系统正常工作。
2.启动作业轮询线程:
在队列工作进程启动时,它会启动作业轮询线程,这些线程特定于ProjectWebAccess的实例。
3.获取新作业:
轮询线程在项目数据库中查找新作业。
4.创建作业处理线程:
如果有新作业,则会创建作业处理线程。
5.写入状态:
在作业处理线程完成时,会将作业的状态(成功或失败)写回到数据库中。
检索状态
可以通过不同的方式检查作业状态。
管理员可以使用ProjectWebAccess的“队列管理”页,团队成员可以使用“我的排队作业”页,或者软件开发人员可以使用队列PSI方法通过编程来获取状态。
有关PSI方法的详细信息,请参阅在线的MSDNLibrary中的 Project2007SDK文档(该链接可能指向英文页面)(
项目队列和时间表队列
OfficeProjectServer2007队列系统由两个独立的队列组成:
1.项目队列 主要用于与项目相关的消息,例如保存、发布、报告和多维数据集生成(虽然也可以将其他类型的消息发送到此队列)。
它的表格和存储过程都存储在OfficeProjectServer2007草稿数据库中。
2.时间表队列 主要用于与时间表相关的消息,例如时间表保存和时间表提交(虽然也可以将其他类型的消息发送到此队列)。
它的表格和存储过程都存储在OfficeProjectServer2007已发布的数据库中。
对于这两个队列,除了它们的作业驻留在不同的数据库中之外,它们是按照相同的方式设计的。
具有两种队列类型的优点包括:
∙性能:
通过将队列作业数据作为核心数据存储在同一个数据库中,可以在作业处理期间使队列免于执行高开销的跨数据库调用。
举个例子:
在发生时间表提交作业时,用户输入的数据(例如工时数)作为提交的队列作业的一部分封装,并被放入到SQLServer作业存储中。
此外,已存在有关时间表的信息(工期、姓名等),而且可在“已发布”的数据库中获得此信息。
要处理时间表提交作业,需要这两组数据。
如果这两组数据驻留在同一个数据库中,就能改善性能。
这就是为何将时间表队列作业存储在“已发布”的数据库中,以及将项目队列作业存储在“草稿”数据库中的原因(所有时间表核心数据均驻留在前一个数据库中,而大部分项目核心数据均驻留在后一个数据库中)。
∙微调:
可以单独为项目队列和时间表队列指定队列中的每个设置。
这为管理员提供了配置上的灵活性。
例如,如果某客户主要将OfficeProjectServer2007用于时间表,而且项目数量非常少,则可以将项目队列的轮询间隔设置为一分钟,以及可以将时间表队列的轮询间隔设置为10秒。
注意:
轮询间隔指定队列服务检查这两个队列之一有无新作业的频率。
可以在ProjectWebAccess的“队列设置”页中指定此设置。
如何使用项目队列和时间表队列
下图显示ProjectServer队列系统中的模块如何使用项目队列和时间表队列。
1.启动作业轮询线程:
对于队列所服务的每个ProjectWebAccess实例(队列可以服务于多个ProjectWebAccess实例),会启动一对轮询线程 —一个线程服务于项目队列,另一个线程服务于时间表队列。
这两个线程均驻留在“队列工作进程”进程空间内,并在“队列工作进程”标识(这是共享服务提供程序管理员标识)下运行。
2.作业存储:
如上所述,与项目相关的作业(项目保存、发布、报告、多维数据集生成等)存储在“草稿”数据库中。
与时间表相关的作业(时间表保存、时间表提交等)存储在“已发布”的数据库中。
3.作业处理:
此模块并无变化。
在“作业轮询线程”发现新作业时,会创建新的作业处理线程。
请注意,作业处理线程仍驻留在“队列工作进程”进程空间内,并在“队列工作进程”标识(这是共享服务提供程序管理员标识)下运行。
状态检查模块并无变化 —它们只是检查作业的状态,并不关心作业属于哪个队列。
队列管理始终在每个队列的基础上进行 —在ProjectWebAccess的“队列管理”页中,管理员必须选择要更改其设置的队列(项目或时间表)。
队列部署
要了解如何部署ProjectServer队列系统,必须在大体上了解如何部署OfficeProjectServer2007。
本节简要概述部署过程。
有关详细信息,请参阅将ProjectServer2007部署到服务器场环境。
即使阅读了前面几节,读者心中仍可能存在一系列基本问题:
1.如何首先创建队列NT服务?
2.队列NT服务如何开始 —例如,它如何查找ProjectServer草稿数据库和已发布的数据库的位置?
3.在设置多个ProjectWebAccess实例时(这会创建更多的Project数据库)会发生什么情况?
4.在设置多个SSP时(这会创建更多的队列NT服务)会发生什么情况?
本节解答这些问题。
在ProjectServer2007的安装期间如何部署队列NT服务
本节通过简要概述OfficeProjectServer2007的部署来说明如何在上下文中部署队列。
1.准备计算机:
确定部署的物理体系结构。
对于本例,我们确定两台计算机运行Web应用程序(为网页提供服务)、一台计算机执行中间层操作(项目保存、项目发布等)以及一台计算机安装数据库。
2.创建ProjectServer场:
当您尝试在任何计算机上安装ProjectServer时,系统会立即提示您创建一个场或加入现有的场。
您可以将ProjectServer场大致想像为在概念上对安装的表现 —场基础结构关注在正确的位置部署正确的对象。
创建场也会创建场SharePoint管理中心网站,您从中可以通过一个中央位置控制所有场操作。
场包含场配置数据库,它存储有关场中所有服务器的配置信息。
3.安装二进制文件和加入场:
下一步是在所有计算机上安装OfficeProjectServer2007,并加入ProjectServer场。
作为此过程的一部分,开始为在其上执行安装的计算机指定角色 —“前端Web”或“应用程序服务器”(中间层计算机)。
4.在场中设置共享服务提供程序(SSP):
在场中设置SSP时,ProjectServer共享服务所需的服务/组件安装在角色为“应用程序服务器”的每台计算机上。
此外,还会创建队列NT服务、事件NT服务和PSIWeb应用程序。
下图中的白色标注显示场的逻辑配置。
在本例中,在场中创建一个SSP。
要注意的事情:
a.场基础结构关注的是在每台中间层计算机上安装必需的组件。
如果有多台中间层服务器,则这些服务器会自动分担负载。
b.这些NT服务中的每一项均在共享服务提供程序的应用程序池标识下运行。
无法通过WindowsServer2003的“控制面板”中的“服务”选项手动管理它。
SharePoint定时服务会定期将NT服务凭据与场配置数据库上的场管理员帐户进行同步。
NT服务此时将不执行任何操作,因为它们没有要服务的ProjectWebAccess网站。
5.设置ProjectWebAccess:
这是通过导航到SSP管理网站并创建ProjectWebAccess的实例来完成的。
完成了这一步后,您就已创建了ProjectWebAccess的实例所需的服务/组件。
设置过程还会通知队列服务和事件服务,告诉它们现在有可服务的ProjectWebAccess网站。
下图中的白色标注显示场的逻辑配置。
在本例中,在场中创建一个新的ProjectWebAccess实例(例如PWA1),并将其链接到在上一步中创建的SSP。
要注意的事情:
a.在作为前端Web服务器的每台计算机上,创建WindowsSharePointServices网站集和关联的应用程序池。
b.创建四个ProjectServer数据库。
c.在配置数据库中创建条目,以登记PWA网站、SSP和数据库之间的关系。
6.设置另一个ProjectWebAccess实例:
在客户中很常见的方案是,在场中创建多个PWA实例以提供服务(例如为http:
//project20007/sales和http:
//project2007/marketing提供服务)。
发生这种情况时,会创建新的ProjectServer数据库集合,以及创建更多的PWAWindowsSharepointServices网站集和应用程序池。
下图中的白色标注显示场的逻辑配置。
在本例中,在场中创建一个新的PWA实例(例如PWA2),并将其链接到SSP。
请注意,会为PWA2实例创建一个新的ProjectServer数据库集合。
现在,队列服务和事件NT服务开始为所有连接到SSP的PWA网站提供服务。
在本例中,它们开始为PWA1和PWA2提供服务。
多台ProjectServer应用程序服务器上的队列NT服务
在场中的所有ProjectServer应用程序服务器(也称为“中间层服务器”)上创建队列NT服务。
例如,如果有两台ProjectServer应用程序服务器,则当您在ProjectServer场中设置新的SSP时,会立即在这两台计算机上创建新的队列NT服务。
务必要注意的是,队列NT服务为连接到其父SSP的PWA的所有实例提供服务。
队列服务属性
如前所述,当在ProjectServer场中设置SSP时,会创建队列NT服务。
当您查看队列NT服务中间层计算机的属性时,务必要了解如何确定它们中的一些属性。
∙队列服务名称:
服务的名称是ProjectQueueService。
与场中的SSP数量无关的是,ProjectServer应用程序服务器上始终只有一项队列NT服务。
∙队列启动类型:
启动类型为自动,因为队列NT服务应一直运行。
∙队列NT服务登录帐户:
定时服务帐户设置为队列NT服务登录帐户(这是您在创建场时已用过的帐户)。
队列NT服务如何引导和启动ProjectWebAccess的服务实例:
队列作为定时服务帐户运行,并且具有场配置数据库的访问权。
在启动时,队列NT服务查询配置数据库,并获取在场中设置的所有SSP的列表。
之后,对于每个SSP,它启动一个队列工作进程。
每个队列工作进程均查找与SSP关联的PWA实例的列表,然后为每个PWA实例启动一对轮询线程。
我们何时需要重新启动队列NT服务?
:
理想情况下根本不需要。
队列NT服务会不断侦听场配置中的变化;如果有变化,它会自动适应变化(无需重新启动NT服务)。
您将在Windows任务管理器中看到的进程:
如果打开Windows任务管理器,您将看到一系列同名(即“Microsoft.Office.Project.Server.Queuing.exe”)的进程。
其中一个进程运行在定时服务帐户下,它代表队列NT服务本身。
另外,还将有与场中的SSP一样多的Microsoft.Office.Project.Server.Queuing.exe进程,每个进程运行在对应的SSP管理员帐户下。
这些进程代表队列工作进程。
因此,“Microsoft.Office.Project.Server.Queuing.exe”进程的总数量等于SSP的数量加一(对应定时服务帐户的进程)。
不同拓扑中的队列部署
本节说明如何在不同的拓扑中部署队列(在这些拓扑中,可以有多个PWA实例和多个共享服务提供程序)。
带有多个PWA的队列启动/服务
在队列启动时,它首先与场配置数据库联系,并寻找它应服务的所有ProjectWebAccess实例。
队列使用共享服务提供程序GUID标识自己,此ID是队列NT服务的启动参数(有关详细信息,请参阅“队列部署”一节)。
1.队列NT服务与场配置数据库联系,并请求获得有关场中定义的所有SSP的信息。
2.对于每个SSP,队列NT服务会启动一个“队列工作进程”,它在对应的SSP管理员帐户下运行。
3.对于每个SSP,队列NT服务获取关联的PWA网站的列表。
4.对于每个PWA网站,队列NT服务获取PWA数据库的连接信息。
5.队列NT服务启动作业轮询线程对 —每个PWA实例一个。
6.轮询线程轮询有无新的作业。
单SSP多PWA的环境中的队列部署
下图描绘了包含单个SSP且为该SSP设置了两个ProjectWebAccess实例的环境中的队列体系结构。
1.队列NT服务与场配置数据库联系,并请求获得有关场中定义的所有SSP的信息。
2.对于每个SSP,队列NT服务会启动一个“队列工作进程”,它在对应的SSP管理员帐户下运行。
3.对于每个SSP,队列NT服务获取关联的PWA网站的列表。
4.对于每个PWA网站,队列NT服务获取PWA数据库的连接信息。
5.队列NT服务启动作业轮询线程对 —每个PWA实例一个。
6.轮询线程轮询有无新的作业。
7.在发现新的作业时,作业轮询线程会生成新的作业处理线程。
双SSP的环境中的队列部署
下图描绘了包含两个SSP且为每个SSP设置了一个ProjectWebAccess实例的环境中的队列体系结构。
1.队列NT服务与场配置数据库联系,并请求获得有关场中定义的所有SSP的信息。
2.对于每个SSP,队列NT服务会启动一个“队列工作进程”,它在对应的SSP管理员帐户下运行。
3.对于每个SSP,队列NT服务获取关联的PWA网站的列表。
4.对于每个PWA网站,队列NT服务获取PWA数据库的连接信息。
5.队列NT服务启动作业轮询线程对 —每个PWA实例一个。
6.轮询线程轮询有无新的作业。
7.在发现新的作业时,作业轮询线程会生成新的作业处理线程。
队列分组
排队的数据有三个不同的分组级别:
1.作业 作业是由ProjectServer执行的工作(例如项目保存、项目发布、时间表提交)的可跟踪数据包。
某些作业并非由用户特意启动(例如电子邮件通知、报告数据的同步)。
作业是使用作业标识号对队列进行跟踪的级别。
2.互联作业组 互联作业组是由ProjectServer的内部规则强制实施的作业分类。
除某些例外情况外,互联作业组中的作业基本上按顺序一起接受处理。
在下例中,通过ProjectProfessional编辑并保存项目1,然后签入它。
之后,项目1由另一个用户签出并发布。
发布项目1将触发报告,而且将向队列添加一项报告作业。
ProjectServer组合一个互联组,它由四项与项目1相关的作业组成。
之后,它将尝试依次处理这些作业,因为ProjectServer的内部规则指示作业之间存在依赖关系。
存在的依赖关系是指,在保存项目1之前,不能发生项目1发布作业和报告数据库更新作业。
此外,如果互联组中的任何作业失败,则将阻止互联组中排在该作业后面的其他作业执行。
例如,如果“保存项目1”作业(作业标识号
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Microsoft Office Project Server 队列系统 队列 系统