讀發佈!設計與部署穩定的分散式系統(第2版)筆記24_互聯層之負載均衡

来源:https://www.cnblogs.com/lying7/archive/2023/07/17/17550330.html
-Advertisement-
Play Games

![](https://img2023.cnblogs.com/blog/3076680/202307/3076680-20230713141300146-1450511408.png) # 1. 水平擴展 ## 1.1. 有助於提高系統的整體容量和韌性 ## 1.2. 現階段構建的幾乎所有系統,都 ...


1. 水平擴展

1.1. 有助於提高系統的整體容量和韌性

1.2. 現階段構建的幾乎所有系統,都使用了能夠水平擴展的實例農場

1.3. 引入了對負載均衡的需求

2. 負載均衡

2.1. 在整個實例池中分發請求,從而儘可能快地正確響應所有請求

2.2. 負載均衡會創建映射到實例池的“虛擬IP地址”

2.3. DNS輪詢視為負載均衡的一種手段

2.4. 負載均衡器是系統服務中不可或缺的組成部分,不能將其僅僅視為網路基礎設施的一部分

2.5. 構建服務和規劃部署時,需要與負載均衡設計結合起來

2.5.1. 如果系統結構將負載均衡器處理為其他團隊管理的“超出管理範圍的部分”,那麼甚至可以考慮在可控範圍內實施一層軟體負載均衡,完全安裝在網路硬體負載均衡器後

2.5.2. 軟體負載均衡器在OSI應用層上運行,成本低,易操作

3. 主動負載均衡

3.1. 所有類型的主動負載均衡器,都會監聽一個或多個套接字

3.2. 這些套接字在一個或多個IP地址上,這些IP地址通常稱為“虛擬IP地址”或VIP

3.3. 需要使用的負載均衡演算法

3.4. 需要對實例進行的健康狀況檢查

3.5. 運用哪種會話黏性進行客戶端會話

3.6. 當實例池中沒有可用實例時如何處理傳入請求

3.7. 對發出調用的應用程式而言,負載均衡器應是無形的

3.8. 如果客戶端能感知到負載均衡器,那麼很可能是負載均衡器停機了

3.9. 圖示

4. 反向代理伺服器

4.1. 反向代理伺服器後的服務提供方實例,需要生成多個URL,包含虛擬IP地址對應的DNS名字,而不是自身的主機名

4.2. 無論如何都不應該使用實例自身的主機名

4.3. 通的正向代理伺服器採用多路復用將傳出的多個調用組合到單個源IP地址上

4.4. 反向代理伺服器正相反,它採用逆多路復用將傳入單個IP地址上的調用分散到多個地址上

4.5. Squid、HAProxy、Apache httpd和nginx等都是很好的反向代理伺服器,能夠起到負載均衡的作用

4.6. 講規矩”的代理伺服器,會將X-Forwarded-For這樣的頭部信息添加到傳入的HTTP請求中

4.7. 服務可以使用自定義的日誌格式記錄

4.8. 在反向代理伺服器上配置緩存,通過緩存響應信息來減少服務實例的負載

4.8.1. 有助於減少內部網路上的流量

4.9. 由於反向代理伺服器需要處理每個請求,因此它可能很快就不堪重負

4.10. 圖示

5. 硬體負載均衡

5.1. 與反向代理伺服器功能類似的專用網路設備

5.2. 和反向代理軟體一樣,這些設備提供同種類型的攔截和重定向功能

5.3. 相比反向代理軟體,硬體負載均衡器運行時更靠近網路,所以能夠更好地提供容量和吞吐量

5.3.1. 能滿足的網路規模更大,但它要求直接訪問網路,還需要特定的工程技能

5.4. 具有應用程式感知能力,並提供在OSI模型第4層到第7層切換的能力

5.4.1. 可以負載均衡所有面向連接的協議,而不僅僅是HTTP或FTP

5.5. 可以將流量從一個站點完全切換到另一個站點

5.5.1. 在災難恢復時特別有用,可以將流量轉移到故障切換站點

5.6. 硬體負載均衡器與GSLB配合使用效果更佳

5.7. 最大的缺點是價格

5.7.1. 低端配置的價格大概是幾萬美元

5.7.2. 高端配置的價格輕易就能達到幾十萬美元

5.8. F5的Big-IP產品

6. 健康狀況檢查

6.1. 負載均衡器不會將流量發送到未通過若幹健康狀況檢查的實例

6.2. 是負載均衡器配置的重要組成部分

6.3. 良好的健康狀況檢查可以確保請求能夠執行成功,而不僅僅是服務正在監聽套接字

7. 會話黏性

7.1. 負載均衡器會嘗試將重覆的請求引向同一個實例,這對應用程式伺服器中的有狀態服務很有幫助

7.1.1. 有助於縮短有狀態服務的響應時間

7.2. 會話黏性需要某種方式來確定如何將“重覆請求”分組到一個邏輯會話中

7.3. 黏性會話的缺點是它會阻止負載在機器間均勻分佈

8. 按請求類型分隔流量

8.1. 使用基於內容感知的負載均衡

8.1.1. 有效運用負載均衡器的方法是“基於內容的路由”

8.2. 請求中的某些內容對負載均衡器必須是可識別的


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • # .NET6使用RabbitMQ學習 [TOC] ## 前提 前段時間上班無事,上網衝浪看到了消息隊列RabbitMQ,就想著學習一下,網上看了點資料在嗶哩嗶哩上看的到codeman講的一個rabbitmq的視頻,就跟著仔細學習一下,敲一下代碼。視頻地址: [rabbitmq視頻](【【2021最 ...
  • # shell腳本-lnmp一鍵部署 創建文件lnmp.sh ``` vim lnmp.sh ``` ``` #!/bin/bash #描述:LNMP網站架構部署腳本 cat /dev/null echo "創建Nginx運行用戶" groupadd www useradd -g www www - ...
  • # shell腳本-MySQL資料庫備份 ## 準備: 確保mysql服務啟動 **可以通過mysqldump命令來備份資料庫** 1.mysqldump 命令語法: 使用 mysqldump 命令備份一個資料庫的語法格式如下: ``` mysqldump -u username -p dbpass ...
  • # 一. 索引概述 ## 1. 介紹 **索引是幫助MySQL高效獲取數據的數據結構(有序)。在數據之外,資料庫系統還維護著滿足特定查找演算法的數據結構,這些數據結構以某種方式引用(指向)數據,這樣就可以在這些數據結構上實現高級查找演算法,這種數據結構就是索引。** ![](https://tcs-de ...
  • 原文地址:https://blog.csdn.net/zhanglei5415/article/details/131434931 ## 一、問題 當對含有中文的url字元串,進行NSURL對象包裝時,是不能被識別的。 不會得到期望的NSURL對象,而是返回一個nil 值 ; ```objectiv ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
  • 今天接到粉絲私信,詢問是否可以通過Canvas繪製一些圖形,然後根據粉絲提供的模板圖,通過Canvas進行模擬繪製,通過分析發現,圖形雖然相對簡單,但是如果不藉助相應的軟體,純代碼繪製還是稍微費些時間。今天將繪製圖形源碼分享出來,僅供學習分享之用,如有不足之處,還請指正。 ...
  • 博客推行版本更新,成果積累制度,已經寫過的博客還會再次更新,不斷地琢磨,高質量高數量都是要追求的,工匠精神是學習必不可少的精神。因此,大家有何建議歡迎在評論區踴躍發言,你們的支持是我最大的動力,你們敢投,我就敢肝 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...