加入收藏 | 设为首页 | 会员中心 | 我要投稿 应用网_丽江站长网 (http://www.0888zz.com/)- 科技、建站、数据工具、云上网络、机器学习!
当前位置: 首页 > 站长资讯 > 外闻 > 正文

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

发布时间:2019-04-13 06:20:40 所属栏目:外闻 来源:博客园
导读:副标题#e# 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)法

前面几种方法费尽心思来实现服务消费者请求次数分配的均衡,当然这么做是没错的,可以为后端的多台服务器平均分配工作量,最大程度地提高服务器的利用率,但是实际情况是否真的如此?实际情况中,请求次数的均衡真的能代表负载的均衡吗?这是一个值得思考的问题。

上面的问题,再换一个角度来说就是:以后端服务器的视角来观察系统的负载,而非请求发起方来观察。最小连接数法便属于此类。

最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有 快有慢,它正是根据后端服务器当前的连接情况,动态地选取其中当前积压连接数最少的一台服务器来处理当前请求,尽可能地提高后端服务器的利用效率,将负载 合理地分流到每一台机器。由于最小连接数设计服务器连接数的汇总和感知,设计与实现较为繁琐,此处就不说它的实现了。

(编辑:应用网_丽江站长网)

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

热点阅读