内容简介:本文简单记录了一下最少连接策略以及带权重的最少连接策略这两个负载均衡策略的实现方法, 当然还有其他的实现方法欢迎一起探讨。
最少连接 (Least Connection)
最少连接策略指的是从已有的后端列表中选择正在处理的连接数/请求数(对于七层负载均衡器来说可能更多的是说的最少请求数) 最少的节点出来提供服务。
既然要判断连接数/请求数,那么每个节点都需要保存一个正在处理的连接数/请求数的信息,然后选取节点的时候判断一下, 选择连接数最少的那个节点。
用 python 简单表示就是:
class Node:
def __init__(self, name):
self.name = name
self.connections = 0
def __repr__(self):
return '<Node: {}, conn: {}>'.format(self.name, self.connections)
class LC:
def __init__(self, nodes):
self.nodes = nodes
def select(self):
best = None
for node in self.nodes:
if best is None or node.connections < best.connections:
best = node
best.connections += 1
return best
def release(self, node):
node.connections -= 1
带权重的最少连接 (Weighted Least Connection)
实际使用中各个节点往往都带有不同的权重,比较连接数时需要同时考虑节点的权重信息, 被选中的节点的连接数与权重的比要最小。 即,被选中的节点满足下面的条件:
- 假设用 C 表示连接数、W 表示权重、S 表示被选中的节点、Sn 表示未被选中的节点
- 那么 S 必须满足 C(S) / W(S) < C(Sn) / W(Sn) ,这个条件也可以表示为 C(S) * W(Sn) < C(Sn) * W(S)
用 python 简单表示就是:
class Node:
def __init__(self, name, weight):
self.name = name
self.weight = weight
self.connections = 0
def __repr__(self):
return '<Node: {}, weight: {}, conn: {}>'.format(
self.name, self.weight, self.connections)
class LC:
def __init__(self, nodes):
self.nodes = nodes
def select(self):
best = None
for node in self.nodes:
if best is None or (
node.connections * best.weight
) < (best.connections * node.weight):
best = node
best.connections += 1
return best
def release(self, node):
node.connections -= 1
本文简单记录了一下最少连接策略以及带权重的最少连接策略这两个负载均衡策略的实现方法, 当然还有其他的实现方法欢迎一起探讨。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
一本书读懂24种互联网思维
安杰 / 台海出版社 / 2015-3-1 / 39.80元
互联网思维已经不再局限于互联网,与当初人类史上的“文艺复兴”一样,这种思维的核心即将开始扩散开去,对整个大时代造成深远的影响。本书是深入研究互联网思维的精华之作,作者深入浅出地集中阐述了24种互联网思维的内核与精神,并结合实例对这24种互联网思维逐一进行了点评。对于个人与企业如何抓住互联网思维背后正喷薄而出的工作、生活、商业上的大革新与大机遇,如何在互联网思维下进行运作,如何运用互联网思维进行升级......一起来看看 《一本书读懂24种互联网思维》 这本书的介绍吧!