我一直在阅读有关Azure Appfabric缓存的内容。据我所知,它是一个分布式缓存。
但是我对下面没有指定 host 节点的配置感到困惑。
有人可以澄清下面的配置是否仍然是分布式缓存?如果是,如果缓存存储位于每个实例的本地资源上,它是如何分配的?
<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>
答案 0 :(得分:0)
你从哪里获得上面的配置?我想知道它是否可能在其他配置位置丢失了一些东西。
Windows Azure中有两种类型的缓存服务。曾经被称为AppFabric缓存,但现在简称为Windows Azure共享缓存。您将希望避免使用名为AppFabric的旧文档,因为它们不再使用该名称,使用它的文章,文档和示例可能已过时。另一个选项是Windows Azure缓存,命名的唯一区别是术语“共享”。这两个选项都是分布式缓存;但是,它们的不同之处在于它们分发的位置以及它们支持的功能。我将从Windows Azure缓存(非共享)开始。
Windows Azure缓存是相对较新的选项,您可能还会看到它称为基于角色的缓存。此版本的缓存为您提供了更多的灵活性和功能,如命名缓存,检测从缓存中删除项目的能力等。此选项还有一个好处,即没有限制和配额可能会阻止您进入缓存你的负荷飙升。此外,您根据配置托管缓存的角色的方式支付所需缓存的大小,并最终在缓存周围具有更多灵活性。您可以将此分布式缓存配置为在Cloud Service部署中的某个角色上运行。因此,如果您有Web角色,则可以将其设置为运行您的网站以及托管分布式缓存。您还可以拥有一个专用的辅助角色,它只能作为分布式缓存的主机。查看此文章以了解此选项的容量规划:http://msdn.microsoft.com/en-us/library/windowsazure/hh914129.aspx。
Windows Azure共享缓存以前称为AppFabric缓存,是一种可以插入的共享服务。它是一个分布式缓存,数据托管在Windows Azure中的Microsoft运行实例上。因为它是一个共享服务,所以您可以使用简单的配额和限制,以便服务的一个用户不会太大地影响其他用户。有关交易数量,数据等的配额。您可以根据您使用的内存缓存大小来支付此服务的费用。快速更改层(或者至少有关于更换层大小的速度的规则)可能会很痛苦,并且您会失去新选项所具有的大量灵活性。此外,上限是4 GB的内存,报价有点费用。
查看您提供的配置,我没有看到您指出的主机选项,因此必须是非共享版本的配置。只有共享缓存版本使用hosts元素。非共享版本使用CS Def和CS Config文件中提供的配置在幕后进行一些魔术,以确定群集的位置(并且它必须位于同一个Cloud Service中)。可以在以下位置找到更详细的配置文档:http://msdn.microsoft.com/en-us/library/windowsazure/hh914132.aspx如果这确实是非共享版本,则分发是在托管缓存的角色的实例数量内完成的。如果你只有1个实例,那么它的分布不是很好。如果将角色计数增加到2,则数据将在两者之间分配。如果您选择在配置中启用高可用性,则会在群集和故障域中保留数据的复制,这样,如果群集中的某个实例消失,您仍然可以在缓存中拥有数据副本。 (http://msdn.microsoft.com/en-us/library/windowsazure/hh914162.aspx)。
最后,如果您看到一些对本地缓存的引用,可能会参考您可以为“本地缓存”设置本地存储的位置。因此,虽然数据仍然存储在分布式缓存中,但它也可以将实例的本地副本拉出来。这对于像国家列表这样的元数据和查找是很好的,这些东西根本不会发生变化。这允许本地节点从本地缓存读取,但随后返回到较大的分布式缓存,以获取它没有的数据或本地到期的数据。我不知道上面的配置在哪里引用了本地存储资源,所以不确定你是否跨越了术语或者看到了你在这里提供的内容之外的参考。