【发布时间】:2012-02-13 23:43:50
【问题描述】:
我正在使用带有 C# 的 asp.net 4.0,我的应用程序托管在由 2 个带有负载均衡器的服务器组成的网络场上,现在我想在每台服务器上创建网络花园,以便为应用程序分配多个进程(以提高应用程序性能)。是否可以在 webfarm 内创建网络花园。如果是,那么我需要做哪些更改,所有 asp.net 控件和状态 mgmtlike 会话应用程序,缓存工作正常,或者我需要为此做一些设置请建议。
谢谢
【问题讨论】:
我正在使用带有 C# 的 asp.net 4.0,我的应用程序托管在由 2 个带有负载均衡器的服务器组成的网络场上,现在我想在每台服务器上创建网络花园,以便为应用程序分配多个进程(以提高应用程序性能)。是否可以在 webfarm 内创建网络花园。如果是,那么我需要做哪些更改,所有 asp.net 控件和状态 mgmtlike 会话应用程序,缓存工作正常,或者我需要为此做一些设置请建议。
谢谢
【问题讨论】:
从您拥有网络农场的那一刻起,网络花园就必须毫无问题地工作。
网络农场是指您添加 2 台或更多计算机来运行实际上相同的内容。
Web garder 是指您在一台计算机上为同一应用程序添加 2 个或多个工作进程。
您需要注意的是数据的同步。两台计算机和每个工作流程上的数据必须相同。从您准备好网络农场的那一刻起,我假设您在两台计算机共用的数据库上使用会话,因此将在网络花园中使用相同的会话。
另外我想如果你使用数据库,这是两台电脑共享的,你写数据的时候要注意同步。
在使用锁的线程内、在网络花园内使用互斥锁以及在网络农场+网络花园内使用计算机之间或数据库的某些部分的通用互斥锁文件名完成同步。
如果你不写任何数据,那么你不需要除了公共会话数据库之外的其他同步。在这里你必须注意的所有额外的想法都是公共数据。
如果您使用 Inproc 会话,则会话将保存在每台计算机的内存中。
现在,如果负载平衡器小心地将来自同一用户的所有调用发送到同一台计算机,它将起作用。
如果不进行负载平衡以将来自同一用户的所有呼叫发送到同一台计算机,那么据您了解,同一用户可能有两个不同的会话数据,每台计算机上一个,并且因为会话保持在同一个 cookie 上名字你可能对会话搞砸了。
【讨论】:
【讨论】: