分布式缓存服务的实现与配置

在现代的应用程序和服务中,为了提高性能和响应速度,分布式缓存服务变得越发重要。AppFabric提供了一种分布式缓存解决方案,可以轻松地集成到现有的服务和应用程序中。本文将详细介绍如何安装、配置和使用AppFabric进行缓存。

AppFabric缓存服务的应用场景

AppFabric缓存服务可以应用于多种场景,主要包括:

  • 缓存WCF服务的响应
  • 缓存业务层中特定对象

对于WCF服务响应的缓存,如果响应消息已经在缓存中,自定义通道会立即从缓存返回响应消息,而不需要调用底层服务。这不需要客户端实现任何更改。在服务端,需要对要缓存响应的操作应用自定义属性。

对于特定对象的缓存,可以在业务层中缓存从数据存储(数据库或外部服务)检索的数据。这包括一个CacheHelper类,它目前支持:

  • 读取和写入AppFabric缓存的辅助方法
  • 返回存储在缓存中所需的加密密钥的API
  • 重置缓存中对象的存活时间的API

安装和配置AppFabric

AppFabric没有图形用户界面,需要使用Powershell进行管理。首先确保AppFabric缓存服务正在运行。可以通过调用Get-CacheHost命令来确定缓存主机是否正在运行。

以下是一个两台服务器缓存集群的示例输出:

HostName : CachePort Service Name Service Status Version Info -------------------- ------------ -------------- ------------ CacheServer1:22233 AppFabricCachingService UP 1 [1,1][1,1] CacheServer2:22233 AppFabricCachingService UP 1 [1,1][1,1]

在这个示例中,CacheServer1和CacheServer2都在运行。

下一步是创建一个命名缓存,这是一个用于存储数据的逻辑容器。可以通过Windows PowerShell中的New-Cache cmdlet来实现:

New-Cache appFabricCache

要查看当前缓存的设置,请使用Get-CacheConfig命令:

Get-CacheConfig appFabricCache

在前一个示例中,Get-CacheConfig命令显示了Cache1的缓存配置设置。以下是该命令输出的示例:

CacheName : appFabricCache TimeToLive : 10 mins CacheType : Partitioned Secondaries : 0 IsExpirable : True EvictionType : LRU NotificationsEnabled : False

使用组件的步骤

要使用缓存组件,需要添加对Caching Extension库的引用。必须更新应用程序的web.config文件,如下所示:

缓存组件现在已经准备好使用。以下是将利用这个组件的两个不同地方:

[CacheOperationBehavior(MinutesToCache = 5)] [OperationContract] CustomerDC GetCustomer( string customerID);

将[CacheOperationBehavior]属性应用于想要缓存响应的操作。

对于调用数据库的响应进行缓存:

// 从缓存中读取 Customer custObj = (Customer)CacheHelper.Get(CUST_KEY); // 如果缓存中不存在 if (custObj == null) { // 从数据存储中读取 custObj = ReadFromDataStore(); // 填充缓存 cacheHelper.Put(CUST_KEY, custObj); return custObj; }

定义一个键的常量,并使用CacheHelper的GetEncryptedKey(string) API获取加密的键。

使用以下所示的Cache-aside模式:

实现细节

要使用AppFabric缓存,组件需要以下库:

  • Microsoft.ApplicationServer.Caching.Core
  • Microsoft.ApplicationServer.Caching.Client

I. 缓存WCF服务响应

客户端的传入调用通过传输通道接收,并在到达Dispatcher之前通过一些通道。Dispatcher将传入调用与适当的操作关联,然后调用它。

创建了一个自定义的OperationInvoker来自定义调用数据存储的行为。

它是如何工作的?

键是通过输入参数和操作名称的组合生成的。但是,由于参数可以是任意数量的对象,因此首先将它们序列化为XML字符串。

它还具有TimeInMinutes属性,用于指示缓存对象的生命周期。

II. 缓存从数据存储检索的数据

目前,CacheHelper类公开了以下API:

  • DataCache对象的Get和Put方法。
  • 重置对象超时值 - 定义对象在缓存中存在多久后过期。为对象指定的值会覆盖缓存的默认设置。
  • 从字符串创建加密密钥。

性能监控工具

性能监控

AppFabric缓存功能安装了几个性能监控器计数器。有关可用计数器的更多信息,请参见性能计数器。可以观察或记录一些计数器值,以确定典型缓存集群行为的基线。例如,在AppFabric Caching:Cache类别中,可能会观察到Total Client Requests / sec值在一天中不同时间范围内保持在一般范围内。

Windows PowerShell

  • Get-CacheHost
  • Get-CacheClusterHealth
  • Get-CacheStatistics
http://www.microsoft.com/download/en/details.aspx?id=15848
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485