7

Windows Azure缓存文档

如果可能,存储和重用相同的 DataCacheFactory 对象以节省内存并优化性能。”

有没有人看到任何指标或任何量化这有多昂贵?

一种说法是

“MaxConnectionsToServer 设置...确定每个 DataCacheFactory 向缓存集群打开的通道数。”

因此,如果 MaxConnectionsToServer = 1 并且 DataCacheFactory 是您的应用程序中的单例,那么您已经有效地将所有请求同步到您的 Web 服务器!

但是,有很多迹象 表明 DataCacheFactory 应该是一个单例(即放在 Application_OnStart 中)。

这很关键,我不敢相信它不在 Microsoft 文档中。DataCacheFactory 在 AppFabric、Azure 共享缓存和 Azure 缓存中的处理方式是否相同?我只是很难相信微软以需要单例工厂对象的方式设计缓存。这就像要求任何使用 SqlConnection 的人在他们的应用程序中拥有一个单例 SqlConnectionFactory 对象。

因此,考虑一个相对平均的 Web 应用程序(例如,每小时 1,000 次请求,缓存中约 100 个对象,平均请求访问 5 个缓存对象):

  1. 默认情况下(和推荐)一次应该有多少个工厂对象?
  2. 创建 DataCacheFactory 引用需要多长时间?
  3. 创建 DataCache 引用需要多长时间?
  4. 每个应用程序应该只有 1 个 DataCacheFactory 对象,每个请求只有 1 个 DataCache 引用吗?

编辑(正在进行的答案):

(1/2)。让 Azure 连接池处理工厂对象

(3)。还在测试.​​..

(4)。仍在试图弄清楚我是否应该重新使用 DataCache 引用

4

2 回答 2

11

怎么样,微软确实记录了最佳实践,并且确实涉及连接池!虽然不容易找到(至少对我来说)。

看来答案只是在实现较新的 Azure 缓存时不使用 DataCacheFactory 对象,而直接访问 DataCache 对象

“DataCache 构造函数还有新的重载,使创建缓存客户端变得更简单。过去,总是需要创建返回目标缓存的 DataCacheFactory 对象。现在可以使用 DataCache 创建缓存直接构造函数。下面的示例从配置文件的默认部分创建一个到默认缓存的客户端。

DataCache cache = new DataCache();

并使用连接池

“使用最新的 Windows Azure SDK,当您在应用程序或 Web 配置文件中定义缓存设置时,默认启用连接池。由于这种默认行为,正确设置连接池的大小非常重要。连接池大小是使用 dataCacheClient 元素上的 maxConnectionsToServer 属性配置的。”

我希望微软就如何正确配置 maxConnectionsToServer 提供一些指导,但这可以通过测试来确定。使用新 Azure 缓存的自动连接池非常酷 :)

于 2013-03-15T23:53:59.217 回答
1

我假设您指的是共享缓存服务(以前称为 Azure AppFabric 缓存)每个单独的连接没有成本。但是,当您购买缓存帐户时,您不仅要为缓存帐户的大小付费,还要为特定数量的连接付费。

最小的缓存帐户每小时有 10 个连接,而最昂贵的一个允许 160 个并发连接。因此,如果您担心鉴于您的帐户大小可能会用完连接,那么谨慎地注意您从应用程序打开的连接数可能是谨慎的。

更多详细信息 http://msdn.microsoft.com/en-us/library/windowsazure/hh697522.aspx

于 2013-03-14T00:44:34.077 回答