【问题标题】:AppFabric Cache - Is it reasonable to allocate two cache clusters?AppFabric Cache - 分配两个缓存集群是否合理?
【发布时间】:2012-12-12 12:12:51
【问题描述】:

我对 AppFabric Cache 的第一印象是它本质上是一个分布式哈希表,与memcached 相同。这种缓存的典型使用模式是不能保证您的数据会在缓存中(旧条目被逐出以为新条目腾出空间),但通常有足够的 RAM。

另一方面,MS 提供了一个Web Session State Provider,它将会话数据存储在 AppFabric 缓存中。这似乎是一种完全不同的使用模式,因为我们现在要求缓存的项目永远不会因为内存压力而被驱逐。为了实现这一点,MS 提供了一种高可用性模式,可以保留所有数据的冗余副本,此外可以禁用驱逐,这反过来又需要我们分配足够的 RAM 以确保缓存永远不会达到容量。

应用程序似乎可能会从使用这两种类型/模式的缓存中受益,但据我所知,AppFabric RAM 不能在集群或主机内被隔离,因此 Web 会话状态在这种情况下,可能(并且通常会)经历记忆压力。我能看到的唯一解决方案是运行两个 AppFabric Cache 集群,每个模式一个。

以上是否很好地反映了这种情况,还是我缺少一些解决这种情况的配置设置?

【问题讨论】:

    标签: asp.net .net memcached appfabric


    【解决方案1】:

    在 appfabric 中存储会话不是一个好主意,尝试这样做时遇到了很多问题(例如由于内存压力数据丢失,多个用户访问缓存以放置数据可能导致数据丢失等),现在开始使用 inProc/SqlServer 会话状态使用。

    【讨论】:

    • 对于 Web 会话状态,您应该启用高可靠性、禁用过期和提供充足的 RAM。或者,您可以将状态持久保存到 SQL Server 等后备存储。为了实现后备存储方法的主要好处,需要使用直写模式,以便写入是异步的并且与缓存写入分离(因此调用者不必等待每次写入完成 - 这将是直接使用 SQL svr 进行缓存写入没有任何净收益 - 读取当然会更快,或者在 Web 服务器的 RAM 中使用粘性会话和缓存会话)
    • 很好地使用 HA 有一些与环境相关的瓶颈在我身边。我觉得粘性会话是不错且可靠的选择。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多