5

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

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

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

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

4

1 回答 1

2

Signalr is for realtime solution not for static.

In your solution, you will select data on one service, and you will send it to another service by backplane. Then what ? Probably you will save this to memory. What happens if one of the service has restarted ? Data will gone. You will never face this problem with redis. Additionally, you will consume your local memory for this data.

Also how you will manage expiration ? Plus you will make effort to implement this cache system with signalr.

I don't suggest you to use signalr backplane for this. Stick with Redis or smilar technologies.

于 2016-03-24T21:20:53.807 回答