技术开发 频道

Windows Azure AppFabric云中间件解析

  【IT168技术】在云上运行应用是云计算的一个重要服务,但这只是其中一个方面。Windows Azure平台还能提供更多基于云的服务,这种服务能被传统的自有应用或云计算平台上的应用调用。这正是Windows Azure platform AppFabric服务的目标。在创建分布式应用时,通过Windows Azure platform AppFabric服务可以解决普遍存在的基础架构方面的问题。图1.11展示了其核心的组件:服务总线和访问控制服务。

Azure AppFabric——云中间件
▲图1. Windows Azure AppFabric的主要功能

  名词辨析:

  有些读者可能已经听说过另外一个产品的名字,那就是Windows Server AppFabric。它与Windows Azure platform AppFbric在功能定位上非常类似,都属于中间件层次,只不过Windows Server AppFabric是针对Windows Server平台的。随着时间的推移,我们将看到两个AppFabric在功能上也有越来越多的相似性。还有一个要注意的地方是,虽然这里讲的两个AppFabric与前面提到的Fabric控制器在名称中都有Fabric,但是它们是完全不同的组成部分,没有直接联系。

  服务总线(Service Bus)

  Windows Azure platform AppFabric的服务总线与传统SOA中的企业服务总线(ESB)在概念上有相似的地方,但是在范围和功能上是不一样的。这里的服务总线是专门针对互联网上的服务相互调用的而不仅限于企业内部。将传统的应用服务部署到互联网上比大多数人想象的要难得多,服务总线的目标就是使其变得简单化。无论是传统的自有应用还是云应用,都可以通过服务总线互相访问对方的Web服务。服务总线为每个服务端点分配一个固定的URI地址,从而帮助其他应用定位和访问。

  另外,服务总线还可处理网络地址转换(NAT)和企业防火墙所带来的挑战。服务总线可以将企业内网的服务暴露给互联网。大多数企业都拥有自己的局域网,为了解决IP地址不足的问题,通常都设置了网络地址转换,因此每台服务器对外都没有一个确定的地址。同时,出于安全性考虑,防火墙往往都限制了大多数的端口。这就使得要在互联网上访问部署在内网的服务变得相当困难。

  服务总线正是为了解决这一问题而产生的。服务总线作为一个中间人,用户的服务和使用服务的客户端全都作为服务总线的客户端与它进行交流。因为服务总线不存在网络地址转换的问题,所以用户的服务和服务客户端都很方便地能与它通信。在最简单的场合下,服务总线只需要用户的服务器暴露出站(Outbound)服务的80或443端口,也就是只需要用户的服务器能够以HTTP/HTTPS协议访问互联网,用户的服务就能连上服务总线。由于服务的访问是由用户服务端向服务总线发起出站网络连接的,因此它对防火墙的要求可以说是相当低的。

  当用户的服务连接到服务总线以后,可以注册成为一个互联网的服务。尽管该服务是托管在内网中的,总线服务将会分配一个互联网上的URI地址。此时该服务已经和总线服务建立了连接,其他应用只需要访问这个URI地址,服务总线将会负责将请求转发给内网中的服务,并将该服务的应答转发给客户端。

  从本质上讲,Windows Azure platform AppFabric提供了一个基于互联网的服务总线,帮助用户把不同的应用服务在互联网上高效地连接起来。熟悉企业应用架构的开发者和架构师应该能够更加灵活地使用总线功能,构建出面向服务的互联网应用。

  访问控制服务(Access Control Service,ACS)

  认证和授权是应用安全最为基础的两个方面。身份认证是许多分布式应用的基础,然后基于用户的身份信息,应用系统将决定该用户的操作权限。Windows Azure platform AppFabric中提供的访问控制服务为开发人员提供了一个在应用中使用的授权服务,开发人员可以使用这个访问控制服务来认证应用的用户而不需要自己编写代码来实现。访问控制服务不仅简化了利用已有的企业内部身份认证系统的方式,还使应用可以方便地使用Google、Windows Live、Yahoo和FaceBook等互联网上流行的身份认证系统。

  经过几十年的演变,身份认证的解决方案更多的采用基于声明(Claim)的方式进行。基于声明的认证模型允许应用程序将认证与授权交给外部的服务来完成,外部的服务可以集中管理和维护身份信息,并提供更专业的身份管理控制服务。Windows Azure platform AppFabric中提供的访问控制服务就是一个基于声明的认证模型。利用基于声明的认证模型,开发人员可以通过访问控制服务完成多种方式的认证和授权。通过访问控制的配置,企业客户端可以通过活动目录联合服务器(ADFS v2)提供的登录凭据,完成访问控制服务的认证。这样基于访问控制服务的云端应用就可以接受这一认证,实现多种认证模式并存的方式。

  分布式缓存

  在金融危机的时候,有一句话很流行——“现金为王”。在计算机领域,如果要提升性能同样有一个很流行的说法——“缓存为王”。我们可以在不同的计算机层次中看到各种不同缓存技术的使用。在Windows Azure平台中,为了提升应用程序的性能,除了前面讲到的内容分发网络(CDN)外,Windows Azure platform AppFabric还提供了分布式缓存功能。该缓存服务为Windows Azure 应用程序提供了基于内存的分布式缓存功能,并提供访问缓存的API库,如图1.12所示。

Azure AppFabric——云中间件
▲图1.12 分布式缓存示意

  该缓存服务在应用程序的每个角色实例上保存一份本地缓存。如果本地缓存没有所需要的数据,它会自动去访问缓存服务提供的共享缓存。如图1.12所示,缓存数据分散到多个实例上,每个实例保存不同的缓存数据。对应用程序而言这种缓存是透明的,也就是说,应用程序只管请求数据,AppFabric的缓存功能将会自动找到和返回数据。最近被访问的数据不会被自动缓存,应用程序需要通过API专门把数据添加到缓存中。对于运行在Windows Azure上的ASP.NET应用程序,可以通过配置的方式把会话数据保存到缓存服务中,这样可以不用修改任何代码就可以加快它的运行。

  与Windows Azure AppFabric对等的本地Windows Server AppFabric(注:其最开始的开发项目代号是Velocity)也有缓存服务,其实两者非常相似。与Windows Server AppFabric不同的是,Windows Azure AppFabric Caching是一个服务,它不需要去专门配置管理服务器,它的服务会自动处理。同时缓存服务是多租户的,每个使用它的应用程序都有自己的实例。由于应用程序在实例上必须通过验证,因此其他的应用程序访问不到不属于自己的缓存数据。

0
相关文章