连接到新的Azure缓存(DataCache,DataCacheFactory和& Connection Pooling)

时间:2013-03-14 00:30:05

标签: azure azure-caching

Windows Azure Caching Document

  

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

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

One argument is that

  

“MaxConnectionsToServer设置...确定打开到缓存集群的每个DataCacheFactory的chennel数量。”

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

然而,there is a lot表明DataCacheFactory应该是一个单例(即放在Application_OnStart中)。

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

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

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

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

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

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

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

2 个答案:

答案 0 :(得分:11)

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

似乎答案只是在实现较新的Azure缓存时不使用DataCacheFactory对象而只是access the DataCache object directly

  

“DataCache构造函数也有新的重载   创建缓存客户端更简单。在过去,它始终是   创建返回目标的DataCacheFactory对象所必需的   缓存。现在可以使用DataCache创建缓存   构造函数直接。以下示例为该客户端创建客户端   默认缓存来自配置文件的默认部分。“

DataCache cache = new DataCache();

And to use connection pooling

  

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

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

答案 1 :(得分:1)

我假设您指的是共享缓存服务(以前称为Azure AppFabric缓存) 每个连接不收取任何费用。但是,当您购买缓存帐户时,您不仅要支付缓存帐户的大小,还要支付特定数量的连接。

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

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