国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

提升網(wǎng)站性能:Nginx五種高效負(fù)載均衡策略

這篇具有很好參考價(jià)值的文章主要介紹了提升網(wǎng)站性能:Nginx五種高效負(fù)載均衡策略。希望對(duì)大家有所幫助。如果存在錯(cuò)誤或未考慮完全的地方,請(qǐng)大家不吝賜教,您也可以點(diǎn)擊"舉報(bào)違法"按鈕提交疑問。

前言

本文收錄于我是沐風(fēng)曉月的csdn專欄《linux基本功-系統(tǒng)服務(wù)實(shí)戰(zhàn)》, 關(guān)于nginx的系列后面會(huì)匯總起來,關(guān)注我,一起學(xué)習(xí)與成長。

本專欄寫作的過程中,聯(lián)合了csdn幾位大佬,目前正在整理更新目錄,力爭讓大家學(xué)到一些真東西,將所學(xué)的理論落地,幫助你更快的提升自己。

學(xué)技術(shù)最難的地方,其實(shí)是找到最優(yōu)資料的過程,這次聯(lián)合幾位csdn的云原生方向的博主大佬,一起打造易學(xué),易懂,落地的架構(gòu)和云原生專欄。

一. 重點(diǎn)知識(shí)回顧

1.1 Nginx內(nèi)核與模塊劃分

  1. 內(nèi)核

其設(shè)計(jì)非常微小和簡潔,完成的工作也非常簡單。僅通過查找配置文件將客戶端請(qǐng)求映射到一個(gè)location block(location是nginx配置中的一個(gè)指令,用例URL匹配),而在這個(gè)location中所配置的每個(gè)指令將會(huì)啟動(dòng)不同的模塊取完成相應(yīng)的工作。

  1. 從結(jié)構(gòu)上劃分:
  • 核心模塊:HTTP模塊、EVENT模塊和MAIL模塊。 基礎(chǔ)模塊:HTTP Access模塊、HTTP FastCGI模塊、HTTP
  • Proxy模塊和HTTP Rewrite模塊。 第三方模塊:HTTP Upstream Request
  • Hash模塊、Notice模塊和HTTP Access Key模塊。

一般我們需要記住 模塊名字即可,做到心里有底。

  1. 從功能上劃分
  • Core(核心模塊):構(gòu)建nginx基礎(chǔ)服務(wù)、管理其他模塊。
  • Handlers(處理器模塊):此類模塊直接處理請(qǐng)求,并進(jìn)行輸出內(nèi)容和修改headers信息等操作。Handlers處理器模塊一般只能有一個(gè)。
  • Filters (過濾器模塊):此類模塊主要對(duì)其他處理器模塊輸出的內(nèi)容進(jìn)行修改操作,最后由Nginx輸出。
  • Proxies (代理類模塊):此類模塊是Nginx的HTTP Upstream之類的模塊,這些模塊主要與后端一些服務(wù)
    比如FastCGI等進(jìn)行交互,實(shí)現(xiàn)服務(wù)代理和負(fù)載均衡等功能。

1.2 Nginx模塊處理流程

  1. 收到HTTP請(qǐng)求。
  2. Nginx基于配置文件中的位置選擇一個(gè)合適的處理模塊(Handlers)。
  3. Handlers模塊需要把請(qǐng)求反向代理到后端服務(wù)器,就需要就變成另外一類的模塊:load-balancers(負(fù)載均衡模塊)
  4. 負(fù)載均衡模塊的配置中有一組后端服務(wù)器,當(dāng)一個(gè)HTTP請(qǐng)求過來時(shí),它決定哪臺(tái)服務(wù)器應(yīng)當(dāng)獲得這個(gè)請(qǐng)求。
  5. 處理完成后,filters(過濾模塊)將被調(diào)用。每個(gè)請(qǐng)求都可以被壓縮成塊,依次經(jīng)過多個(gè)filters過。它們的執(zhí)行順序在編譯時(shí)決定。過濾模塊鏈以流水線的方式高效率地向客戶端發(fā)送響應(yīng)信息。每個(gè)filters不會(huì)等上一個(gè)filters全部完成,就像是流水線一樣。
  6. 最后把響應(yīng)發(fā)給客戶端。

Nginx本身做的工作實(shí)際很少,當(dāng)它接到一個(gè)HTTP請(qǐng)求時(shí),它僅僅是通過查找配置文件將此次請(qǐng)求映射到一個(gè)location block,而此location中所配置的各個(gè)指令則會(huì)啟動(dòng)不同的模塊去完成工作,因此模塊可以看做Nginx真正的勞動(dòng)工作者。

1.3 nginx負(fù)載均衡的作用

  • 解決服務(wù)器的高并發(fā)壓力,提高應(yīng)用程序的處理性能;
  • 提供故障轉(zhuǎn)移,實(shí)現(xiàn)高可用;
  • 通過添加或減少服務(wù)器數(shù)量,增強(qiáng)網(wǎng)站的可擴(kuò)展性;
  • 在負(fù)載均衡器上進(jìn)行過濾,可以提高系統(tǒng)的安全性。

二. 負(fù)載均衡的算法

2.1 關(guān)于負(fù)載均衡的理論回顧

負(fù)載均衡,就是 Nginx 把請(qǐng)求均勻的分?jǐn)偨o上游的應(yīng)用服務(wù)器,這樣即使某一個(gè)服務(wù)器宕機(jī)也不會(huì)影響請(qǐng)求的處理,或者當(dāng)應(yīng)用服務(wù)器扛不住了,可以隨時(shí)進(jìn)行擴(kuò)容。
nginx負(fù)載均衡策略,# 3. linux基本功-系統(tǒng)服務(wù)實(shí)戰(zhàn),運(yùn)維,linux,服務(wù)器
nginx將客戶端的請(qǐng)求,根據(jù)相應(yīng)的規(guī)則分發(fā)到部署項(xiàng)目的后端服務(wù)器,比如tomcat。 這里的相應(yīng)規(guī)則其實(shí)就是在配置文件中指定:pass_proxy指令以及upstream指令。

靜態(tài)負(fù)載均衡的算法: 主要包括 輪詢算法,基于比率的加權(quán)輪詢算法或者基于優(yōu)先級(jí)的加權(quán)輪詢算法;
動(dòng)態(tài)負(fù)載均衡的算法: 主要包括基于任務(wù)量的最少連接優(yōu)化算法、基于性能的最快響應(yīng)優(yōu)先算法、預(yù)測算法及動(dòng)態(tài)性能分配算法等;

一般動(dòng)態(tài)的負(fù)載均衡算法更加適用于復(fù)雜的網(wǎng)絡(luò)環(huán)境。

負(fù)載均衡都是基于OSI七層模型來劃分的:

OSI七層模型:

  1. 物理層:比特流傳輸
  2. 數(shù)據(jù)鏈路層:控制網(wǎng)絡(luò)層與物理層之間的通信;
  3. 網(wǎng)絡(luò)層:IP尋址和路由選擇;
  4. 傳輸層:建立、維護(hù)、管理端到端的連接,常見的有TCP/UDP;
  5. 會(huì)話層:建立、維護(hù)、管理會(huì)話連接;
  6. 表示層:對(duì)數(shù)據(jù)進(jìn)行格式化、編碼、加密、壓縮等操作;
  7. 應(yīng)用層:為應(yīng)用程序提供網(wǎng)絡(luò)服務(wù);
  • 四層負(fù)載是在傳輸層,基于IP+port的負(fù)載均衡,常見的有:
硬件:F5、BIG-IP、Radware等;
 軟件:LVS、Nginx、Hayproxy等

nginx 增加了一個(gè)stream模塊,用來實(shí)現(xiàn)四層協(xié)議的轉(zhuǎn)發(fā),代理,負(fù)載均衡等。

stream模塊的用法跟http的用法類似,允許我們配置一組TCP或者UDP等協(xié)議的監(jiān)聽,然后通過proxy_pass來轉(zhuǎn)發(fā)我們的請(qǐng)求,通過upstream添加多個(gè)后端服務(wù),實(shí)現(xiàn)負(fù)載均衡;

要使用stream的模式,需要在編譯的時(shí)候加上 --with-stream才能用。

  • 七層負(fù)載均衡主要在應(yīng)用層,主要基于虛擬的URL或者主機(jī)的IP的負(fù)載均衡:
實(shí)現(xiàn)七層負(fù)載均衡的方式:
    軟件:Nginx、Hayproxy等

2.2 目前nginx常用的算法

Nginx的upstream支持如下六種方式的分配算法,分別是:

算法名稱 說明
輪詢 默認(rèn)方式
weight 權(quán)重方式
ip_hash 依據(jù)ip分配方式
least_conn 依據(jù)最少連接方式
url_hash 依據(jù)URL分配方式
fair 依據(jù)響應(yīng)時(shí)間方式

1. 輪詢(默認(rèn)方式)

輪詢是upstream模塊負(fù)載均衡默認(rèn)的策略,每個(gè)請(qǐng)求會(huì)按時(shí)間順序逐個(gè)被分配到不同的后端服務(wù)器。輪詢不需要額外的配置.

upstream mufengserver{
        server  192.168.1.41:8080;
        server  192.168.1.42:8081;
    }
server {
		listen 80;
		server_name localhost;
location / {
			# mufengserver 就是服務(wù)器組的名稱
			proxy_pass http://mufengserver/;
		}
	}

2. 權(quán)重策略(weight 加權(quán)輪詢)

weitht=number后面的weight參數(shù)越高,任務(wù)也就越多,權(quán)重?cái)?shù)字越大,被分配到請(qǐng)求的幾率越大,默認(rèn)為1;
用于在服務(wù)器性能不均衡的情況下使用,主要是針對(duì)實(shí)際工作環(huán)境中不同的后端服務(wù)器硬件配置進(jìn)行調(diào)整的,所有此策略比較適合服務(wù)器的硬件配置差別比較大的情況。

比如你的服務(wù)器 4C8G 和 8C16G 的服務(wù)器都有,那么這時(shí)候就可以對(duì)服務(wù)器設(shè)置一些權(quán)重,讓性能好的承擔(dān)更多的請(qǐng)求。

upstream mufengserver{
        server  192.168.1.41:9001 weight=5;
        server  192.168.1.42:9002 weight=1;
    }
server {
		listen 8080;
		server_name localhost;
		
		location / {
			# mufengserver 就是服務(wù)器組的名稱
			proxy_pass http:/mufengserver/;
		}
	}

3. ip_hash

當(dāng)對(duì)后端的多臺(tái)動(dòng)態(tài)應(yīng)用服務(wù)器做負(fù)載均衡時(shí),ip_hash指令能夠?qū)⒛硞€(gè)客戶端IP的請(qǐng)求通過哈希算法定位到同一臺(tái)后端服務(wù)器上;
當(dāng)來自某一個(gè)IP的用戶在后端Web服務(wù)器A上登錄后,再訪問該站點(diǎn)的其他URL,能保證其訪問的還是后端web服務(wù)器A;

	# 代理服務(wù)器
	# 設(shè)置服務(wù)器組
	upstream mufengserver{
        ip_hash;
		server localhost:9001;
		server localhost:9002;
		server localhost:9003;
	}
	server {
		listen 8080;
		server_name localhost;
		
		location / {
			# backend 就是服務(wù)器組的名稱
			proxy_pass http://mufengserver/;
		}
	}

注意:使用ip_hash指令無法保證后端服務(wù)器的負(fù)載均衡,可能導(dǎo)致有些后端服務(wù)器接收到的請(qǐng)求多,有些后端服務(wù)器接受的請(qǐng)求少,而且設(shè)置后端服務(wù)器權(quán)重等方法將不起作用.

4. fair

fair 主要根據(jù)訪問的時(shí)間來分配任務(wù),根據(jù)頁面的大小,加載時(shí)間長短等智能的進(jìn)行負(fù)載均衡;
要使用第三方模塊fair必須安裝upstream_fair模塊;

upstream myserver{
        server  192.168.137.13:8082;
        server  192.168.137.13:8081;
        fair;
    }
server {
		listen 8080;
		server_name localhost;
		
		location / {
			# mufengserver 就是服務(wù)器組的名稱
			proxy_pass http://mufengserver/;
}
}

5. url_hash

第三方插件,需要安裝Nginx的hash軟件包,按訪問url的hash結(jié)果來分配請(qǐng)求,使每個(gè)url定向到同一個(gè)后端服務(wù)器,要配合緩存命中來使用。
有時(shí)候同一個(gè)資源多次請(qǐng)求,可能會(huì)到達(dá)不同的服務(wù)器上,導(dǎo)致不必要的多次下載,緩存命中率不高,以及一些資源時(shí)間的浪費(fèi),但使用url_hash,可以使得同一個(gè)url(也就是同一個(gè)資源請(qǐng)求)會(huì)到達(dá)同一臺(tái)服務(wù)器,一旦緩存住了資源,再次收到請(qǐng)求,就可以從緩存中讀取。

	# 代理服務(wù)器
	# 設(shè)置服務(wù)器組
	upstream mufengserver {
        hash $request_uri;
		server localhost:9001;
		server localhost:9002;
		server localhost:9003;
	}
	server {
		listen 8080;
		server_name localhost;
		
		location / {
			# mufengserver 就是服務(wù)器組的名稱
			proxy_pass http://mufengserver;
		}
	}

6. least_conn

least_conn:最少連接,把請(qǐng)求轉(zhuǎn)發(fā)給連接數(shù)較少的后端服務(wù)器。

輪詢算法是把請(qǐng)求平均地轉(zhuǎn)發(fā)給各個(gè)后端,使它們的負(fù)載大致相同;但是,有些請(qǐng)求占用的時(shí)間很長,會(huì)導(dǎo)致其所在的后端負(fù)載較高。這種情況下,least_conn這種方式就可以達(dá)到更好的負(fù)載均衡效果。

這種方式適合請(qǐng)求處理時(shí)間長短不一造成服務(wù)器過載的情況。

	
	upstream mufengserver{
        least_conn;
		server localhost:9001;
		server localhost:9002;
		server localhost:9003;
	}
	server {
		listen 8080;
		server_name localhost;
		
		location / {
			# mufengserver 就是服務(wù)器組的名稱
			proxy_pass http://mufengserver/;
		}
	}

總結(jié)

?? 好啦,這就是今天要分享給大家的全部內(nèi)容了,我們下期再見!
?? 本文由沐風(fēng)曉月原創(chuàng),首發(fā)于CSDN博客, 博客主頁:mufeng.blog.csdn.net
?? 學(xué)習(xí)如逆水行舟,不進(jìn)則退,一起努力加油哦!
?? 喜歡的話記得點(diǎn)贊收藏哈文章來源地址http://www.zghlxwxcb.cn/news/detail-781438.html

到了這里,關(guān)于提升網(wǎng)站性能:Nginx五種高效負(fù)載均衡策略的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲(chǔ)空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請(qǐng)注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請(qǐng)點(diǎn)擊違法舉報(bào)進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【創(chuàng)作贏紅包】Nginx四——Nginx實(shí)現(xiàn)負(fù)載均衡的多種策略

    【Nginx一】——Nginx介紹(正向代理 反向代理 負(fù)載均衡 動(dòng)靜分離) 【Nginx二】——Nginx常用命令 配置文件 Nginx如何處理請(qǐng)求 【Nginx三】——Nginx實(shí)現(xiàn)反向代理 本篇博客主要介紹Nginx實(shí)現(xiàn)負(fù)載均衡的多種策略,包括輪詢、最少連接、IP哈希、加權(quán)輪詢、URL哈希。 Nginx可以通過反

    2023年04月09日
    瀏覽(19)
  • Nginx配置大全【六大使用場景、七大負(fù)載均衡策略、四大負(fù)載健康檢查】

    !!! 反向代理也可以基于請(qǐng)求路徑轉(zhuǎn)發(fā)到不同服務(wù)器 !!! !!!反向代理路徑結(jié)尾加不加 / 符號(hào)的區(qū)別?。。?如果只是簡單的重定向操作,并且不需要進(jìn)行復(fù)雜的路徑重寫或捕獲,推薦使用 return 301 的方式來實(shí)現(xiàn)重定向。這樣能夠更直接、更高效地達(dá)到重定向的目的,避免不必要的

    2024年04月16日
    瀏覽(20)
  • 后端架構(gòu)師必知必會(huì)系列:性能優(yōu)化與負(fù)載均衡策略

    作者:禪與計(jì)算機(jī)程序設(shè)計(jì)藝術(shù) 在互聯(lián)網(wǎng)高速發(fā)展的今天,網(wǎng)站的流量越來越多,為了保證網(wǎng)站的正常運(yùn)行,優(yōu)化服務(wù)器的性能顯得尤為重要。同時(shí)為了提升網(wǎng)站的訪問速度、節(jié)省網(wǎng)絡(luò)帶寬成本、提供更好的用戶體驗(yàn),很多網(wǎng)站都會(huì)采用分布式架構(gòu)或云計(jì)算平臺(tái)來提高網(wǎng)站的

    2024年02月06日
    瀏覽(26)
  • 深入淺出 -- 系統(tǒng)架構(gòu)之負(fù)載均衡Nginx的性能優(yōu)化

    ? ?到這里文章的篇幅較長了,最后再來聊一下關(guān)于 Nginx 的性能優(yōu)化,主要就簡單說說收益最高的幾個(gè)優(yōu)化項(xiàng),在這塊就不再展開敘述了,畢竟影響性能都有多方面原因?qū)е碌?,比如網(wǎng)絡(luò)、服務(wù)器硬件、操作系統(tǒng)、后端服務(wù)、程序自身、數(shù)據(jù)庫服務(wù)等,對(duì)于性能調(diào)優(yōu)比較感興

    2024年04月14日
    瀏覽(23)
  • Nginx搭配負(fù)載均衡和動(dòng)靜分離:構(gòu)建高性能Web應(yīng)用的完美組合

    Nginx搭配負(fù)載均衡和動(dòng)靜分離:構(gòu)建高性能Web應(yīng)用的完美組合

    目錄 前言 一、Nginx簡介 1.Nginx是什么 2.Nginx的特點(diǎn) 3.Nginx在哪使用 4.如何使用Nginx 5.Nginx的優(yōu)缺點(diǎn) 6.Nginx的應(yīng)用場景 二、負(fù)載均衡和動(dòng)靜分離 1.負(fù)載均衡 2.動(dòng)靜分離 三、Nginx搭載負(fù)載均衡并提供前后端分離后臺(tái)接口數(shù)據(jù) 1.Nginx安裝 2.tomcat負(fù)載均衡 3.負(fù)載均衡后臺(tái)項(xiàng)目發(fā)布 四、前

    2024年02月06日
    瀏覽(28)
  • SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡

    SpringCloud(3) Ribbon負(fù)載均衡,負(fù)載均衡策略,自定義負(fù)載均衡

    假設(shè)我們有一臺(tái) order-service 訂單服務(wù),兩臺(tái) user-service 用戶服務(wù),當(dāng)訂單服務(wù)需要調(diào)用用戶服務(wù)獲取用戶信息的時(shí)候,應(yīng)該怎么分配調(diào)用哪臺(tái)服務(wù)呢? 這時(shí)候就需要用到 Ribbon 組件了。 首先,我們發(fā)起遠(yuǎn)程調(diào)用的時(shí)候,指定的是需要調(diào)用的服務(wù)名稱,然后我們會(huì)調(diào)用 Ribbon 組

    2024年02月11日
    瀏覽(23)
  • k8s之service五種負(fù)載均衡byte的區(qū)別

    k8s之service五種負(fù)載均衡byte的區(qū)別

    在 k8s 中, service 是一個(gè)固定接入層,客戶端可以通過訪問 service 的 ip 和端口訪問到 service 關(guān)聯(lián)的后端pod,這個(gè) service 工作依賴于在 kubernetes 集群之上部署的一個(gè)附件,就是kubernetes 的 dns 服務(wù) (不同 kubernetes 版本的 dns 默認(rèn)使用的也是不一樣的,1.11 之前的版本使用的是 ku

    2024年02月05日
    瀏覽(26)
  • LVS負(fù)載均衡(web網(wǎng)站負(fù)載均衡)

    ? ? 一、概述 ?? ??? ?功能強(qiáng)大 ?? ??? ?轉(zhuǎn)發(fā)策略比較多 ?? ??? ?適合大型的網(wǎng)絡(luò)高可用 ?? ? 二、作用 ?? ??? ?使用keepalived解決lvs的單點(diǎn)故障高可用集群 ?? ? 三、環(huán)境 ?? ??? ?1.準(zhǔn)備6臺(tái)虛擬機(jī),2臺(tái)做LVS主備調(diào)度器,2臺(tái)做web服務(wù)器,1臺(tái)做存儲(chǔ),1臺(tái)客戶機(jī)驗(yàn)證

    2024年02月09日
    瀏覽(12)
  • Dubbo負(fù)載均衡策略

    在Dubbo中,負(fù)載均衡是實(shí)現(xiàn)高可用和高性能的重要手段之一。Dubbo支持多種負(fù)載均衡策略,可以根據(jù)業(yè)務(wù)場景進(jìn)行選擇。本文將詳細(xì)介紹Dubbo支持的負(fù)載均衡策略,并結(jié)合代碼實(shí)踐給出操作步驟。 Dubbo支持以下負(fù)載均衡策略: 隨機(jī)(Random):隨機(jī)選擇一個(gè)可用的服務(wù)提供者。 最少

    2023年04月09日
    瀏覽(19)
  • 負(fù)載均衡策略 LVS

    負(fù)載均衡策略 LVS

    (1) 概念: LB:負(fù)載均衡 (Load Balancing) 是一種分發(fā)網(wǎng)絡(luò)流量的技術(shù),LB 負(fù)載均衡的基本原理是將傳入的網(wǎng)絡(luò)流量分發(fā)到多個(gè)后端服務(wù)器,以確保這些服務(wù)器都承擔(dān)相似的工作負(fù)載,從而避免某一臺(tái)服務(wù)器過載而其他服務(wù)器處于空閑狀態(tài)。 (2) 負(fù)載均衡產(chǎn)品分類: ① 軟件負(fù)載均

    2024年02月08日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請(qǐng)作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包