【发布时间】:2013-02-28 04:56:42
【问题描述】:
我们想在 Azure 中实现缓存有两个主要原因:
- 加速重复数据访问
- 减少数据库压力
以下是我们计划缓存的数据的特征:
- 相对较小 (1 - 100 kb)
- 针对每个客户
- 不是私人的,但我们真的不希望随机的人浏览我们的整个缓存
- XML 或 JSON
- 由 C# 使用(即不直接链接到 html 中)
- 大多数星期的数据不会发生变化,但有时数据可能会发生多次变化
为此,Table storage 似乎比 Blob 存储更好(我们只是为图像、CSS 和 JavaScript 实现了 Blob 存储),Windows Azure Caching 似乎比 Windows Azure 共享缓存更好(可能几乎是always better 和共享此时缓存为mostly a legacy feature)。
两者的编程 API 看起来很简单。与我们为云站点支付的费用相比,每个站点的成本似乎可以忽略不计。
到目前为止,由于我们认为 Azure 缓存的优缺点,我们倾向于表存储。作为老 .Net 人,我们更熟悉内存缓存而不是 NoSql 风格的解决方案:
Windows Azure 缓存问题:
- 如果将 VM 移动到不同的服务器(由 Microsoft 出于负载平衡或任何原因),内存缓存是否会原封不动地移动?
- 我们猜测,每当我们将更改发布到云时,它都会清除现有的内存缓存
- 虽然用户在进行更改时很少更改缓存数据,但他们可能会在几秒钟内进行多次更新,我们不确定这将如何处理位于运行 Web 角色的多个节点的缓存,尤其是随着流量的增加。 (这可能也是表存储的问题!)
- 表存储看起来更容易调试
Windows Azure 缓存的优势
- 有点快
【问题讨论】:
-
Greiner 的answer here 可能是一个很好的默认解决方案,首先使用表存储,如果某些数据由于使用率极高而成为瓶颈,请将其移至缓存。那么解决方案就是有2层缓存。
-
因此,对于经常访问但很少编辑的数据,请使用通过 NoSql 进行的命令-查询责任分离,如果 nosql 的性能因任何值而降低,则将其移动到内存中?
标签: azure nosql azure-caching azure-cdn