SignalR背板可以/应该用于构建分布式缓存



我们的web应用程序使用内存缓存(应用程序数据缓存)来提高吞吐量,这样就不必为每个请求从数据库(SQL Server)加载频繁查询的数据。它可能会部署在web场中,因此我们必须解决必须同步所有节点的缓存的经典问题。因此,我们需要的是一个分布式缓存。

现成的解决方案有NCache和REDIS(可能还有更多)。然而,由于我们已经在使用SignalR背板将数据集的更改传达给Windows服务(和浏览器客户端),我想知道它是否可以用于实现分布式缓存。

这样做,我们会(或多或少)重复使用我们现有的数据集已更改的消息,但在web应用程序本身中订阅它们以使其缓存无效。好处是我们不必引入新的图书馆/技术。

我想我最大的问题是:这有意义吗?SignalR背板是否足够可靠,以确保不会丢失导致缓存过期的事件?或者这是架构上的误用?

Signalr适用于实时解决方案,而非静态解决方案。

在您的解决方案中,您将选择一个服务上的数据,然后通过背板将其发送到另一个服务。然后呢?也许你会把这个保存到记忆中。如果其中一项服务已重新启动,会发生什么情况?数据将消失。使用redis,您永远不会遇到这个问题。此外,您将为此数据消耗本地内存。

此外,您将如何管理过期?此外,你将努力实现这个缓存系统与信号。

我不建议你使用信号背板。坚持使用Redis或smilar技术。