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

几种简单的负载均衡算法及其Java代码实现

发布时间:2019-04-19 08:46:29 所属栏目:业界 来源:博客园
导读:1.什么是负载平衡 负载平衡,英文 名称为Load Balance,指由多台处事器以对称的方法构成一个处事器荟萃,每台处事器都具有等价的职位,都可以单独对外提供处事而无须其他处事器的帮助。通过某种 负载分管技能,将外部发送来的哀求匀称分派到对称布局中的某

与加权轮询法相同,加权随机法也是按照后端处事器差异的设置和负载环境来设置差异的权重。差异的是,它是凭证权重来随机选择处事器的,而不是次序。加权随机法的代码实现如下:

  1. public class WeightRandom 
  2.     public static String getServer() 
  3.     { 
  4.         // 重建一个Map,停止处事器的上下线导致的并发题目 
  5.         Map<String, Integer> serverMap =  
  6.                 new HashMap<String, Integer>(); 
  7.         serverMap.putAll(IpMap.serverWeightMap); 
  8.  
  9.         // 取得Ip地点List 
  10.         Set<String> keySet = serverMap.keySet(); 
  11.         Iterator<String> iterator = keySet.iterator(); 
  12.  
  13.         List<String> serverList = new ArrayList<String>(); 
  14.         while (iterator.hasNext()) 
  15.         { 
  16.             String server = iterator.next(); 
  17.             int weight = serverMap.get(server); 
  18.             for (int i = 0; i < weight; i++) 
  19.                 serverList.add(server); 
  20.         } 
  21.  
  22.         java.util.Random random = new java.util.Random(); 
  23.         int randomPos = random.nextInt(serverList.size()); 
  24.  
  25.         return serverList.get(randomPos); 
  26.     } 

这段代码相等于是随机法和加权轮询法的团结,较量好领略,就不表明白。

07.最小毗连数(Least Connections)法

前面几种要领费精心思来实现处事斲丧者哀求次数分派的平衡,虽然这么做是没错的,可觉得后端的多台处事器均匀分派事变量,最洪流平地进步处事器的操作率,可是现实环境是否真的云云?现实环境中,哀求次数的平衡真的能代表负载的平衡吗?这是一个值得思索的题目。

上面的题目,再换一个角度来说就是:往后端处事器的视角来调查体系的负载,而非哀求提倡方来调查。最小毗连数法便属于此类。

最小毗连数算法较量机动和智能,因为后端处事器的设置不尽沟通,对付哀求的处理赏罚有 快有慢,它正是按照后端处事器当前的毗连环境,动态地选取个中当前积存毗连数起码的一台处事器来处理赏罚当前哀求,尽也许地进步后端处事器的操作服从,将负载 公道地分流到每一台呆板。因为最小毗连数计划处事器毗连数的汇总和感知,计划与实现较为繁琐,此处就不说它的实现了。

(编辑:湖南网)

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

热点阅读