通过硬件负载均衡器,你可以配置粘性会话,以确保相同的会话始终进入同一台服务器。但是这对 WebServices 也适用吗(而不仅仅是 Web 服务器)?例如,我有一个 WebServices 托管在负载均衡器后面。来自不同本地客户端(而不是浏览器客户端)的 Webservice 调用是否总是进入同一个 Webservice 服务器?这些是非常老式的 WebServices——使用 RPC/Encoding——原生客户端程序使用 Axis 1.4 作为客户端存根。
如果您能保持应用程序无状态,那么它在性能和可扩展性方面都很好。
无状态的好处:
可扩展性。您可以拥有尽可能多的服务器而不必共享用户会话。每个服务器都可以处理请求(例如通过轮询进行负载平衡)。
节省服务器资源。我们不需要在服务器端分配内存(再次提到可扩展性)。
无需在服务器重新启动后恢复。
会话粘滞可能很难正确实现。例如,如果您的Web服务器运行在多核机器上,并且有几个进程处理Web流量,则需要一种方法来同时粘滞到特定的机器和该机器上的单个进程。因此,请确保您的系统在粘滞性无法正常工作的情况下能够良好降级。
您可以在这里找到有关讨论:Sticky and NON-Sticky sessions
粘性会话的优缺点: 粘性会话/会话亲和负载平衡策略的优缺点?
现在来回答你的问题:
来自不同本地客户端(而非浏览器客户端)的Web服务调用是否总是发送到同一Web服务服务器?
在粘性会话中是的。
这些是非常老式的Web服务-使用RPC /编码-本地客户端程序使用Axis 1.4作为客户端存根。
您需要负载均衡器/服务器的会话配置,它可以处理任何旧型或新型应用程序。
这也适用于Web服务(而不是Web服务器)吗?
不是,这需要在服务器级别进行配置。