Service Broker 的典型使用

适用于: SQL Server Azure SQL 托管实例

对于需要异步执行处理的应用程序或需要跨多个计算机分发处理的应用程序,Service Broker 会非常有用。 Service Broker 的典型使用包括:

  • 异步触发器

  • 可靠的查询处理

  • 可靠的数据收集

  • 用于客户端应用程序的分布式服务器端处理

  • 用于客户端应用程序的数据合并

  • 大规模批处理

异步触发器

使用触发器(如联机事务处理 (OLTP) 系统)的许多应用程序均可受益于 Service Broker。 触发器将向 Service Broker 服务请求工作的消息排队。 触发器实际上并不执行所请求的工作。 触发器而是创建一条消息,该消息中包含有关要完成的工作的信息,然后将此消息发送给执行该工作的服务。 触发器随后返回。

原始事务提交时,Service Broker 将消息传递给目标服务。 实现此服务的程序在单独的事务中执行此项工作。 通过在单独的事务中执行此项工作,原始事务可以立即提交。 应用程序可避免由执行此项工作时,保持原始事务为打开状态而引起的系统速度下降。

可靠的查询处理

某些应用程序在出现计算机故障、停电或类似问题的情况下也必须能够可靠地处理查询。 需要可靠的查询处理的应用程序可以通过向 Service Broker 服务发送消息来提交查询。 实现此服务的应用程序读取该消息,运行查询,然后返回结果。 上述这三个操作发生在同一个事务中。 如果在事务提交前发生故障,则整个事务都将回滚,并且消息将返回到队列中。 计算机恢复时,应用程序重新启动并再次对消息进行处理。

可靠的数据收集

从一组数量众多的源中收集数据的应用程序可以利用 Service Broker 来可靠地收集数据。 例如,具有多个站点的零售应用程序可以使用 Service Broker 向中心数据存储区发送事务信息。 因为 Service Broker 提供可靠的异步消息传递,所以即使各个站点临时断开与中心数据存储区的连接,仍可以继续处理事务。 Service Broker 安全机制可帮助确保消息不会被误传,还可帮助保护传输中的数据。

用于客户端应用程序的分布式服务器端处理

访问多个 SQL Server 数据库的大型应用程序可从 Service Broker 获益。 例如,订购图书的 Web 应用程序可以使用服务器端的 Service Broker 在包含订购、客户、库存以及信用卡数据的不同数据库间交换信息。 由于 Service Broker 提供消息队列和可靠的消息传递,因此,即使其中某个数据库不可用或负荷过重时,应用程序仍可继续接受订单。 在这种情况下,Service Broker 用作分布式 OLTP 系统的框架。

用于客户端应用程序的数据合并

必须同时使用或显示多个数据库中的信息的应用程序可以利用 Service Broker。 例如,将多个位置的数据合并到一个屏幕的客户服务应用程序可以使用 Service Broker 来并行(而不是依次)运行这些请求,这样做可以大大缩短应用程序的响应时间。 客户服务应用程序并行向不同的服务发送请求,在这些服务响应请求时,客户服务应用程序收集响应并显示结果。

大规模批处理

必须执行大规模批处理的应用程序可以利用 Service Broker 提供的排队和并行处理功能来迅速高效地处理大量的工作。 应用程序将待处理的数据存储在 Service Broker 队列中。 程序定期从队列中读取数据并进行处理。 应用程序可以利用 Service Broker 提供的可靠的消息传递,在发出请求的计算机以外的其他计算机上执行批处理。

另请参阅