我们的Web应用程序使用内存缓存(应用程序数据缓存)来提高吞吐量,以便不必为每个请求从数据库(SQL Server)加载经常查询的数据。潜在地,它将部署在Web场中,因此我们必须解决必须同步所有节点的缓存的经典问题。所以我们需要的是分布式缓存。
随时可用的解决方案是NCache和REDIS(可能还有更多)。但是,由于我们已经使用SignalR Backplane将我们的数据集的更改传达给Windows服务(和浏览器客户端),我想知道它是否可以用于实现分布式缓存。
这样做,我们会(或多或少)重新使用我们现有的数据集已更改的消息,但在Web应用程序本身中订阅它们以使其缓存无效。好处是我们不必引入新的库/技术。
我想我最大的问题是:这有意义吗?并且,SignalR Backplane 可靠吗足以确保没有事件丢失导致过时的缓存?或者是这种建筑误用?
答案 0 :(得分:1)
Signalr用于实时解决方案而非静态解决方案。
在您的解决方案中,您将在一个服务上选择数据,然后通过背板将其发送到另一个服务。那又怎样?可能你会把它保存到内存中。如果其中一个服务重新启动会发生什么?数据将消失。 redis永远不会遇到这个问题。此外,您将使用本地内存来获取此数据。
您还将如何管理到期日期?此外,您将努力使用信号器实现此缓存系统。
我建议您不要使用信号器背板。坚持使用Redis或smilar技术。