global.asax如何在服务器场中运行?

时间:2012-07-05 17:45:45

标签: global-asax web-farm server-farm

我对global.asax文件如何在服务器场中运行感到困惑。每个服务器是否都有自己的实例正在运行,或者它是一个共享实例。

例如,在Application_Start事件中的global.asax中,我初始化一个单例对象,该对象收集统计信息并更新包含统计信息的数据库表。发生以下哪种情况?

情景一

  • 服务器1 - > (Stat = 10) - >使用10
  • 更新数据库
  • 服务器2 - > (Stat = 8) - >使用8
  • 更新数据库
  • 服务器3 - > (Stat = 25) - >使用25
  • 更新数据库
  • 服务器4 - > (Stat = 5) - >使用5
  • 更新数据库

这是第一个示例,每个服务器将使用它自己的集合

更新数据库

情景二

  • 服务器1 - > (Stat = 10) - >使用10
  • 更新数据库
  • 服务器2 - > (Stat = 10) - >使用10
  • 更新数据库
  • 服务器3 - > (Stat = 10) - >使用10
  • 更新数据库
  • 服务器4 - > (Stat = 10) - >使用10
  • 更新数据库

以上示例服务器可以访问同一个集合。这可能吗?

2 个答案:

答案 0 :(得分:1)

服务器彼此不了解,因此global.asax文件为每个进程和服务器单独运行。即使您将IIS设置为允许同一站点和同一台计算机上的多个工作进程,也是如此。每个工作进程都有自己的global.asax Application_Start()

因此,为了直接回答您的问题,Scenario One会更密切地模拟Web场中实际发生的情况。

如果你想要"单身"要在所有服务器之间共享,您必须实现所有服务器都可以共享的服务。

答案 1 :(得分:0)

另一个选择是使用ScaleOut State Server (SOSS),我已经看到它在高可用性环境中使用。

  

[This]在要存储的Web或应用程序服务器场中的每个服务器上运行   任务关键型工作负载数据。 ScaleOut StateServer的内存中数据   具有集成的内存分布式缓存的网格提供了极大的功能   快速访问您关键但快速变化的数据及其数据   将服务器添加到服务器场时,性能和容量会增长。该   软件会自动在服务器之间复制存储的数据   如果服务器出现故障,关键数据不会丢失,并且会维护   独立数据库服务器的可扩展,高可用性访问   (甚至是故障转移数据库集群)也不能复制。你也可以   使用Windows版本的ScaleOut StateServer透明保存   并检索ASP.NET会话状态。

相关问题