加入收藏 | 设为首页 | 会员中心 | 我要投稿 河北网 (https://www.hebeiwang.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 建站 > 正文

负载均衡常见算法,你知道几个?

发布时间:2019-09-02 12:51:25 所属栏目:建站 来源:佚名
导读:冷备与热备 冷备份(cool standby),指配备平常不运行的备用装备,当运行装备产生妨碍时,行使备用装备替代。 热备份(hot standby),指在装备运行的同时运行备用装备,当运行装备产生妨碍时,可以或许自动替代备用装备。 fail-over与fail-back fail-over,在空
副问题[/!--empirenews.page--]

 负载平衡常见算法,你知道几个?

负载平衡常见算法,你知道几个?

冷备与热备

  • 冷备份(cool standby),指配备平常不运行的备用装备,当运行装备产生妨碍时,行使备用装备替代。
  • 热备份(hot standby),指在装备运行的同时运行备用装备,当运行装备产生妨碍时,可以或许自动替代备用装备。

fail-over与fail-back

  • fail-over,在空余布局中,遏制运行装备,行使备用装备举办事变的进程称为替代,英文称为fail-over可能switch-over。
  • fail-back,替代后再次规复到原本的运行装备,也就是从运行状态的备用装备再切换到原本的运行装备的进程,称为回退,英文称为fail-back或switch-back。

冗余范例

1.主备方法(Active-Standby)

筹备两台路由器,个中一台作为正常运行营业的活泼装备(active),也可以称为主装备(master)可能主要装备(primary)。另一台作为产生妨碍时替代的备用装备(standby),也可以称为备机(backup)、从装备(slave)、须要装备(secondary)。活泼装备和备用装备必需共享关于装备的配置信息。

2.双活方法(Active-Active)

筹备两台路由器,个中一台作为主要装备(primary),另一台作为次要装备(secondary),二者同时运行来构成冗余布局。这种方法可以通过与负载平衡装备并用可能配置DNS、客户端一侧的路由信息来到达负载平衡的目标。

3.集群方法(Cluster)

在主备方法或双活方法中,行使3台以上的硬件协同构成冗余布局的方法。

什么是负载平衡

负载平衡,英文名称为Load Balance,指由多台处事器以对称的方法构成一个处事器荟萃,每台处事器都具有等价的职位,都可以单独对外提供处事而无须其他处事器的帮助。通过某种负载分管技能,将外部发送来的哀求匀称分派到对称布局中的某一台处事器上,而吸取到哀求的处事器独立地回应客户的哀求。负载平衡可以或许均匀分派客户哀求随处事器阵列,借此提供快速获取重要数据,办理大量并发会见处事题目,这种集群技能可以用起码的投资得到靠近于大型主机的机能。

负载平衡算法在许多处所都有行使,无论是在处事管理中可能是在漫衍式缓存中都大量的行使,本文首要先容几种常见的负载平衡的算法.

1.轮询法

轮询法,很好领略,将哀求凭证次序轮番的分派随处事器上,他平衡的看待每一台后端的处事器,不体谅处事器的的毗连数和负载环境.以下代码演示了这种算法.

  1. public class BalanceServer { 
  2.  public static List<String> servers =  
  3. Arrays.asList("192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", 
  4.  "192.168.0.5"); 
  5.  public static int pos = 0; 
  6.  public static String getServer() { 
  7.  String server = null; 
  8.  if (pos >= servers.size()) { 
  9.  pos = 0; 
  10.  } 
  11.  server = servers.get(pos); 
  12.  pos++; 
  13.  return server; 
  14.  } 
  15.  public static void main(String[] args) { 
  16.  for(int i=0;i<10;i++){ 
  17.  System.out.println(BalanceServer.getServer()); 
  18.  } 
  19.  } 

轮询的计策目标在于哀求的绝对平衡,可是在现实的环境下,也许处事器并不是完全一样,导致有些机能高的处事器不能完全施展出来.

2.随机法

通过体系的随机函数,按照后端处事器列表的巨细来随机获取个中的一台来会见,跟着挪用量的增大,现实结果越来越近似于均匀分派到没一台处事器.和轮询的结果相同, 代码如下:

  1. public class BalanceServer { 
  2.  public static List<String> servers = Arrays.asList("192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", 
  3.  "192.168.0.5"); 
  4.  public static int pos = 0; 
  5.  public static String getServer() { 
  6.  String server = null; 
  7.  Random random = new Random(); 
  8.  int randomPos = random.nextInt(servers.size()); 
  9.  server = servers.get(randomPos); 
  10.  return server; 
  11.  } 

和轮询算法较量,在并发的场景下,轮询必要加锁,随机法想比而言机能好点.

3.源地点hash法

源地点hash法的头脑是获取客户端会见的ip地点,通过hash函数计较出一个hash值,用该hash值对处事器列表的巨细举办取模运算,获得的值就是要会见的处事器的序号,代码如下:

  1. public class BalanceServer { 
  2.  public static List<String> servers = Arrays.asList("192.168.0.1", "192.168.0.2", "192.168.0.3", "192.168.0.4", 
  3.  "192.168.0.5"); 
  4.  public static int pos = 0; 
  5.  public static String getServer(String ip) { 
  6.  String server = null; 
  7.  int hashCode = ip.hashCode(); 
  8.  pos = hashCode % servers.size(); 
  9.  server = servers.get(pos); 
  10.  return server; 
  11.  } 

hash法的甜头是,在处事器列表稳固的环境下,每次客户端会见的处事器都是统一个处事器.操作这个特征可以有状态的session会话.无需特另外操纵就可以实现粘性会话.

4.加权轮询法

(编辑:河北网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

热点阅读