负载均衡器 - 如何为自定义应用程序编写一个?

时间:2010-05-25 18:53:26

标签: load-balancing

我编写了一个简单的服务器应用程序,它将在几台机器上运行。

我的问题是网络负载均衡器通常如何工作?

我听说过循环法和其他算法,但我没有得到答案的是这个过程到底是怎么回事?在套接字方面。

客户端连接到其中一台负载均衡器机器,要求“免费连接”服务器并简单地连接到它? 这是我能想到的最简单的方式 ..或者,它是否使用负载均衡器作为代理(这意味着所有NB必须始终连接到应用程序服务器,并通过它们传输数据)?

这更像是一个普遍的问题。你会怎么做?

谢谢大家!

1 个答案:

答案 0 :(得分:13)

有几种不同的方法可以对应用程序进行负载均衡。有些是位于路由器和服务器之间的物理设备;一些是基于软件的,在每个负载平衡设备上运行一些代码。

Microsoft在Windows中内置了负载均衡,这是基于软件的。这很好,很容易设置。

但是,我会介绍物理路线。

这里有几种算法,但主要的是Round Robin,可选择“粘性”会话。在这种情况下,粘滞意味着负载均衡器将尝试以保留客户端的历史记录并将来自同一客户端的请求转发到同一台计算机。这意味着负载均衡器需要保留客户端列表以及它指向这些客户端的位置。根据缓存大小,客户端可能会从列表中删除,并且在将来的请求中,它们可能会转发到其他服务器。

Round Robin是一个非常简单的想法。对于每个请求,将其发送到列表中的下一个服务器。更复杂的算法可能会考虑到特定服务器的请求数量以及这些请求需要多长时间;然后尝试重新平衡新请求以支持更快的服务器。这部分很复杂。