为 BizTalk 主机提供高可用性

BizTalk Server为解决高可用性问题提供了极大的灵活性,因为可以从战略上将逻辑主机专用于运行特定功能领域,例如接收消息、发送消息或处理业务流程。

BizTalk 主机是 BizTalk Server 组中的逻辑容器,该容器可以容纳不同的 BizTalk Server 项,例如适配器处理程序、接收位置(包括管道)和业务流程等。 通常,您可将具有类似扩展要求的项分到特定的主机中。 例如,可以将接收位置分到“接收”主机中,将发送端口分到“发送”主机中,将业务流程分到“处理”主机。

(逻辑容器) 创建主机后,可以将主机的实例配置为在BizTalk Server组中的物理BizTalk Server计算机上运行。 主机实例在指定的BizTalk Server计算机上以 Windows 服务的形式运行 () 。 尽管无法在给定BizTalk Server计算机上运行同一主机的多个实例,但可以通过在BizTalk Server组中的单独BizTalk Server计算机上配置主机实例来运行特定主机的多个实例。 还可以在单个BizTalk Server计算机上运行不同主机的多个实例。

BizTalk 主机中包含的项可以执行以下功能:

  • 接收 这些项在接收位置中选取消息后,对消息执行初始处理。 当主机包含接收项(例如接收位置或管道)时,该主机将充当安全边界,而且消息的解码和解密都将发生在主机内的管道中。

  • 发送 这些项在将消息发送到发送端口之前执行消息的最终处理。 当主机包含发送项(例如发送端口或管道)时,该主机将充当安全边界,而且消息的签名和加密都将发生在主机内的管道中。

  • 处理 这些项根据业务流程中的指令处理消息。

    虽然单一 BizTalk 主机可以包含接收、发送和处理消息的项目,但为了创建安全边界以及出于管理简易性和可伸缩性原因,最佳做法是为每个功能创建不同的主机。 特别是,建议对于处理操作和接收/发送操作分别使用不同的主机,并且分隔可信任项和不可信任项。

    例如,如果您接收一条消息,运行业务流程,然后发送十条消息,则需要将接收功能和发送功能分隔到两个单独的主机中,因为发送项的流量将是接收项的十倍。 如果您接收一条消息,运行业务流程,然后发送一条消息,则可以将这些项视为一个工作单位,并将它们分到单个主机中。 或者,可以将它们分到三个不同的主机中,以提高性能和灵活性。

    BizTalk 主机是两种类型之一: 进程内 主机或 独立主机。 进程内主机在BizTalk Server运行时进程中运行,而独立主机不在BizTalk Server运行时进程中运行。 下表分别列出了这两种主机类型可能包含的项:

主机类型 逻辑容器包含
In-Process - 业务流程
- 适配器发送处理程序
- 适配器接收处理程序,而不是 HTTP 和 SOAP
隔离 HTTP 和 SOAP 接收处理程序

有关主机和主机实例的详细信息,请参阅 管理 BizTalk 主机和主机实例

若要为 BizTalk 主机提供高可用性,环境中每个主机必须有两个或更多个主机实例, (两台或更多台BizTalk Server) 计算机。 通过为每个主机创建多个主机实例,可以确保在一个主机实例不可用时,运行该主机的实例的其他计算机可恢复有问题或失败的主机实例的功能,并确保整个系统可以继续工作,最大程度地减少中断时间。

消息持久性

BizTalk Server在很大程度上依赖于SQL Server以实现高可用性,因为BizTalk Server涉及的每个主机都会将消息保存到 BizTalk MessageBox 数据库。 例如,当 BizTalk Server 收到传入消息时,接收主机会先将其保存到 MessageBox 数据库,然后其他主机才能检索消息进行业务流程处理和发送。

如果 BizTalk Server 解决方案包含业务流程,则 BizTalk Server 会将消息路由到执行业务程序的主机(处理主机),并在业务流程完成后将消息保存到 MessageBox 数据库中。 随后,发送主机将从 MessageBox 数据库中检索消息,再通过相应的发送适配器将该消息发送到外部应用程序。

分隔主机功能和数据库功能

由于BizTalk Server将数据与处理数据的主机分开,因此创建高可用性环境的一个步骤是将主机函数 (发送、接收和处理BizTalk Server中发生的) 与SQL Server中发生的数据库函数分开。 通过分隔这些功能,您可以独立地扩展处理、发送和接收主机功能以及存储数据的数据库。 运行时层和数据库层是相关的,也就是说,如果增加BizTalk Server计算机的数量,则可能需要增加运行SQL Server的计算机数来处理额外的负载。 但是,在数据库层和 BizTalk 层之间并没有直接关系。 它们是两个独立的层,您可以单独地扩展它们。

确保主机高度可用所要执行的操作不同于确保数据库高度可用所要执行的操作。 以下部分说明了确保接收主机、发送主机和处理主机高度可用所要执行的操作。 有关如何使数据库层高度可用的详细信息,请参阅为BizTalk Server数据库提供高可用性

对于 BizTalk Server 进程多于 SQL Server 进程的部署,您可以配置多台 BizTalk Server 计算机来使用运行 SQL Server 的同一计算机。 此配置可使用每台计算机上可用的资源。 例如,如果 CPU 或内存在 BizTalk Server 计算机上的使用率很高(大于 75%),而在运行 SQL Server 的计算机上使用率很低(小于 25%),则您可以向其他 BizTalk Server 计算机分配工作负荷,同时提高运行 SQL Server 的计算机的资源使用率。

本节内容

另请参阅

为BizTalk Server数据库提供高可用性
企业单一登录的高可用性