【问题标题】:How to make .NET applications running in a cluster to communicate to each other?如何使运行在集群中的.NET 应用程序相互通信?
【发布时间】:2013-01-14 19:07:02
【问题描述】:

我有一个 .NET Web 应用程序在多台机器的 ARR 集群 (IIS) 中运行。

每台机器都必须在内存中为用户访问权限保留一个缓存。也就是说,当应用程序必须确定用户是否有权访问资源时,它会查询内存缓存以避免数据库访问(每个用户请求都有很多查询)。

问题是,在某些情况下,这个缓存必须失效。但是,由于有多台机器,当一个决定缓存必须失效时,它必须传播到其他机器。

解决此问题的最佳做法是什么?我们有一个在 IIS ARR 集群上运行的 ASP.NET MVC 3 应用程序。

【问题讨论】:

  • 你考虑过状态服务器(IIS 可用)吗?
  • “ARR”有更好的词吗?应用程序请求路由,对吗?作为一个首字母缩略词标签,它会受到很多人在输入“array”时的懒惰。

标签: asp.net .net iis cluster-computing arr


【解决方案1】:

Message queues 是正常的解决方案。

您可以拥有一个由所有节点订阅的队列,当您需要使缓存失效时,您可以向队列发送消息 - 其他节点看到此消息并使其队列失效。

MSMQ是微软的消息队列,但是第三方的很多。您可能想看看 nServiceBus 作为替代方案。

【讨论】:

    【解决方案2】:

    使所有与权限相关的缓存失效,或仅使缓存的相关部分失效(例如特定用户、特定角色等?)

    无论如何,我正在考虑一些 pub/sub 模式,例如 http://redis.io/topics/pubsub - 应用程序订阅的服务器(子),应用程序可以通过向所有订阅者发布请求来请求缓存失效(酒馆)

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-10-06
      • 2022-11-23
      • 2012-03-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多