基础内容: 服务总线缓冲区

在我 2009 年 10 月的专栏文章“服务总线中的路由器”(msdn.microsoft.com/magazine/ee335696) 中,我提出 Windows Azure AppFabric 服务总线未来可能的发展方向:成为最终的侦听器。我提出了路由器功能,并承诺下一步将写写队列。

自那之后,路由器和队列已被推迟到服务总线的第二个版本,暂时代之以由服务总线提供缓冲区。未来版本可能会增加日志记录、诊断和各种检测选项。我会在以后的文章中讲述这些方面。在本文中,我将对缓冲区加以说明,也会向您展示一些先进的 Windows Communication Foundation (WCF) 编程技术。

服务总线缓冲区

在服务总线中,服务命名空间的每一个 URI 实际上都是一个可寻址的消息系统交接点。客户端可以将消息发送到这个交接点,交接点可以将其转发到服务。不过,每个交接点也可以作为一个缓冲区(请参见图 1)。

图 1 服务总线中的缓冲区

即使没有服务正在监控缓冲区,该消息也会在缓冲区内存储配置的时间段。请注意,有多种服务可以监控缓冲区,但除非您明确查看并锁定消息,否则只有其中一种服务可以检索消息。

客户端会在缓冲区后面与服务分离,并且客户端和服务可不必在同一时间运行。由于客户端与缓冲区交互,并没有与实际的服务端点交互,因此所有的消息都是单向的,也没有现成的办法获取消息调用的结果或任何错误。

该服务总线缓冲区不应等同于 Microsoft 消息队列 (MSMQ) 等队列或 WCF 排队服务,它们之间有一系列关键性差异:

该服务总线缓冲区不持久,而且消息存储在内存中。也就是说,如果服务总线本身发生灾难性故障(虽然有点不太可能),消息会有丢失的风险。

该服务总线缓冲区不是事务性的,不可以作为事务处理的一部分来完成对消息的发送或检索。

缓冲区无法处理持久消息。服务必须在 10 分钟内从缓冲区检索消息,否则消息会被丢弃。尽管基于 WCF MSMQ 的消息也有生存时间,不过这个时间段要长得多,默认为一天。这极大地增加了真正脱节的操作和断开的应用程序的范围。

缓冲区的大小有限,所保留的消息不能超过 50 条。

所缓冲消息的大小也有上限,每个 64KB。虽然 MSMQ 也对消息规定了最大尺寸,它的上限却要大得多(每条消息 4MB)。

因此,缓冲区无法通过云系统提供真正的排队调用,不过,如果连接会在排队调用和“即发即弃”的异步调用之间的某处丢失调用,在某种程度上缓冲区可以恢复这些连接。

缓冲区在两种情况下会有用。一种是应用程序的客户端和服务之间进行交互的连接不稳固,而只要消息在短期离线期间得到缓冲,连接的丢弃和重新连接是可以容忍的。第二个(和更常见)的情况是客户端发出异步单向调用,并利用响应缓冲区(如后面的“响应服务”一节所述)来处理该调用的结果。这样的互动更多地是将网络连接视为有弹性的绳索,而不是没有存储容量的刚性网络连接线。

时间: 2024-12-23 19:54:07

基础内容: 服务总线缓冲区的相关文章

《微软云计算Windows Azure开发与部署权威指南》——6.5 AppFabric服务总线基础概念

6.5 AppFabric服务总线基础概念 在大型分布式应用程序中最常见的需求之一就是连通性,而应用程序的整合通常也是IT领域中花费最高.最麻烦的.目前大多数组织机构都采用企业服务总线(ESB)这一解决方案. 作为Windows Azure平台的一部分,服务总线让ESB模式在整个Internet领域中成为现实.服务总线提供了很多可以在典型的ESB解决方案中看到的体系结构特点,包括身份认证和访问控制.命名.服务注册.公共消息池等.对于AppFabric服务总线,这些组件必须设计为能够在云端操作,面

Internet 服务总线

  作者:Donald F. Ferguson.Dennis Pilarinos.John Shewchuk   摘要:Web应用程序是非常常见的应用程序模型,它们将变得越来越普遍.几乎所有大中型企业的应用程序都提供Web用户界面.在本文中,我们将使用术语"企业"表示大中型企业.软件供应商和集成商.桌面和客户端/服务器应用程序越来越多地使用浏览器作为UI引擎,并通过Web协议调用数据和服务. 软件.应用程序模型以及Web本身都在进行革命性变革.这场变革对计算机世界的影响与客户端/服务器

智能客户端-使用 NHibernate 和 Rhino 服务总线构建分布式应用程序

有很长一段时间,我的工作内容几乎都是 Web 应用程序.当我要构建一个智能客户端应用 程序时,起初我觉得非常困惑,不知该如何构建这样的应用程序.怎么处理数据访问?智能客 户端应用程序与服务器之间如何通信? 而且,我那时已经投入很多,拥有一些能够显著减少开发时间和成本的工具,而我真的希望 可以继续使用这些工具.我花了一段时间来深入考虑各种细节问题,在这期间,我一直在想如 何让 Web 应用程序更简单些呢,当然我需要先知道如何处理这样的应用程序. 智能客户端应用程序有利有弊.从有利的一面看,智能客户

智能客户端:用NHibernate和Rhino服务总线构建分布式应用程序 第2部分

在 2010 年 7 月刊的<MSDN 杂志>中,我开始介绍为借阅图书馆构建智能客户端应用程序 的过程. 我将该项目命名为 Alexandria,并决定使用 NHibernate 进行数据访问,使用 Rhino 服务总线实现与服务器之间的可靠通信. NHibernate (nhforge.org) 是一个对象关系映射 (O/RM) 框架,而 Rhino 服务总线 (github.com/rhino-esb/rhino-esb) 是构建在 Microsoft .NET Framework 上的开

基于服务的企业集成模式轻松入门,第4部分:企业服务总线

引言 Web服务旨在处理大型企业中遇到的一些应用程序异构性问题.不过,Web服务本身并不能提供解决异构性问题的完整解决方案.特别是,它们不是为了处理服务使用者和服务提供者应用程序使用的传输协议之间不匹配的情形.与此不匹配情况相关的问题是接口不匹配的问题.此类不匹配情况通常是由于合并和收购的结果造成的.一种可能的解决方案是根据新的 Web服务重写这些应用程序,以消除这些不匹配的情况.但往往是没有足够的开发人员资源或者没有足够的时间来执行如此大量的任务. 在这种情况下,企业服务总线 (ESB) 为解

Azure Services Bus(服务总线)中的工作流(workflow)

在Azure Services Platform上对于工作流服务的支持,一直是我很感兴趣的内容.当然也是疑问比较多的领域.鉴于这方面的资料太少,所以今天就从AzureServicesKit中的一个DEMO出发,来大概了解一下这方面相关内容. 注:今天的示例位于AzureServicesKit安装目录\Labs\Ex02-RoutingWithXPath\end文件夹. (编辑注:是AzureServicesKit\Labs\IntroWorkflowService\Ex02-RoutingWit

手机浏览器进化论:工具到入口再到内容服务

手机浏览器从诞生到现在已经走过了十余年的过程,如果只是以2008年划时代的iPhone3G诞生为标志,真正意义上手机浏览器也已有近十年历史.作为一种跨越时代的产品品类,手机浏览器如同跨越了中生代至今依旧保持了较强生命力的鳄鱼一样. 经历了PC到移动的风云变革,用户需求在随着时代的变迁也不断发演变,手机浏览器自身的命运和定位也在不断发生变化.总体而言,手机浏览器的演变历程大抵经历了纯工具.平台入口和内容服务的三部曲.手机浏览器的生命力和进化过程始终都是和用户的需求紧密结合在一起的. 纯工具阶段:U

公测与奥运同行,云服务总线CSB:“连”无边界

本文主要谈及了服务互通开放典型问题,也介绍了企业业务能力API化,着重说明了云服务总线CSB的服务处理过程,最后概括了综合场景. 以下为精彩内容整理: 云服务总线CSB与ESB有什么关系呢?CSB就是互联网以及云计算场景下的企业服务总线,但重点不同,CSB真正要做的是能力开放平台,无论是ESB还是CSB,它们都是要实现系统之间的服务互通.   服务互通开放典型问题 服务协议和接口差异: 举个例子,如果用企业互联网架构平台 Apsara Aliware的"三驾马车"(EDAS/DRDS/

SOA之基于服务总线的设计

在上文中,主要介绍了SOA的概念,什么叫做"服务","服务"应该具备哪些特性.本篇中,我将介绍SOA的一种很常见的设计实践--基于服务总线的设计. 基于服务总线的设计 基于总线的设计,借鉴了计算机内部硬件组成的设计思想(通过总线传输数据).在分布式系统中,不同子系统之间需要实现相互通信和远程调用,比较直接的方式就是"点对点"的通信方式,但是这样会暴露出一些很明显的问题:系统之间紧密耦合.配置和引用混乱.服务调用关系错综复杂.难以统一管理.异构系统