<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          十張圖帶你了解負(fù)載均衡

          共 2522字,需瀏覽 6分鐘

           ·

          2021-05-09 21:33

          前言

          文本已收錄至我的GitHub倉庫,歡迎Star:https://github.com/bin392328206/six-finger
          種一棵樹最好的時間是十年前,其次是現(xiàn)在

          叨絮

          相信很多小伙伴的公司都是服務(wù)治理,自動化運維了吧,那么我們很多東西都變成我們自己去設(shè)置了,比如自己創(chuàng)建一個域名,綁定他的代理機器,它的web負(fù)載均衡這些東西。所以今天跟大家一起來看看負(fù)載均衡

          如果不愿意看文字的話,圖也是很清晰的哦

          你怎么看負(fù)載均衡

          負(fù)載均衡是高可用網(wǎng)絡(luò)基礎(chǔ)架構(gòu)的關(guān)鍵組件,通常用于將工作負(fù)載分布到多個服務(wù)器來提高網(wǎng)站、應(yīng)用、數(shù)據(jù)庫或其他服務(wù)的性能和可靠性。

          • 相信很多小伙伴,一聽到負(fù)載均衡四個字,第一個想到就是我們所說的Nginx吧,因為這個是離我們開發(fā)比較近的一個組件了。
          • 第二個呢?就是我們Springcloud的組件中自帶了負(fù)載均衡(ribbon),這個也是離我們開發(fā)比較近的
          • 第三個?就是其實我們k8s里面的服務(wù)也是能做負(fù)載均衡的,目前主流容器使用方式
          • 第四個就是我們DNS之后的一個負(fù)載均衡了SLB(這個之前運費負(fù)責(zé)的多點)

          為啥要負(fù)責(zé)均衡呢?

          大家看下面的圖,當(dāng)我們訪問一個網(wǎng)站的時候,如果突然的流量增加,就會導(dǎo)致我們的服務(wù)不可用(單點故障)

          image.png

          一個沒有負(fù)載均衡的 web 架構(gòu)類似下面這樣:

          image.png

          所以為了解決單點問題我們需要負(fù)載均衡(也是我們高可用,高性能,高并發(fā)的基石)

          有負(fù)載均衡的架構(gòu)

          image.png

          web架構(gòu)

          image.png

          聊聊SLB

          image.png

          相信很多公司都有用到把,

          負(fù)載均衡的組成

          • 負(fù)載均衡實例 (Instances):一個負(fù)載均衡實例是一個運行的負(fù)載均衡服務(wù),用來接收流量并將其轉(zhuǎn)發(fā)給后端服務(wù)器,至少添加一個監(jiān)聽(Listeners)和兩臺ECS實例。
          • 監(jiān)聽(Listeners):監(jiān)聽客戶端的請求并將其轉(zhuǎn)發(fā)給后端服務(wù)器,監(jiān)聽也會對后端服務(wù)器進(jìn)行健康檢查。
          • 后端服務(wù)器(Backend Servers):后端服務(wù)器是一組接收前端請求的ECS實例,可以單獨添加ECS實例到后端服務(wù)器池;

          健康檢查

          image.png

          Nginx負(fù)載均衡

          如果你們還沒用上容器,那么肯定是用Nginx來做負(fù)載均衡的了。

          image.png

          至于搭建這邊就不講了,大家百度下,肯定是能知道的。

          SpringCloud負(fù)載均衡ribbon

          springcloud中提供了一系列的組件,我們使用ribbon實現(xiàn)負(fù)載均衡,eureka中也內(nèi)置了ribbon,所以,引入了eureka其實就可以直接使用ribbon了

          ribbon中的負(fù)載均衡用在客戶端,或者說成消費端也可以,在消費者訪問提供者時,就會進(jìn)行負(fù)載均衡算法,然后找到一個最優(yōu)的提供者提供服務(wù)

          image.png

          K8s 服務(wù)治理的負(fù)載均衡(Ingress)

          k8S的負(fù)載均衡模式還挺多的,這邊我就說一個吧Ingress

          Ingress 是 k8s 的一種資源對象, 該對象允許外部訪問 k8s 服務(wù), 通過創(chuàng)建規(guī)則集合來配置訪問權(quán)限,這些規(guī)則定義了哪些入站連接可以訪問哪些服務(wù);Ingress 僅支持 HTTP 和 HTTPS 協(xié)議;ingress 可配置用于提供外部可訪問的服務(wù) url、負(fù)載均衡流量、SSL終端和提供虛擬主機名配置。

          ingress 的工作流程如下;

          image.png

          大概的訪問路徑如下:

          用戶訪問 --> LB --> ingress-nginx-service --> ingressController-ingress-nginx-pod --> ingress字段中調(diào)用的后端pod

          面試題 nginx四層和七層負(fù)載均衡的區(qū)別

          簡單理解四層和七層負(fù)載均衡

          • 所謂四層就是基于IP+端口的負(fù)載均衡;七層就是基于URL等應(yīng)用層信息的負(fù)載均衡;同理,還有基于MAC地址的二層負(fù)載均衡和基于IP地址的三層負(fù)載均衡。換句換說,二層負(fù)載均衡會通過一個虛擬MAC地址接收請求,然后再分配到真實的MAC地址;三層負(fù)載均衡會通過一個虛擬IP地址接收請求,然后再分配到真實的IP地址;四層通過虛擬IP+端口接收請求,然后再分配到真實的服務(wù)器;七層通過虛擬的URL或主機名接收請求,然后再分配到真實的服務(wù)器。
          • 所謂的四到七層負(fù)載均衡,就是在對后臺的服務(wù)器進(jìn)行負(fù)載均衡時,依據(jù)四層的信息或七層的信息來決定怎么樣轉(zhuǎn)發(fā)流量。比如四層的負(fù)載均衡,就是通過發(fā)布三層的IP地址(VIP),然后加四層的端口號,來決定哪些流量需要做負(fù)載均衡,對需要處理的流量進(jìn)行NAT處理,轉(zhuǎn)發(fā)至后臺服務(wù)器,并記錄下這個TCP或者UDP的流量是由哪臺服務(wù)器處理的,后續(xù)這個連接的所有流量都同樣轉(zhuǎn)發(fā)到同一臺服務(wù)器處理。七層的負(fù)載均衡,就是在四層的基礎(chǔ)上(沒有四層是絕對不可能有七層的),再考慮應(yīng)用層的特征,比如同一個Web服務(wù)器的負(fù)載均衡,除了根據(jù)VIP加80端口辨別是否需要處理的流量,還可根據(jù)七層的URL、瀏覽器類別、語言來決定是否要進(jìn)行負(fù)載均衡。舉個例子,如果你的Web服務(wù)器分成兩組,一組是中文語言的,一組是英文語言的,那么七層負(fù)載均衡就可以當(dāng)用戶來訪問你的域名時,自動辨別用戶語言,然后選擇對應(yīng)的語言服務(wù)器組進(jìn)行負(fù)載均衡處理。
          • 負(fù)載均衡器通常稱為四層交換機或七層交換機。四層交換機主要分析IP層及TCP/UDP層,實現(xiàn)四層流量負(fù)載均衡。七層交換機除了支持四層負(fù)載均衡以外,還有分析應(yīng)用層的信息,如HTTP協(xié)議URI或Cookie信息。

          結(jié)束

          作為一個互聯(lián)網(wǎng)工具人,你必須知道整一個用戶流量的流轉(zhuǎn)過程,這樣你才能對流量的每個環(huán)節(jié)去掌握,也就是先要把一個東西串起來,然后一個個去拆解里面的細(xì)節(jié)。

          一個系統(tǒng)的完整架構(gòu)圖

          image.png

          往期推薦

          今天不聊技術(shù)的事兒,談?wù)剬W(xué)習(xí)的看法!


          這些線程安全的坑,你在工作中踩了么?


          ConcurrentHashMap核心原理,這次徹底給整明白了

          瀏覽 39
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          評論
          圖片
          表情
          推薦
          點贊
          評論
          收藏
          分享

          手機掃一掃分享

          分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美双飞| 日韩产的人妻AV在线网 | 美女特黄视频 | 亚洲在线小视频 | 麻豆回家视频区一区二 |