【问题标题】:NHibernate Azure AppFabric CacheNHibernate Azure AppFabric 缓存
【发布时间】:2011-08-17 06:49:04
【问题描述】:

有人尝试过针对 Azure AppFabric 缓存使用 NHibernate Velocity L2 缓存提供程序吗?如果有,你发现了什么?

顺便说一句,我们使用 SQL Azure 来存储我们的数据。

【问题讨论】:

  • 你有没有得到这个答案?我坐在同一个问题上。
  • 抱歉这么久才给你更新。请看下面我的回答。

标签: nhibernate azure azure-sql-database second-level-cache azure-appfabric


【解决方案1】:

最新版本“Windows Azure 缓存(预览版)”应该对您有所帮助 - http://social.msdn.microsoft.com/Forums/en-US/windowsazuredata/thread/9a2dbd9f-1b9d-4249-a48b-216d9dfdc2bc

您可以支持通知、改进延迟、更大的灵活性以及仅根据您配置的虚拟机的计算成本定价。

【讨论】:

  • 感谢您的提醒。有时间我会看看新的缓存功能。
【解决方案2】:

我们的缓存用例如下:

  1. 我们希望通过缓存经常访问的 SQL Azure 数据来加速我们的 Web 应用程序。
  2. 应该通过简单地编辑 NHibernate 配置来启用缓存(就像任何其他 NHibernate L2 缓存一样)。
  3. 当对 Azure 角色实例上的这些实体之一进行更新时,更改应立即传播到其他 Azure 实例。
  4. 我们希望避免设置和管理 memcached 之类的麻烦。

很遗憾,Azure AppFabric 缓存的当前状态不适合我们的需求。原因如下:

在调整 NHibernate Velocity 提供程序后,我们能够在分布式缓存中缓存对象,但在访问每个实体时会有一小段延迟(约 1 秒)。因为我们试图访问每个 Web 请求的数百个缓存对象,所以每个 HTTP 请求实际上比我们直接访问数据库要慢——当然不是我们想要的。

我们尝试通过启用 AppFabric 本地缓存来解决此问题。性能得到了极大的改善,但这又引发了另一个问题。一旦对象存储在本地缓存中,它将一直保留在那里直到过期(您可以为缓存设置过期时间跨度)。在这一点上,AppFabric 本地缓存和 NHibernate SysCache 提供程序(使用 ASP.NET 缓存)之间没有太大区别,只是您必须为 AppFabric 缓存支付额外费用。

如果 Azure AppFabric 本地缓存支持像 Windows Server AppFabric cousin 这样的通知,我们会很乐意使用 Azure 缓存。请vote for this feature at www.mygreatwindowsazureidea.com

Azure 论坛上的同事 posted a question 关于 AppFabric 本地缓存的使用作为参考。

如果有人发现 MS 在 Azure 上启用了本地缓存通知,请发布我原来的问题的答案

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-03-21
    • 2011-09-27
    • 1970-01-01
    • 1970-01-01
    • 2011-12-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多