日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網(wǎng)為廣大站長提供免費(fèi)收錄網(wǎng)站服務(wù),提交前請做好本站友鏈:【 網(wǎng)站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(wù)(50元/站),

點(diǎn)擊這里在線咨詢客服
新站提交
  • 網(wǎng)站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747


負(fù)載均衡常見算法

 

相關(guān)知識點(diǎn)

冷備與熱備

  • 冷備份(cool standby),指配備平時不運(yùn)行的備用設(shè)備,當(dāng)運(yùn)行設(shè)備發(fā)生故障時,使用備用設(shè)備替換。
  • 熱備份(hot standby),指在設(shè)備運(yùn)行的同時運(yùn)行備用設(shè)備,當(dāng)運(yùn)行設(shè)備發(fā)生故障時,能夠自動替換備用設(shè)備。

fail-over與fail-back

  • fail-over,在空余結(jié)構(gòu)中,停止運(yùn)行設(shè)備,使用備用設(shè)備進(jìn)行工作的過程稱為替換,英文稱為fail-over或者switch-over。
  • fail-back,替換后再次恢復(fù)到原來的運(yùn)行設(shè)備,也就是從運(yùn)行狀態(tài)的備用設(shè)備再切換到原來的運(yùn)行設(shè)備的過程,稱為回退,英文稱為fail-back或switch-back。

冗余類型

  • 1.主備方式(Active-Standby)
  • 準(zhǔn)備兩臺路由器,其中一臺作為正常運(yùn)行業(yè)務(wù)的活躍設(shè)備(active),也可以稱為主設(shè)備(master)或者首要設(shè)備(primary)。另一臺作為發(fā)生故障時替換的備用設(shè)備(standby),也可以稱為備機(jī)(backup)、從設(shè)備(slave)、必要設(shè)備(secondary)。活躍設(shè)備和備用設(shè)備必須共享關(guān)于設(shè)備的設(shè)置信息。
  • 2.雙活方式(Active-Active)
  • 準(zhǔn)備兩臺路由器,其中一臺作為首要設(shè)備(primary),另一臺作為次要設(shè)備(secondary),二者同時運(yùn)行來組成冗余結(jié)構(gòu)。這種方式可以通過與負(fù)載均衡設(shè)備并用或者設(shè)置DNS、客戶端一側(cè)的路由信息來達(dá)到負(fù)載均衡的目的。
  • 3.集群方式(Cluster)
  • 在主備方式或雙活方式中,使用3臺以上的硬件協(xié)同組成冗余結(jié)構(gòu)的方式。

 

什么是負(fù)載均衡

負(fù)載均衡,英文名稱為Load Balance,指由多臺服務(wù)器以對稱的方式組成一個服務(wù)器集合,每臺服務(wù)器都具有等價的地位,都可以單獨(dú)對外提供服務(wù)而無須其他服務(wù)器的輔助。通過某種負(fù)載分擔(dān)技術(shù),將外部發(fā)送來的請求均勻分配到對稱結(jié)構(gòu)中的某一臺服務(wù)器上,而接收到請求的服務(wù)器獨(dú)立地回應(yīng)客戶的請求。負(fù)載均衡能夠平均分配客戶請求到服務(wù)器陣列,借此提供快速獲取重要數(shù)據(jù),解決大量并發(fā)訪問服務(wù)問題,這種集群技術(shù)可以用最少的投資獲得接近于大型主機(jī)的性能。

負(fù)載均衡算法在很多地方都有使用,無論是在服務(wù)治理中或者是在分布式緩存中都大量的使用,本文主要介紹幾種常見的負(fù)載均衡的算法.

1.輪詢法

 

輪詢法,很好理解,將請求按照順序輪流的分配到服務(wù)器上,他均衡的對待每一臺后端的服務(wù)器,不關(guān)心服務(wù)器的的連接數(shù)和負(fù)載情況.以下代碼演示了這種算法.

 1public class BalanceServer {
 2 public static List<String> servers = 
 3Arrays.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 }
20}

 

輪詢的策略目的在于請求的絕對均衡,但是在實(shí)際的情況下,可能服務(wù)器并不是完全一樣,導(dǎo)致有些性能高的服務(wù)器不能完全發(fā)揮出來.

2.隨機(jī)法

 

通過系統(tǒng)的隨機(jī)函數(shù),根據(jù)后端服務(wù)器列表的大小來隨機(jī)獲取其中的一臺來訪問,隨著調(diào)用量的增大,實(shí)際效果越來越近似于平均分配到?jīng)]一臺服務(wù)器.和輪詢的效果類似, 代碼如下:

 1public 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 }
12}

 

和輪詢算法比較,在并發(fā)的場景下,輪詢需要加鎖,隨機(jī)法想比而言性能好點(diǎn).

3.源地址hash法

源地址hash法的思想是獲取客戶端訪問的ip地址,通過hash函數(shù)計算出一個hash值,用該hash值對服務(wù)器列表的大小進(jìn)行取模運(yùn)算,得到的值就是要訪問的服務(wù)器的序號,代碼如下:

 1public 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 }
12}

 

hash法的好處是,在服務(wù)器列表不變的情況下,每次客戶端訪問的服務(wù)器都是同一個服務(wù)器.利用這個特性可以有狀態(tài)的session會話.無需額外的操作就可以實(shí)現(xiàn)粘性會話.

4.加權(quán)輪詢法

剛剛有說道過,不同的服務(wù)器性能不同,所以不能一概而論,需要給性能低的服務(wù)器給比較低的權(quán)重,性能高的給跟高的權(quán)重,代碼如下:

 1public class BalanceServer {
 2 public static Map<String, Integer> serverMap = new HashMap<String, Integer>();
 3 public static int pos = 0;
 4 static {
 5 serverMap.put("192.168.0.1", 1);
 6 serverMap.put("192.168.0.2", 1);
 7 serverMap.put("192.168.0.3", 4);
 8 serverMap.put("192.168.0.4", 3);
 9 serverMap.put("192.168.0.5", 3);
10 serverMap.put("192.168.0.6", 2);
11 }
12 public static String getServer() {
13 Set<String> keySet = serverMap.keySet();
14 Iterator<String> it = keySet.iterator();
15 List<String> servers = new ArrayList<String>();
16 while (it.hasNext()) {
17 String server = it.next();
18 Integer weight = serverMap.get(server);
19 for (int i = 0; i < weight; i++) {
20 servers.add(server);
21 }
22 }
23 String server = null;
24 if (pos >= servers.size()) {
25 pos = 0;
26 }
27 server = servers.get(pos);
28 pos++;
29 return server;
30 }
31 public static void main(String[] args) {
32 for(int i=0;i<14;i++){
33 System.out.println(BalanceServer.getServer());
34 }
35 }
36}

 

5.加權(quán)隨機(jī)法

 

與加權(quán)輪詢法類似,加權(quán)隨機(jī)法也是根據(jù)后端服務(wù)器不同的配置和負(fù)載情況來配置不同的權(quán)重。不同的是,它是按照權(quán)重來隨機(jī)選擇服務(wù)器的,而不是順序。加權(quán)隨機(jī)法的代碼實(shí)現(xiàn)如下:

 1public class WeightRandom
 2{
 3 public static String getServer()
 4 {
 5 // 重建一個Map,避免服務(wù)器的上下線導(dǎo)致的并發(fā)問題
 6 Map<String, Integer> serverMap = 
 7 new HashMap<String, Integer>();
 8 serverMap.putAll(IpMap.serverWeightMap);
 9 // 取得Ip地址List
10 Set<String> keySet = serverMap.keySet();
11 Iterator<String> iterator = keySet.iterator();
12 List<String> serverList = new ArrayList<String>();
13 while (iterator.hasNext())
14 {
15 String server = iterator.next();
16 int weight = serverMap.get(server);
17 for (int i = 0; i < weight; i++)
18 serverList.add(server);
19 }
20 JAVA.util.Random random = new java.util.Random();
21 int randomPos = random.nextInt(serverList.size());
22 return serverList.get(randomPos);
23 }
24}

分享到:
標(biāo)簽:負(fù)載均衡
用戶無頭像

網(wǎng)友整理

注冊時間:

網(wǎng)站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網(wǎng)站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網(wǎng)站吧!
最新入駐小程序

數(shù)獨(dú)大挑戰(zhàn)2018-06-03

數(shù)獨(dú)一種數(shù)學(xué)游戲,玩家需要根據(jù)9

答題星2018-06-03

您可以通過答題星輕松地創(chuàng)建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學(xué)四六

運(yùn)動步數(shù)有氧達(dá)人2018-06-03

記錄運(yùn)動步數(shù),積累氧氣值。還可偷

每日養(yǎng)生app2018-06-03

每日養(yǎng)生,天天健康

體育訓(xùn)練成績評定2018-06-03

通用課目體育訓(xùn)練成績評定