欧博正网网站隐私政策_Java进阶之真切通晓负载平衡的五种算法终了旨趣
发布日期:2023-10-30 01:23    点击次数:118

欧博正网网站隐私政策_Java进阶之真切通晓负载平衡的五种算法终了旨趣

欧博正网网站隐私政策_

 新2网址本文转载自微信公众号「Android建筑编程」,作家Android建筑编程。转载本文请相干Android建筑编程公众号。

媒介

什么是负载平衡:

指由多台做事器以对称的神气构成一个做事器皆集,每台做事器都具有等价的地位,都不错单独对外提供做事而不消其他做事器的缓助。通过某种 负载摊派本事,将外部发送来的肯求均匀分拨到对称结构中的某一台做事器上,而吸收到肯求的做事器独随即恢复客户的肯求。负载平衡草率对等分拨客户肯求到服 务器阵列,借此提供快速获取迫切数据,处置多量并发访谒做事问题,这种集群本事不错用最少的投资获取接近于大型主机的性能;

今天咱们就来说说;

一、负载平衡算法简介

银河娱乐网站

1、轮询法

皇冠体育搭建教程

将肯求按规章轮替地分拨到后端做事器上,它平衡地对待后端的每一台做事器,而不热心做事器实质的聚拢数和刻下的系统负载;

皇冠hg86a

2、偶然法

通过系统的偶然算法,凭证后端做事器的列表大小值来偶然收用其中的一台做事器进行访谒。由概率统计表面不错得知,跟着客户端调用做事端的次数加多,其实质遵循越来越接近于对等分拨调用量到后端的每一台做事器,也就是轮询的收尾;

3、源地址哈希法

源地址哈希的想想是凭证获取客户端的IP地址,通过哈希函数筹备得到的一个数值,用该数值对做事器列表的大小进行取模运算,得到的收尾即是客服端要访谒做事器的序号。经受源地址哈希法进行负载平衡,淹没IP地址的客户端,当后端做事器列表不变时,它每次都会映射到淹没台后端做事器进行访谒;

皇冠客服飞机:@seo3687

4、加权轮询法

不同的后端做事器可能机器的建立和刻下系统的负载并不相通,因此它们的抗压智商也不相通。给建立高、负载低的机器建立更高的权重,让其处理更多的请;而建立低、负载高的机器,欧博百家乐给其分拨较低的权重,镌汰其系统负载,加权轮询能很好地处理这一问题,并将肯求规章且按照权重分拨到后端;

博彩秘籍皇冠体育信用

5、加权偶然法

与加权轮询法雷同,加权偶然法也凭证后端机器的建立,系统的负载分拨不同的权重。不同的是,它是按照权重偶然肯求后端做事器,而非规章;

中科星图8月8日在互动平台表示,公司暂无国资云相关业务。

二、代码终了负载平衡五种算法

1.轮询法

欧博正网
import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class TestRoundRobin {      // 1.界说map, key-ip,value-weight     static Map<String,Integer> ipMap=new HashMap<>();     static {         ipMap.put("192.168.13.1",1);         ipMap.put("192.168.13.2",1);         ipMap.put("192.168.13.3",1);     }   // Integer sum=0;     Integer  pos = 0;     public String RoundRobin(){         Map<String,Integer> ipServerMap=new ConcurrentHashMap<>();         ipServerMap.putAll(ipMap);         // 2.取出来key,放到set中         Set<String> ipset=ipServerMap.keySet();         // 3.set放到list,要轮回list取出         ArrayList<String> iplist=new ArrayList<String>();         iplist.addAll(ipset);         String serverName=null;         // 4.界说一个轮回的值,要是大于set就从0开动         synchronized(pos){             if (pos>=ipset.size()){                 pos=0;             }             serverName=iplist.get(pos);             //轮询+1             pos ++;         }         return serverName;     }     public static void main(String[] args) {         TestRoundRobin testRoundRobin=new TestRoundRobin();         for (int i=0;i<10;i++){             String serverIp=testRoundRobin.RoundRobin();             System.out.println(serverIp);         }     } } 

2.加权轮询法

import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class TestWeightRobin {     //    1.map, key-ip,value-weight     static Map<String,Integer> ipMap=new HashMap<>();     static {         ipMap.put("192.168.13.1",1);         ipMap.put("192.168.13.2",2);         ipMap.put("192.168.13.3",4);     }     Integer pos=0;     public String WeightRobin(){         Map<String,Integer> ipServerMap=new ConcurrentHashMap<>();         ipServerMap.putAll(ipMap);         Set<String> ipSet=ipServerMap.keySet();         Iterator<String> ipIterator=ipSet.iterator();         //界说一个list放悉数server         ArrayList<String> ipArrayList=new ArrayList<String>();         //轮回set,凭证set中的不错去得知map中的value,给list中添加对应数字的server数目         while (ipIterator.hasNext()){             String serverName=ipIterator.next();             Integer weight=ipServerMap.get(serverName);             for (int i = 0;i < weight ;i++){                 ipArrayList.add(serverName);             }         }         String serverName=null;         if (pos>=ipArrayList.size()){             pos=0;         }         serverName=ipArrayList.get(pos);         //轮询+1         pos ++;         return  serverName;     }     public static void main(String[] args) {         TestWeightRobin testWeightRobin=new TestWeightRobin();         for (int i =0;i<10;i++){             String server=testWeightRobin.WeightRobin();             System.out.println(server);         }     } } 

3.偶然法

网站隐私政策
import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class TestRandom {     //    1.界说map, key-ip,value-weight     static Map<String,Integer> ipMap=new HashMap<>();     static {         ipMap.put("192.168.13.1",1);         ipMap.put("192.168.13.2",2);         ipMap.put("192.168.13.3",4);     }     public String Random() {         Map<String,Integer> ipServerMap=new ConcurrentHashMap<>();         ipServerMap.putAll(ipMap);         Set<String> ipSet=ipServerMap.keySet();         //界说一个list放悉数server         ArrayList<String> ipArrayList=new ArrayList<String>();         ipArrayList.addAll(ipSet);         //轮回偶然数         Random random=new Random();         //偶然数在list数目中取(1-list.size)         int pos=random.nextInt(ipArrayList.size());         String serverNameReturn= ipArrayList.get(pos);         return  serverNameReturn;     }     public static void main(String[] args) {         TestRandom testRandom=new TestRandom();         for (int i =0;i<10;i++){             String server=testRandom.Random();             System.out.println(server);         }     } } 

4.加权偶然

皇冠博彩官网
import java.util.*; import java.util.concurrent.ConcurrentHashMap; public class TestRobinRandom {     //    1.界说map, key-ip,value-weight     static Map<String,Integer> ipMap=new HashMap<>();     static {         ipMap.put("192.168.13.1",1);         ipMap.put("192.168.13.2",2);         ipMap.put("192.168.13.3",4);     }     public String RobinRandom(){         Map<String,Integer> ipServerMap=new ConcurrentHashMap<>();         ipServerMap.putAll(ipMap);         Set<String> ipSet=ipServerMap.keySet();         Iterator<String> ipIterator=ipSet.iterator();         //界说一个list放悉数server         ArrayList<String> ipArrayList=new ArrayList<String>();         //轮回set,凭证set中的不错去得知map中的value,给list中添加对应数字的server数目         while (ipIterator.hasNext()){             String serverName=ipIterator.next();             Integer weight=ipServerMap.get(serverName);             for (int i=0;i<weight;i++){                 ipArrayList.add(serverName);             }         }         //轮回偶然数         Random random=new Random();         //偶然数在list数目中取(1-list.size)         int pos=random.nextInt(ipArrayList.size());         String serverNameReturn= ipArrayList.get(pos);         return  serverNameReturn;     }     public static void main(String[] args) {         TestRobinRandom testRobinRandom=new TestRobinRandom();         for (int i =0;i<10;i++){             String server=testRobinRandom.RobinRandom();             System.out.println(server);         }     } } 

5.源地址哈希法

最近,皇冠体育博彩平台在博彩游戏和赛事直播方面加大了力度,不断推出最新、最热门的博彩游戏和赛事直播。我们提供最专业的博彩攻略和技巧分享,让您在博彩游戏中尽情享受乐趣和收益。我们的平台操作简便,充值提款方便快捷,是您最值得信赖的博彩选择。
import java.util.ArrayList; import java.util.HashMap; import java.util.Map; import java.util.Set; import java.util.concurrent.ConcurrentHashMap; public class ipHash {     //    1.界说map, key-ip,value-weight     static Map<String,Integer> ipMap=new HashMap<>();     static {         ipMap.put("192.168.13.1",1);         ipMap.put("192.168.13.2",2);         ipMap.put("192.168.13.3",4);     }     public String ipHash(String clientIP){         Map<String,Integer> ipServerMap=new ConcurrentHashMap<>();         ipServerMap.putAll(ipMap);         //    2.取出来key,放到set中         Set<String> ipset=ipServerMap.keySet();         //    3.set放到list,要轮回list取出         ArrayList<String> iplist=new ArrayList<String>();         iplist.addAll(ipset);         //对ip的hashcode值取尾数,每次都雷同的         int hashCode=clientIP.hashCode();         int serverListsize=iplist.size();         int pos=hashCode%serverListsize;         return iplist.get(pos);     }     public static void main(String[] args) {         ipHash iphash=new ipHash();         String servername= iphash.ipHash("192.168.21.2");         System.out.println(servername);     } } 
回首 

逆水行舟,沿路加油!