首要要介绍活动连接与非活动连接的概念:
活动连接表示用户已经连接到服务器,并且正在数据传输。非活动连接表示已经和服务器建立连接,并且数据已经传输结束,但是还没有断开连接,
如有长连接。对于活动连接因为有数据交换,所以会占用更多的内存;非活动连接只要维护当前会话状态即可,因此需要很小的内存空间(最多几十KB)。
因此要在调度时考虑服务器当前的负载情况,需要区别对待活动连接和非活动连接,甚至可以忽略非活动连接(因为占用很少资源)。
动态调度算法就是根据后端服务器当前的活动连接和非活动连接数来实现请求的调度。动态调度算法常见的有如下几种:
1.最少连接算法(LeastConnection,LC)
通过计算后端服务器当前的活动连接数和非活动连接数的总数,并对多个节点的结果进行比较来决定将请求转发到哪个节点,哪个节点的值最小就将
请求转发到哪个节点。因此这种算法会考虑到每个服务器节点当前的连接数,并挑选一个连接数最小(相对最空闲)的节点进行请求转发。
具体算法:连接数=活动连接数*256 + 非活动连接数
2.加权最少连接(WLC)