signalr - SignalR Backplane 是否可以/应该用于构建分布式缓存?

标签 signalr distributed-caching web-farm signalr-backplane ncache

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

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

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

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

最佳答案

Signalr 用于实时解决方案,而不是静态解决方案。

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

您将如何管理过期?另外,您将努力使用信号器来实现此缓存系统。

我不建议您为此使用信号器背板。坚持使用 Redis 或类似技术。

关于signalr - SignalR Backplane 是否可以/应该用于构建分布式缓存?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36208963/

相关文章:

ASP.NET 在回发期间显示进度条

java - 不可序列化对象的分布式缓存

caching - 将 MemoryCacheHandle 与 RedisCacheBackplane 一起使用,但不使用 RedisCacheHandle

java - 在 hazelcast 和 Java 中以编程方式设置 Near Cache 验证 Near 缓存是否从本地缓存返回数据

ASP.Net 4.0 网络场缓存

authentication - 使用 ServiceStack 身份验证插件对 SignalR 集线器进行身份验证

c# - 如何修复 SignalR System.InvalidOperationException InvokeAsync 仅适用于单个客户端

ios - IOS 上的 Safari 中每个域允许多少个同时 websocket 连接?

asp.net - 在 Web 服务器场上捆绑缓存清除器

windows-services - 无需重新发明轮子即可部署 Microsoft 堆栈应用程序