【问题标题】:Windows Azure in-role caching vs shared cacheWindows Azure 角色内缓存与共享缓存
【发布时间】:2013-03-12 19:28:58
【问题描述】:
我们在 Azure 中有一个网站,我们想缓存网站上的内容。将更新内容的应用程序将在 Azure 之外。我们让这个场景与共享缓存一起工作。然而,共享缓存被认为是一项遗留功能,因此我们想看看替代解决方案,包括使用角色内缓存。缓存的内容非常小,不应该超过 1 MB,会被 C# 代码使用。
我们可以在 Web 角色中使用同位缓存,也可以使用辅助角色使用专用缓存。
我们在使用角色内缓存时遇到的问题是:
【问题讨论】:
标签:
caching
azure
azure-web-roles
azure-worker-roles
shared-cache
【解决方案1】:
在他已经提到的 SO 线程中进行了大量研究和guided by Simon's responses 之后,这是我的回复:
- 问:如何从外部应用更新协同定位缓存?
答:我会在您的 Webrole 上公开一个公共端点来清除缓存。我会从您的外部应用程序调用该端点(该端点可以是服务、REST URL 等)。或者,将消息扔到队列中并让您的 Webroles 监视该队列并在他们收到队列中的消息时从缓存中清除该项目。无论哪种方式,您都在实现自己的通知机制
问:如果有办法从外部应用程序更新共存缓存,缓存通知可用于使所有共存缓存节点失效,对吗?
答:我不这么认为。共同定位缓存的端点是严格内部的。
问:我们现在使用超小型 Web 角色实例 - 我们需要升级到小型/中型实例吗?
答:是的。我相信小型实例及更高版本支持托管缓存。您需要尝试一下,看看您获得了多少内存与剩余多少内存以及这对您的主应用程序是否有用
问:专用缓存是否更适合我们的场景?
- 答:专用缓存与共置缓存实际上与负载有关。你
在您的缓存和应用服务器上有足够的负载来证明其合理性
将缓存移出一个单独的角色?看看这篇文章
对于微软的建议:
http://msdn.microsoft.com/en-us/library/windowsazure/hh914129.aspx