关于 Azure 缓存的角色中缓存

重要

Microsoft 建议所有新开发使用 Azure Redis 缓存。 有关选择 Azure 缓存产品/服务的当前文档和指南,请参阅 哪个 Azure 缓存产品/服务适合我?

In-Role缓存支持在 Azure 角色上托管缓存服务的功能。 在此模型中,缓存是你的云服务的一部分。 选择云服务中的一个角色来托管In-Role缓存。 该角色的运行实例将加入内存资源以形成缓存群集。 这个专用缓存群集仅对同一部署内的角色可用。 In-Role缓存有两个主要部署拓扑:共同定位和专用。 共存角色还托管其他非缓存应用程序代码和服务。 专用角色是仅用于缓存的工作角色。 以下主题更详细地讨论了这些缓存拓扑。

有关基于角色的In-Role缓存的分步演练,请参阅 如何使用 Azure In-Role 缓存。 有关可下载的示例,请参阅 Azure In-Role缓存示例

In-Role缓存概念

本部分概述与基于角色的In-Role缓存相关的三个关键概念。

  1. 缓存群集

  2. 命名缓存

  3. 缓存客户端

缓存群集

Azure 角色具有一个或多个实例。 每个实例是一个配置为托管指定角色的虚拟机。 当启用了 In-Role缓存的角色在多个实例上运行时,将形成缓存群集。 缓存群集是一种分布式缓存服务,它使用群集中所有计算机的组合内存。 应用程序可以添加并检索缓存群集中的项目,而不必知道这些项目存储在哪台计算机上。 如果启用了高可用性,则项目的备份副本将自动存储在其他虚拟机实例上。

注意

每个云服务仅支持一个缓存群集。 通过为每个角色指定单独的存储帐户,可以在一个云服务中设置多个缓存群集。 但是,此配置不受支持。

在 Azure 角色上启用In-Role缓存时,可以指定可用于缓存的内存量。 在共存方案中,可以选择用于托管角色的虚拟机上的可用内存的百分比。 在专用方案中,虚拟机上的所有可用内存均用于缓存。 但是,考虑到操作系统的内存需求,可用内存将始终小于虚拟机上的总物理内存。

因此,缓存内存总量取决于保留用于缓存的角色内存乘以角色数。 可以通过增加或减少该角色的运行实例数来有效扩展或减少总缓存内存。

警告

纵向缩减托管In-Role缓存的角色的运行实例时,一次减少不超过三个的实例计数。 在完成该项更改后,最多可以删除另外三个运行中的实例;重复此操作,直到达到所需的运行中实例数。 同时缩减三个以上的实例会导致缓存群集不稳定。

每个缓存群集维护有关 Azure 存储中群集运行时状态的共享信息。 在开发过程中,可以使用 Azure 存储模拟器。 部署的角色必须指定有效的 Azure 存储帐户。 在Visual Studio中,可以在角色属性的Caching选项卡上指定相应的存储帐户。

命名缓存

每个缓存群集均至少有一个名为 default 的缓存。 使用基于角色的In-Role缓存,还可以添加其他 命名缓存。 每个缓存都有多个可以更改的设置。 以下屏幕截图显示了Visual Studio角色设置上“Caching”选项卡的“命名缓存设置”部分。

Caching Properties for Named Caches

在Visual Studio中,单击“添加命名缓存”按钮以添加其他命名缓存。 在前面的示例中,添加了两个附加缓存:NamedCache1NamedCache2。 每个缓存均有不同的设置。 通过选择和修改表中的特定字段来更改设置。

命名缓存为应用程序设计者提供了灵活性。 每个命名缓存均有自己的属性。 例如,某个缓存可以启用“高可用性”来利用高可用性。 其他缓存可能不需要此设置,而且对于每个缓存项目来说,高可用性需要两倍的内存。 仅对需要高可用性的缓存使用高可用性可以更好地利用资源。 还有其他类似的方案,即使用多个属性不同的缓存以满足应用程序的要求。

缓存客户端

缓存客户端是用于存储和检索缓存群集中项目的任意应用程序代码。 在角色上In-Role缓存时,缓存客户端必须是同一缓存角色的一部分,或合并到部署中的其他角色中。 通过使用应用程序或 Web 配置文件来配置缓存客户端。 有关详细信息,请参阅如何:准备Visual Studio以使用 Azure In-Role 缓存。 以下示例演示配置文件中的 dataCacheClient 元素。

<dataCacheClients>
  <dataCacheClient name="default">
    <autoDiscover isEnabled="true" identifier="CachingRole1" />
    <!--<localCache isEnabled="true" sync="TimeoutBased" objectCount="100000" ttlValue="300" />-->
  </dataCacheClient>
</dataCacheClients>

在前面的示例中, autoDiscover 元素的 标识符 属性设置为 CachingRole1。 此标识符指定 CachingRole1 已启用In-Role缓存。 它提供缓存服务器的位置。 缓存客户端在任何缓存操作中自动使用 CachingRole1

缓存客户端在配置后便可以按名称访问任何缓存。 以下示例访问 NamedCache1 缓存,并向该缓存中添加项目。

DataCache cache = new DataCache("NamedCache1", "default");
cache.Put("testkey", "testobject");

DataCache 构造函数采用两个参数:缓存名称和 dataCacheClient 节名称。 有关缓存名称的信息,请参阅上一部分的命名缓存。

本节内容

另请参阅

概念

Cache