SQL Server 2005 Service Broker和Mirroring

发表于:2008-05-04来源:作者:点击数: 标签:sqlSQLMirroringBrokerService
需要协调的事情交给我 SQL Server 2005中增加了一个全新的组成——Service Broker,它主要提供了一个以异步方式操作与协调各方的平台,其本身提供了扩展性、 安全 性、事务性的很多支持。以往为了完成类似的平台支持,很多企业需要购买价格不菲的第三方 中间

   需要协调的事情交给我

    SQL Server 2005中增加了一个全新的组成——Service Broker,它主要提供了一个以异步方式操作与协调各方的平台,其本身提供了扩展性、安全性、事务性的很多支持。以往为了完成类似的平台支持,很多企业需要购买价格不菲的第三方中间件产品,Service Broker提供了跨越进程、应用、服务器甚至是网络的分布式处理能力。通过Service Broker的异步处理能力可以减少交互过程的用户等待时间,提高整体业务应用的吞吐率,尽管它的处理方式是异步,但是所有的操作是基于一个可信的消息通道完成的,对于每个功能单元内部的处理异常也有很多强力措施保证。 

    Service Broker的主要技术优势如下:

 (1)进一步增强SQL Server 2005集成应用的性能
 (2)简化SQL Server管理
 (3)简化协作性消息的处理
 (4)提供更为松散的应用架构
 (5)通过消息锁机制保证多个应用实例可以处理同一队列的消息
 (6)自动的根据消息处理数量激活处理实例

    Service Broker的技术架构

    Service Broker由三类组件组成,如下说明。

 会话组件(Conversation components):主要完成运行过程中的消息交换。

 服务定义组件(Service definition objects):主要在设计态定义消息类型、会话交换流程和应用相关信息的数据库存储。

 路由和安全控制类组件(Routing and security components):主要用来定义和支持消息交换的外部运行环境。 

    从外层看,笔者认为Service Broker是微软花了大力气在.Net和SQL Server平台上开发的具有Message Queuing支持的COM+服务,他把很多以往通过“Request-Response”方式很难完成或者完成成本很高的处理承担下来。
消息的交换

图1:两个Service间的会话过程

    对于开发人员而言,整个会话过程可以视为在一个非常可靠的消息通道内交换消息,而这个可信通道的建立则是按照非常类似TCP协议的方式,其中也增加了一个Timer进行生命期的管理。商业应用中往往需要对发送的消息提供回执,因此日后读者如果需要开发这种具有业务连贯性动作的应用,则可以完全依赖Service Broker内置建立的这种可信通道完成。出于效率、安全性等多方面考虑,Service在处理本地调用与跨Instance调用的时候,采用的是不同的方式:本地调用时,需求服务与响应服务共同使用同一个队列,不同Instance时需求服务需要通过双方各自的队列与响应服务进行交互。

图2:不同的Service Broker响应方式

“东西交给了我,您放心”

    在SQL Server 2000中管理员已经能够通过多种方式完成保证数据可用性:用复制来创建一个数据库克隆、通过Archive Log重建数据库、备份和恢复。 

    微软在SQL Server 2005又引入了一个新的机制,它可以实现自动的错误恢复,同时允许将一个SQL Server中的数据库内容镜像到另一个SQL Server,同时它还提供了故障过程中通过镜像快速进行错误恢复的支持。数据库镜像是将数据库处理从一个SQL Server数据库移动到不同SQL Server环境中的另一个SQL Server数据库中。镜像的拷贝是一个备用的拷贝,不能直接访问,只用在SQL Server错误的情况用于恢复。 

    Mirroring工作机制

    要进行数据库镜像所需的最小需求包括了两个不同的SQL Server运行环境——Principal Server 和 Mirror Server。Principal数据库就是实际使用的数据库,Mirror数据库是数据库的备用拷贝。当事务写入你的Principal服务器的时候,它们也同样被传送到并写入Mirror数据库中。 

    除了Principal Server和Mirror Server之外,还可以引入另一个可选的组件——Partners。Partners数据库是第三个SQL Server 2005运行实例,它在判断什么时候进行错误恢复,用于Principal Server和Mirror Server之间内部交流。有了Partners就可以实现的自动的错误处理。 

    Mirroring主要可以采用如下三种方式工作。

 高可用:这个操作模式选项允许在两台服务器上同步事务写入,并支持自动错误恢复。要使用这个选项,你必须还要使用一个Partners服务器。

 高数据保护:这个选项可以在两台服务器上同步事务写入,但是错误恢复是手工的。因为自动的错误恢复不是这个选项的一部分,所以也不会用到Partners服务器。

 高性能:这个选项不关心两台服务器上的写入是否是同步的,因此在性能上有所提高。当使用这个选项的时候,你只能假设镜像服务器上的所有事情都是成功完成。这个选项只允许手工的错误恢复,因此不会用到Partners服务器。 

    但是,笔者一般建议对于企业的敏感数据可以考虑采用高数据保护方式,尤其是那些对于企业业务控制比较关键的参数数据,虽然修改频率和数据量都不大,但是一旦丢失对业务的影响很大;对于生产OLTP业务数据还是考虑采用高可用的方式。当然具体如何使用最后还要基于业务代价计算后决定。

图3:预定的管理
 
  2. 每当报刊排版完成的时候(可以理解为一个事件发生),杂志社就会首先把这件事情作为业务记录登记下来,并安排人员准备付梓印刷。
 
图4:事件的生成
   3. 报刊印刷完毕后,出版社会去查找每个刊物是否被订阅了,如过有对碰的信息那就把它记录下来。
图5:通知的生成
4. 最后,出版社按照用户事先选择的方式,把他们订好的报刊投递给他们。
 
图6:通知的发布
 

原文转自:http://www.ltesting.net