静态变量如何在web场中工作

本文关键字:工作 web 变量 静态 | 更新日期: 2023-09-27 18:20:53

我有一个带有静态字典的静态类来跟踪一些统计数据。这种方法在单服务器和多服务器环境中可行吗?

静态变量如何在web场中工作

不在多服务器环境中。除非字典不是.Net字典,而是一个针对数据库或其他外部存储的字典。此外,在单服务器环境中,您应该记住,每次IIS刷新时,字典都会被清空。

否,一台服务器内存中的静态变量将不可见,也不会与其他服务器同步。

既然您提到了"跟踪统计数据",那么许多多实例服务器场最终要做的就是将本地收集的数据后处理到所有服务器上的活动的聚合视图中。每个服务器在内存中积累一小段时间(几分钟)的统计数据,然后将数据从内存写入本地文件系统上的日志文件。每隔几个小时或每天,一个批处理过程将日志文件从服务器场中的每个服务器复制到一个中心位置,并将所有日志记录合并在一起,形成一个数据集合。如果用户的web请求由同一服务器场中的不同服务器提供服务(负载平衡),那么这一过程的一个有用副产品可能是跨多个服务器整合用户活动。

根据数据量的不同,日志数据的批量处理本身可能需要相当大的计算能力,多台机器处理服务器日志的不同子集,然后这些中间数据会再次减少。

GoogleSawzall是一个非常大规模的分布式数据处理系统的例子。我相信Sawzall现在(或曾经)在谷歌被用来处理服务器访问日志,以检测欺诈广告点击模式。

不,它在web服务器场多服务器环境中是不可行的。

  • 在ASP.Net Web场中存储会话状态

  • 允许在Web场中进行会话?StateServer足够好吗?

  • 为您的Web应用程序提供快速、可扩展和安全的会话状态管理

  • ASP.NET会话状态

  • 会话状态模式

状态模式选项为:

  • InProc模式,将会话状态存储在Web服务器的内存中这是默认设置

  • StateServer模式,它将会话状态存储在一个称为ASP.NET状态服务的单独进程中。这样可以确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。

  • SQLServer模式将会话状态存储在SQLServer数据库中。这样可以确保在重新启动Web应用程序时保留会话状态,并使会话状态可用于Web场中的多个Web服务器。

  • 自定义模式,使您能够指定自定义存储提供程序。

  • 关闭(禁用会话状态)

通常,这就是应用程序状态的用途。

相关文章: