真实的国产乱ⅩXXX66竹夫人,五月香六月婷婷激情综合,亚洲日本VA一区二区三区,亚洲精品一区二区三区麻豆

成都創(chuàng)新互聯(lián)網(wǎng)站制作重慶分公司

django解決高并發(fā)的問題

這篇文章將為大家詳細(xì)講解有關(guān)django解決高并發(fā)的問題,小編覺得挺實用的,因此分享給大家做個參考,希望大家閱讀完這篇文章后可以有所收獲。

創(chuàng)新互聯(lián)堅持“要么做到,要么別承諾”的工作理念,服務(wù)領(lǐng)域包括:成都網(wǎng)站設(shè)計、成都做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣等服務(wù),滿足客戶于互聯(lián)網(wǎng)時代的祁東網(wǎng)站設(shè)計、移動媒體設(shè)計的需求,幫助企業(yè)找到有效的互聯(lián)網(wǎng)解決方案。努力成為您成熟可靠的網(wǎng)絡(luò)建設(shè)合作伙伴!

要解決高并發(fā)問題,先要了解負(fù)載均衡。

什么是負(fù)載均衡?

當(dāng)一臺服務(wù)器的性能達(dá)到極限時,我們可以使用服務(wù)器集群來提高網(wǎng)站的整體性能。那么,在服務(wù)器集群中,需要有一臺服務(wù)器充當(dāng)調(diào)度者的角色,用戶的所有請求都會首先由它接收,調(diào)度者再根據(jù)每臺服務(wù)器的負(fù)載情況將請求分配給某一臺后端服務(wù)器去處理。

那么在這個過程中,調(diào)度者如何合理分配任務(wù),保證所有后端服務(wù)器都將性能充分發(fā)揮,從而保持服務(wù)器集群的整體性能最優(yōu),這就是負(fù)載均衡問題。

下面詳細(xì)介紹負(fù)載均衡的五種實現(xiàn)方式

(一)HTTP重定向?qū)崿F(xiàn)負(fù)載均衡

過程描述

當(dāng)用戶向服務(wù)器發(fā)起請求時,請求首先被集群調(diào)度者截獲;調(diào)度者根據(jù)某種分配策略,選擇一臺服務(wù)器,并將選中的服務(wù)器的IP地址封裝在HTTP響應(yīng)消息頭部的Location字段中,并將響應(yīng)消息的狀態(tài)碼設(shè)為302,最后將這個響應(yīng)消息返回給瀏覽器。

當(dāng)瀏覽器收到響應(yīng)消息后,解析Location字段,并向該URL發(fā)起請求,然后指定的服務(wù)器處理該用戶的請求,最后將結(jié)果返回給用戶。

在使用HTTP重定向來實現(xiàn)服務(wù)器集群負(fù)載均衡的過程中,需要一臺服務(wù)器作為請求調(diào)度者。用戶的一項操作需要發(fā)起兩次HTTP請求,一次向調(diào)度服務(wù)器發(fā)送請求,獲取后端服務(wù)器的IP,第二次向后端服務(wù)器發(fā)送請求,獲取處理結(jié)果。

調(diào)度策略

隨機(jī)分配策略

當(dāng)調(diào)度服務(wù)器收到用戶請求后,可以隨機(jī)決定使用哪臺后端服務(wù)器,然后將該服務(wù)器的IP封裝在HTTP響應(yīng)消息的Location屬性中,返回給瀏覽器即可。

輪詢策略(RR)

調(diào)度服務(wù)器需要維護(hù)一個值,用于記錄上次分配的后端服務(wù)器的IP。那么當(dāng)新的請求到來時,調(diào)度者將請求依次分配給下一臺服務(wù)器。

由于輪詢策略需要調(diào)度者維護(hù)一個值用于記錄上次分配的服務(wù)器IP,因此需要額外的開銷;此外,由于這個值屬于互斥資源,那么當(dāng)多個請求同時到來時,為了避免線程的安全問題,因此需要鎖定互斥資源,從而降低了性能。而隨機(jī)分配策略不需要維護(hù)額外的值,也就不存在線程安全問題,因此性能比輪詢要高。

優(yōu)缺點分析

采用HTTP重定向來實現(xiàn)服務(wù)器集群的負(fù)載均衡實現(xiàn)起來較為容易,邏輯比較簡單,但缺點也較為明顯。

在HTTP重定向方法中,調(diào)度服務(wù)器只在客戶端第一次向網(wǎng)站發(fā)起請求的時候起作用。當(dāng)調(diào)度服務(wù)器向瀏覽器返回響應(yīng)信息后,客戶端此后的操作都基于新的URL進(jìn)行的(也就是后端服務(wù)器),此后瀏覽器就不會與調(diào)度服務(wù)器產(chǎn)生關(guān)系,進(jìn)而會產(chǎn)生如下幾個問題:

由于不同用戶的訪問時間、訪問頁面深度有所不同,從而每個用戶對各自的后端服務(wù)器所造成的壓力也不同。而調(diào)度服務(wù)器在調(diào)度時,無法知道當(dāng)前用戶將會對服務(wù)器造成多大的壓力,因此這種方式無法實現(xiàn)真正意義上的負(fù)載均衡,只不過是把請求次數(shù)平均分配給每臺服務(wù)器罷了。

若分配給該用戶的后端服務(wù)器出現(xiàn)故障,并且如果頁面被瀏覽器緩存,那么當(dāng)用戶再次訪問網(wǎng)站時,請求都會發(fā)給出現(xiàn)故障的服務(wù)器,從而導(dǎo)致訪問失敗。

(二)DNS負(fù)載均衡

首先需要將我們的域名指向多個后端服務(wù)器(將一個域名解析到多個IP上),再設(shè)置一下調(diào)度策略,那么我們的準(zhǔn)備工作就完成了,接下來的負(fù)載均衡就完全由DNS服務(wù)器來實現(xiàn)。

當(dāng)用戶向我們的域名發(fā)起請求時,DNS服務(wù)器會自動地根據(jù)我們事先設(shè)定好的調(diào)度策略選一個合適的IP返回給用戶,用戶再向該IP發(fā)起請求。

調(diào)度策略

一般DNS提供商會提供一些調(diào)度策略供我們選擇,如隨機(jī)分配、輪詢、根據(jù)請求者的地域分配離他最近的服務(wù)器。

優(yōu)缺點分析

DNS負(fù)載均衡最大的優(yōu)點就是配置簡單。服務(wù)器集群的調(diào)度工作完全由DNS服務(wù)器承擔(dān),那么我們就可以把精力放在后端服務(wù)器上,保證他們的穩(wěn)定性與吞吐量。而且完全不用擔(dān)心DNS服務(wù)器的性能,即便是使用了輪詢策略,它的吞吐率依然卓越。此外,DNS負(fù)載均衡具有較強(qiáng)了擴(kuò)展性,你完全可以為一個域名解析較多的IP,而且不用擔(dān)心性能問題。

但是,由于把集群調(diào)度權(quán)交給了DNS服務(wù)器,從而我們沒辦法隨心所欲地控制調(diào)度者,沒辦法定制調(diào)度策略。

DNS服務(wù)器也沒辦法了解每臺服務(wù)器的負(fù)載情況,因此沒辦法實現(xiàn)真正意義上的負(fù)載均衡。它和HTTP重定向一樣,只不過把所有請求平均分配給后端服務(wù)器罷了。

此外,當(dāng)我們發(fā)現(xiàn)某一臺后端服務(wù)器發(fā)生故障時,即使我們立即將該服務(wù)器從域名解析中去除,但由于DNS服務(wù)器會有緩存,該IP仍然會在DNS中保留一段時間,那么就會導(dǎo)致一部分用戶無法正常訪問網(wǎng)站。這是一個致命的問題!好在這個問題可以用動態(tài)DNS來解決。

動態(tài)DNS

動態(tài)DNS能夠讓我們通過程序動態(tài)修改DNS服務(wù)器中的域名解析。從而當(dāng)我們的監(jiān)控程序發(fā)現(xiàn)某臺服務(wù)器掛了之后,能立即通知DNS將其刪掉。

綜上所述

DNS負(fù)載均衡是一種粗獷的負(fù)載均衡方法,這里只做介紹,不推薦使用。

(三)反向代理負(fù)載均衡(nginx+uwsgi)

什么是正向代理,正向代理是內(nèi)網(wǎng)通過代理訪問外網(wǎng),這個代理就是正向代理。而反向代理是指,外網(wǎng)通過代理訪問內(nèi)網(wǎng),那這個代理就是反向代理。

假設(shè)把你公司的網(wǎng)看成是內(nèi)網(wǎng),那么你從公司里面的一臺電腦上訪問你家里的電腦上的服務(wù),那就的通過正向代理,而你從你家電腦訪問公司的這臺電腦,就要通過反向代理。

使用代理服務(wù)器可以將請求轉(zhuǎn)發(fā)給內(nèi)部的Web服務(wù)器,使用這種加速模式顯然可以提升靜態(tài)網(wǎng)頁的訪問速度。因此也可以考慮使用這種技術(shù),讓代理服務(wù)器將請求 均勻轉(zhuǎn)發(fā)給多臺內(nèi)部Web服務(wù)器之一上,從而達(dá)到負(fù)載均衡的目的。這種代理方式與普通的代理方式有所不同,標(biāo)準(zhǔn)代理方式是客戶使用代理訪問多個外部Web 服務(wù)器,而這種代理方式是多個客戶使用它訪問內(nèi)部Web服務(wù)器,因此也被稱為反向代理模式。

反向代理處于web服務(wù)器這邊,反向代理服務(wù)器提供負(fù)載均衡的功能,同時管理一組web服務(wù)器,它根據(jù)負(fù)載均衡算法將請求的瀏覽器訪問轉(zhuǎn)發(fā)到不同的web服務(wù)器處理,處理結(jié)果經(jīng)過反向服務(wù)器返回給瀏覽器。

優(yōu)點:

隱藏后端服務(wù)器。

與HTTP重定向相比,反向代理能夠隱藏后端服務(wù)器,所有瀏覽器都不會與后端服務(wù)器直接交互,從而能夠確保調(diào)度者的控制權(quán),提升集群的整體性能。

故障轉(zhuǎn)移

與DNS負(fù)載均衡相比,反向代理能夠更快速地移除故障結(jié)點。當(dāng)監(jiān)控程序發(fā)現(xiàn)某一后端服務(wù)器出現(xiàn)故障時,能夠及時通知反向代理服務(wù)器,并立即將其刪除。

合理分配任務(wù)

HTTP重定向和DNS負(fù)載均衡都無法實現(xiàn)真正意義上的負(fù)載均衡,也就是調(diào)度服務(wù)器無法根據(jù)后端服務(wù)器的實際負(fù)載情況分配任務(wù)。但反向代理服務(wù)器支持手動設(shè)定每臺后端服務(wù)器的權(quán)重。我們可以根據(jù)服務(wù)器的配置設(shè)置不同的權(quán)重,權(quán)重的不同會導(dǎo)致被調(diào)度者選中的概率的不同。

缺點:

調(diào)度者壓力過大

由于所有的請求都先由反向代理服務(wù)器處理,那么當(dāng)請求量超過調(diào)度服務(wù)器的最大負(fù)載時,調(diào)度服務(wù)器的吞吐率降低會直接降低集群的整體性能。

制約擴(kuò)展

當(dāng)后端服務(wù)器也無法滿足巨大的吞吐量時,就需要增加后端服務(wù)器的數(shù)量,可沒辦法無限量地增加,因為會受到調(diào)度服務(wù)器的最大吞吐量的制約。

(四)IP負(fù)載均衡

原理:在網(wǎng)絡(luò)層通過修改目標(biāo)地址進(jìn)行負(fù)載均衡。

用戶訪問請求到達(dá)負(fù)載均衡服務(wù)器,負(fù)載均衡服務(wù)器在操作系統(tǒng)內(nèi)核進(jìn)程獲取網(wǎng)絡(luò)數(shù)據(jù)包,根據(jù)算法得到一臺真實服務(wù)器地址,然后將用戶請求的目標(biāo)地址修改成該真實服務(wù)器地址,數(shù)據(jù)處理完后返回給負(fù)載均衡服務(wù)器,負(fù)載均衡服務(wù)器收到響應(yīng)后將自身的地址修改成原用戶訪問地址后再講數(shù)據(jù)返回回去。類似于反向服務(wù)器負(fù)載均衡。

優(yōu)點:在響應(yīng)請求時速度較反向服務(wù)器負(fù)載均衡要快。

缺點:當(dāng)請求數(shù)據(jù)較大(大型視頻或文件)時,速度較慢。

(五)數(shù)據(jù)鏈路層負(fù)載均衡

原理:在數(shù)據(jù)鏈路層修改Mac地址進(jìn)行負(fù)載均衡。

負(fù)載均衡服務(wù)器的IP和它所管理的web 服務(wù)群的虛擬IP一致;

負(fù)載均衡數(shù)據(jù)分發(fā)過程中不修改訪問地址的IP地址,而是修改Mac地址;

通過這兩點達(dá)到不修改數(shù)據(jù)包的原地址和目標(biāo)地址就可以進(jìn)行正常的訪問。

優(yōu)點:不需要負(fù)載均衡服務(wù)器進(jìn)行地址的轉(zhuǎn)換。數(shù)據(jù)響應(yīng)時不需要經(jīng)過負(fù)載均衡服務(wù)器。

缺點:負(fù)載均衡服務(wù)器的網(wǎng)卡帶寬要求較高。

關(guān)于django解決高并發(fā)的問題就分享到這里了,希望以上內(nèi)容可以對大家有一定的幫助,可以學(xué)到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。


網(wǎng)頁題目:django解決高并發(fā)的問題
本文鏈接:http://weahome.cn/article/ipgccd.html

其他資訊

在線咨詢

微信咨詢

電話咨詢

028-86922220(工作日)

18980820575(7×24)

提交需求

返回頂部