负载平衡的ASP.NET Web应用程序中的跨服务器通信

时间:2013-03-17 03:06:00

标签: asp.net caching ipc invalidation web-farm

我的ASP.NET应用程序在应用程序可访问的static字段中存储了一些昂贵的(加载)数据(在这种情况下使用System.Web.Caching.Cache是不合适的。)

我的应用程序也在几台带有中央SQL Server的Web服务器上进行负载均衡。

有时此缓存将失效。如果用户在Server01上提交了一些更新的数据,那么该应用程序知道它在将数据提交到数据库时将清除其本地缓存。

但是,Server01如何通知Server02此更改以使Server02的缓存失效?

我不知道ASP.NET中用于web-farm通信的任何内置服务器间IPC,似乎我必须在应用程序中创建一个URI处理程序(例如http://mysite/InvalidateCache)将由其他服务器调用,但它似乎有点hackish。还有更好的方法吗?

2 个答案:

答案 0 :(得分:3)

我有点脑屁并且意识到网络服务器只需通过发送彼此的请求就可以相互通信 - 不需要特殊的侧通道线。我之前称这个想法是hackish,但理论上听起来很合理。

显然出于安全考虑,这些请求需要通过物理专用网络连接,或者有加密签名的请求,但我现在真的想不出有什么问题。

答案 1 :(得分:1)

我建议您探索像AppFabric这样的分布式缓存。 http://msdn.microsoft.com/en-us/library/ff383731(v=azure.10).aspx