0

我一直在阅读一些关于 Azure Appfabric 缓存的内容。据我了解,它是一个分布式缓存。

但是我对下面没有指定主机节点的配置有点困惑。

有人可以澄清一下下面的配置是否仍然是分布式缓存吗?如果是,鉴于缓存存储位于每个实例的本地资源上,它是如何分布的?

 <dataCacheClients>
         <dataCacheClient name="default">
         </dataCacheClient>
     </dataCacheClients>

<sessionState mode="Custom" customProvider="AppFabricCacheSessionStoreProvider">
  <providers>
    <add name="AppFabricCacheSessionStoreProvider"
         type="Microsoft.Web.DistributedCache.DistributedCacheSessionStateStoreProvider,
Microsoft.Web.DistributedCache"
         cacheName="default"
         useBlobMode="true"
         dataCacheClientName="default" />
  </providers>

</sessionState>
4

1 回答 1

0

你从哪里得到你上面的配置?我想知道它是否会在其他配置位置丢失某些东西。

Windows Azure 中有两种类型的缓存服务。一种过去称为 AppFabric 缓存,但现在简称为 Windows Azure 共享缓存。您需要避免使用任何称为 AppFabric 的旧文档,因为它们不再使用该名称,并且使用它的文章、文档和示例可能已过时。另一个选项是 Windows Azure 缓存,命名的唯一区别是术语“共享”。两个选项都是分布式缓存;但是,它们的不同之处在于它们分布在哪里以及它们支持哪些功能。我将从 Windows Azure 缓存(非共享)开始。

Windows Azure 缓存是相对较新的选项,您可能还会看到它称为基于角色的缓存。此版本的缓存为您提供了更多的灵活性和功能,例如命名缓存、检测从缓存中删除的项目的能力等。此选项还具有没有限制和配额的好处,如果在你有一个峰值在你的负载。此外,您可以根据您如何配置托管缓存的角色来支付所需的缓存大小,最终在缓存方面拥有更多的灵活性。您将此分布式缓存配置为在云服务部署中的一个角色上运行。因此,如果您有一个 Web 角色,您可以将其设置为运行您的网站以及托管您的分布式缓存。您还可以拥有一个专门的工作人员角色,该角色只不过是您的分布式缓存的主机。查看这篇文章以了解此选项的容量规划:http://msdn.microsoft.com/en-us/library/windowsazure/hh914129.aspx

Windows Azure 共享缓存过去称为 AppFabric 缓存,是一种可以插入的共享服务。它是一个分布式缓存,数据托管在 Windows Azure 中的 Microsoft 运行实例上。因为它是一项共享服务,所以您可以简单地遇到配额和限制,以便该服务的一个用户不会对其他用户产生太大影响。事务数、数据量等有配额限制。您根据使用的内存缓存大小为这项服务付费。快速更改层级可能会很痛苦(或者至少有关于您可以多快换出层级大小的规则),并且您会失去新选项所具有的很多灵活性。此外,上限是 4 GB 内存,以提供一些成本。

查看您提供的配置,我没有看到您指出的主机选项,因此这必须是非共享版本的配置。只有共享缓存版本使用 hosts 元素。非共享版本在幕后使用 CS Def 和 CS Config 文件中提供的配置来确定集群的位置(并且它必须在同一个云服务中)。可以在以下位置找到更详细的配置文档:http: //msdn.microsoft.com/en-us/library/windowsazure/hh914132.aspx 如果这确实是非共享版本,那么分发是在托管缓存的角色实例的数量上完成的。如果您只有 1 个实例,那么它的分布不是很广。如果将角色计数增加到 2,则数据将分布在两者之间。如果您选择在您的配置中启用高可用性,那么您的数据复制将保留在集群和容错域中,因此如果集群中的一个实例消失,您仍然在缓存中保留数据副本。(http://msdn.microsoft.com/en-us/library/windowsazure/hh914162.aspx)。

最后,如果您看到一些对本地缓存的引用,可能是在您可以为“本地缓存”设置本地存储的位置。因此,虽然数据仍存储在分布式缓存中,但它也可以将副本本地拉到实例中。这对于元数据和状态列表之类的查找很有用,这些东西根本不会发生太大变化。这允许本地节点从本地缓存中读取,然后返回到更大的分布式缓存以获取它没有或本地过期的数据。我看不到上面的配置在哪里引用了本地存储资源,所以不确定您是否跨越了术语或看到了您在此处提供的内容之外的参考。

于 2013-07-21T16:55:45.767 回答