体系结构概述
应用到: Service Bus for Windows Server 1.0
本部分概述了 Service Bus for Windows Server 的体系结构,包括平台堆栈、执行进程系统、场解决方案、扩展以及高可用性。
Service Bus for Windows Server 概述
Service Bus for Windows Server 是一组用于 Windows 的可安装组件,提供 Service Bus 消息功能(类似于可在 Service Bus 中找到的功能)。使用 Service Bus for Windows Server 可以在自托管环境和开发人员计算机中构建、测试和运行松耦合的消息驱动应用程序。Service Bus 队列提供可靠的消息存储和检索以及协议和 API 选择。Service Bus 主题在与队列相同的基础之上构建,可以提供丰富的发布/订阅功能,从而允许多个同时执行操作的订户独立检索已发布消息流的筛选或未筛选视图。
Service Bus for Windows Server 平台堆栈
Service Bus for Windows Server 在 Microsoft 4.0 PU3、 R2、SQL Server 2008 R2、Azure SQL Database 和 Windows PowerShell 3.0 之上构建。所有这些平台都必须运行在 64 位操作系统上。系统 (SQL) 的存储层可以位于专用远程服务器上或某个计算节点上,也可以位于 Microsoft Azure SQL Database 中。此堆栈所使用的计算节点可以在本地托管,也可以在 Microsoft Azure IAAS 上托管。
下图显示了 Service Bus for Windows Server 的平台堆栈。
进程和执行模型
下图显示了用于说明 Service Bus for Windows Server 服务器运行方式的逻辑模型。每个 Service Bus for Windows Server 服务器有三个关键进程:Service Bus 网关、Service Bus 消息代理和 。服务器中的所有进程都作为 Windows NT 服务托管。
可以将一组服务器一起连接到一个具有高可用性的“场”中。
场内通信模式
由于 Service Bus for Windows Server 服务器场具有“高可用性”,因此本地计算机和远程计算机之间存在进程间通信。
Service Bus 网关进程是一个无状态服务,可以与场内的本地计算机或远程计算机上的消息代理进行通信。
每台计算机上的 Service Bus 消息代理进程均向 Windows Fabric 服务(在同一台计算机上)注册。此注册指示是否可以托管 Windows Fabric 服务。
每台计算机上的 Windows Fabric 服务都将互相通信,以建立“具有高可用性的环”。
Service Bus 网关
来自客户端的所有传入请求均首先由 Service Bus 网关接收和处理。协议头处理请求,并执行必要的身份验证、授权和地址解析。然后,请求将转发给相应的消息代理。在某些情况下,客户端将针对后续请求直接与消息代理通信。下图显示了涉及 Service Bus 网关的通信流:
客户端可以将 Net.TCP 或 REST over HTTP 用作与 Service Bus for Windows Server 服务器进行通信的协议。
Net.TCP 交互
在网关接收 Net.TCP 客户端请求时,它将标识消息实体(如队列、主题或订阅)的主机(消息容器)。然后,服务将请求转发到运行消息容器的 Service Bus 相应消息代理(本地或远程)。
只有 Net.TCP 请求才支持消息重定向模式。在此模式下,进行身份验证和授权后,客户端可以要求网关用 Service Bus 消息代理的地址进行响应。然后,客户端可以连接直接到 Service Bus 消息代理以发出后续请求。此功能可以减少通过网关为通过网络发送的每条消息路由所有请求的开销。
REST 交互
当客户端请求 REST over HTTP 作为协议时,网关 NT 服务将识别消息实体(如队列、主题或订阅)所对应的主机(消息容器)。然后,服务将请求转发到运行消息容器的 Service Bus 相应消息代理(本地或远程)。REST 交互模式不支持消息重定向功能。
Service Bus 消息代理
消息代理是托管协议头和一个或多个消息容器的 NT 服务。该服务将自身注册到 Windows Fabric,并充当消息容器服务的主机。
下图显示了 Service Bus 消息代理 NT 服务的逻辑表示形式。
NT 服务的生命周期是故障转移检测和高可用性的基础。
消息容器
你可以将消息容器视为持久存储(SQL 数据库)所支持的运行时(计算)逻辑的逻辑集合。在进行故障转移或负载平衡时,消息容器是可移动的模块化服务。每个消息容器由存储(SQL 数据库)提供支持,并托管一组由简单轮循式容量管理算法确定的队列、主题和订阅。放在容器中的实体(如队列、主题和订阅)不能移动,与容器及其关联的数据库一起保留。与消息容器有关的所有状态将均保留在数据库中。
Windows Fabric
此进程包含实现高可用性、形成场和群集以及实现场中计算机之间的负载平衡所需的核心逻辑。每台计算机上的消息代理服务将向各自计算机上的 Windows Fabric 进程注册。Windows Fabric 会确定消息容器服务的已注册实例数,并基于简单负载平衡算法将这些实例放置在场中的各种计算机上。
高可用性
Service Bus for Windows Server 支持高可用性。高可用性有两个方面:
计算
存储
计算层
Service Bus for Windows Server 是具有高可用性的服务器。该服务器依赖于 Windows Fabric 来实现高可用性。为实现高可用性,Service Bus for Windows Server 需要三台计算机。包含三台以下的计算机的所有拓扑均无法支持高可用性。
下图显示了由三台计算机形成的场(其中有三个消息容器)的稳态条件。
如果消息代理 NT 服务崩溃或重新启动,或者节点完全重新启动/关闭,则在崩溃前放置在该消息代理中的关联消息容器将自动移到场中其他计算机上。消息容器将继续为请求提供服务,只是在故障转移时会发生短暂中断。
如果服务器具有多个容器,则负载平衡是高可用性的另一个方面。当新计算机添加到场时,将通过对分配给特定消息代理 NT 服务的一组容器进行重新平衡来优化计算能力。服务器管理员创建新消息容器或删除现有消息容器时,也会触发负载平衡算法。
Service Bus for Windows Server 会自动将新计算机添加到场。它还会自动将场重新配置为支持高可用性。为实现此自动配置,服务器会自动启用远程打印机和文件共享。
存储层
Service Bus for Windows Server 在存储层不提供对高可用性的内在支持。你可以使用自己的解决方案(如 SQL 镜像)。