【问题标题】:Connecting to the new Azure Caching (DataCache, DataCacheFactory, & Connection Pooling)连接到新的 Azure 缓存(DataCache、DataCacheFactory 和连接池)
【发布时间】:2013-03-02 04:50:28
【问题描述】:

Windows Azure Caching Document

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

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

One argument is that

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

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

但是,there is a lot 表明 DataCacheFactory 应该是单例(即放入 Application_OnStart)。

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

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

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

编辑(正在回答):

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

(3)。还在测试中……

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

【问题讨论】:

  • 关于 questin 3/4 有更新吗?您是否为每个请求创建一个 DataCache?
  • Robar,我们发现一旦我们转移到缓存连接池,为每个请求创建一个 DataCache 引用是很便宜的。
  • 但是,我们发现缓存并没有解决与 SQL Azure 性能相关的潜在问题,因此我们不再使用 Azure。如果您需要高性能事务数据库,那么 SQL Azure 会出现问题。如果您有一个内容管理系统(即主要是读取),我猜缓存应该可以解决您的问题。
  • 感谢您的回复。

标签: azure azure-caching


【解决方案1】:

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

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

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

【讨论】:

  • Igorek,我实际上指的是较新的 Windows Azure 缓存,但针对两者的编程似乎非常相似(即使配置和架构可能有很大不同)。我更新了问题以使其更清晰,并添加了几个链接。谢谢!
【解决方案2】:

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

答案似乎只是在实现较新的 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 元素。”

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

【讨论】:

猜你喜欢
  • 2011-04-16
  • 2014-07-09
  • 2017-04-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-11-15
  • 1970-01-01
相关资源
最近更新 更多