SQL Server 中的服务代理是啥?
Posted
技术标签:
【中文标题】SQL Server 中的服务代理是啥?【英文标题】:What is Service Broker in SQL Server?SQL Server 中的服务代理是什么? 【发布时间】:2010-05-18 12:36:17 【问题描述】:什么是 SQL Server 中的 Service Broker,在简单数据库而不是分布式数据库中启用它是否有意义?
【问题讨论】:
blog.sqlauthority.com/2008/07/18/… 【参考方案1】:SQL Service Broker 是一种扩展机制,允许您将事件排队以进行异步处理。
启用代理没有内在危害。如果不使用,它将只是闲置。
它适用于简单和分布式数据库。一个简单的用例是日志队列。我们在客户端使用它来对要异步处理的 XML 消息进行排队。因此,我们将 XML 推送到 InitatorQueue,然后让服务从队列中拉出它们,通过 XPath 提取一些必要的属性,并将它们插入到数据库中的持久性表中。
Here is a good reference from Microsoft.
【讨论】:
【参考方案2】:Service Broker 是内置于 SQL Server 数据库引擎中的消息传递系统。 您可以阅读以下文章以了解其工作原理。
Centralized Asynchronous Auditing with Service BrokerCentralized Asynchronous Auditing across Instances and Servers with Service BrokerHow to troubleshoot Service Broker problems
【讨论】:
【参考方案3】:Service Broker 是一个异步消息传递系统。它允许您将消息发送到队列。然后一些工作进程接收消息。无法保证订单或何时收到消息。但 SQL Server 确实保证消息处理以事务方式进行。
异步消息传递是目前最繁重的架构之一。您应该仔细考虑增加的价值是否值得复杂性。
【讨论】:
实际上 Service Broekr 保证消息按发送顺序接收。 @Mladen Prajdic:对于同一对话中的消息来说确实如此,但并非普遍如此。例如,假设您向 ClientCreator 发送一条 CreateClient 消息,然后向 AddressCreator 发送一条 CreateAddress 消息。第二个可能在第一个完成之前处理。 由于 Service Broker 与 Sql Server 引擎集成,它不需要使用分布式事务,这实际上使其成为最轻量级(因此性能良好)的架构之一。 @Pawel Marciniak:异步编程是一个沉重的架构。同意在异步编程中,Service Broker 是一种相对轻量级的方法以上是关于SQL Server 中的服务代理是啥?的主要内容,如果未能解决你的问题,请参考以下文章
Snowflake 中的 SQL Server 等效表类型是啥
SQL 中的 SQL Server Profiler NtUsername 变量是啥?
SQL Server 2008 中的 SQL Server 2008 R2 中的 dm_os_volume_stats 等效项是啥?