成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

負載均衡常見算法,你知道幾個?

開發 后端 算法
負載均衡,英文名稱為Load Balance,指由多臺服務器以對稱的方式組成一個服務器集合,每臺服務器都具有等價的地位,都可以單獨對外提供服務而無須其他服務器的輔助。

 [[275226]]

冷備與熱備

  • 冷備份(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.加權輪詢法

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

  1. public 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. 35 } 
  36. 36} 

5.加權隨機法

與加權輪詢法類似,加權隨機法也是根據后端服務器不同的配置和負載情況來配置不同的權重。不同的是,它是按照權重來隨機選擇服務器的,而不是順序。加權隨機法的代碼實現如下:

  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.  // 取得Ip地址List 
  9.  Set<String> keySet = serverMap.keySet(); 
  10.  Iterator<String> iterator = keySet.iterator(); 
  11.  List<String> serverList = new ArrayList<String>(); 
  12.  while (iterator.hasNext()) 
  13.  { 
  14.  String server = iterator.next(); 
  15.  int weight = serverMap.get(server); 
  16.  for (int i = 0; i < weight; i++) 
  17.  serverList.add(server); 
  18.  } 
  19.  java.util.Random random = new java.util.Random(); 
  20.  int randomPos = random.nextInt(serverList.size()); 
  21.  return serverList.get(randomPos); 
  22.  } 

 

責任編輯:武曉燕 來源: 今日頭條
相關推薦

2025-05-13 02:10:00

2010-05-10 15:35:27

負載均衡技術

2023-11-28 15:32:30

負載均衡算法

2019-12-27 09:29:46

負載均衡算法哈希算法

2018-07-26 08:42:11

2022-07-20 09:06:27

Hook封裝工具庫

2021-10-14 06:52:47

算法校驗碼結構

2010-05-04 16:10:51

負載均衡算法

2022-07-03 23:26:38

DOMHook封裝

2019-12-26 09:13:00

算法硬件軟件

2019-03-05 11:22:17

操作系統調度算法

2019-12-25 11:22:19

負載均衡集群算法

2019-10-17 16:02:44

高并發緩存瀏覽器

2023-12-06 14:23:24

2019-09-10 15:45:09

HTML5前端框架

2023-09-01 15:22:31

負載均衡服務器端客戶端

2023-04-27 08:15:09

2018-04-10 10:49:17

負載均衡算法服務器

2010-04-20 12:59:22

負載均衡實施要素

2024-01-18 00:16:07

點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 亚洲一区中文字幕 | 国产精品一二区 | 国产91av视频在线观看 | 久久高清| 九九亚洲 | 国产精品国产馆在线真实露脸 | 欧美久久一区二区三区 | 久久国产精品一区二区三区 | 日韩欧美三级电影 | 国产精品成人在线播放 | 91精品国产91久久久久久吃药 | 亚洲三级在线观看 | 国产一区二区在线免费 | 日韩成人精品 | 欧美九九九 | 成人在线亚洲 | 日日爱夜夜操 | h网站在线观看 | 日韩一区二区三区四区五区 | 免费a v网站 | 久久综合亚洲 | 久久综合av | 欧美国产日本一区 | www.av在线 | 91久久国产综合久久91精品网站 | 蜜臀久久| 人妖一区 | 亚洲国产一区在线 | 亚洲成年影院 | 亚洲欧美中文字幕在线观看 | 中文字字幕一区二区三区四区五区 | 日韩av在线一区二区 | 国产一区二区三区久久久久久久久 | 久久综合狠狠综合久久综合88 | 国产乱码高清区二区三区在线 | 91精品久久久久久久久久入口 | 天天天操| 国产午夜精品一区二区三区四区 | 亚洲天堂999 | 亚洲精品www久久久 www.蜜桃av | 国产性色视频 |