感谢您花时间阅读我的问题。
我对负载均衡服务器有一些基本的疑虑。
我假设一台应用程序托管在两台服务器上,当一台服务器负载很重时,负载均衡器正在将处理特定请求的职责转交给另一台服务器。
这就是我对负载均衡器的假设。
管理和监控负载并执行所有请求转移?
如何处理静态变量?对于ex:, - 我有一个名为'totalNumberOfClick'的变量。每当我们点击页面时都会增加。
如果GET请求由服务器处理,其POST方法也应该由该服务器管理。对吗?对于Ex:in to-用户正在请求编辑页面,Asp.Net运行时将创建一组viewstate(具有controlID及其值)并在服务器和客户端维护。当我们点击post按钮时,服务器正在验证视图状态并允许它进入服务器并进行其他处理。
如果帖子被转移到另一台服务器,Runtime如何允许它进行处理。
答案 0 :(得分:0)
如果您使用Windows内置的负载平衡,那么有多种选项可以分配负载。服务器彼此保持通信并在它们之间组织负载。
最具扩展性的选项是在所有服务器之间均衡请求。这意味着每个请求最终都可能由不同的服务器处理,因此通常的做法是使用“粘性会话”。它们与用户的IP地址相关联,并确保来自同一用户的所有请求都转到同一服务器。
无法在多个服务器之间共享静态变量,因此您需要将值存储在数据库或其他服务器上。
如果发现主机会话状态(例如stateserver或sql server)没有进程,那么您可以在任何服务器上处理任何请求。 Viewstate允许服务器重新创建生成页面所需的大部分数据。
答案 1 :(得分:0)
我有一些答案。
对于Web应用程序,负载均衡器需要提供什么是calles Session Stickyness 。这意味着一旦选择服务器来为客户端请求服务,只要会话处于活动状态,所有后续请求都将被定向到同一节点。当然,如果您的Web应用程序不依赖于任何必须保留的状态(即无状态,无会话),则不需要这样做。
我认为这可以回答你的第三个问题,甚至可能是你的第二个问题。
您的第一个问题是负载均衡器如何在内部工作。由于我不是专家,我只能猜测每个客户端正在讨论的负载均衡器测量ping响应时间以得出服务器上的估计负载量。也许可以使用更复杂的技术。