django解決高并發(fā)的問題-創(chuàng)新互聯(lián)

創(chuàng)新互聯(lián)www.cdcxhl.cn八線動(dòng)態(tài)BGP香港云服務(wù)器提供商,新人活動(dòng)買多久送多久,劃算不套路!

創(chuàng)新互聯(lián)是一家專注于成都網(wǎng)站設(shè)計(jì)、網(wǎng)站制作與策劃設(shè)計(jì),東安網(wǎng)站建設(shè)哪家好?創(chuàng)新互聯(lián)做網(wǎng)站,專注于網(wǎng)站建設(shè)十載,網(wǎng)設(shè)計(jì)領(lǐng)域的專業(yè)建站公司;建站業(yè)務(wù)涵蓋:東安等地區(qū)。東安做網(wǎng)站價(jià)格咨詢:13518219792

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

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

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

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

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

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

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

過程描述

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

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

在使用HTTP重定向來實(shí)現(xiàn)服務(wù)器集群負(fù)載均衡的過程中,需要一臺服務(wù)器作為請求調(diào)度者。用戶的一項(xiàng)操作需要發(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ù)一個(gè)值,用于記錄上次分配的后端服務(wù)器的IP。那么當(dāng)新的請求到來時(shí),調(diào)度者將請求依次分配給下一臺服務(wù)器。

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

優(yōu)缺點(diǎn)分析

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

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

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

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

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

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

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

調(diào)度策略

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

優(yōu)缺點(diǎn)分析

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

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

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

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

動(dòng)態(tài)DNS

動(dòng)態(tài)DNS能夠讓我們通過程序動(dòng)態(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),這個(gè)代理就是正向代理。而反向代理是指,外網(wǎng)通過代理訪問內(nèi)網(wǎng),那這個(gè)代理就是反向代理。

假設(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)代理方式是客戶使用代理訪問多個(gè)外部Web 服務(wù)器,而這種代理方式是多個(gè)客戶使用它訪問內(nèi)部Web服務(wù)器,因此也被稱為反向代理模式。

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

優(yōu)點(diǎn):

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

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

故障轉(zhuǎn)移

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

合理分配任務(wù)

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

缺點(diǎn):

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

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

制約擴(kuò)展

當(dāng)后端服務(wù)器也無法滿足巨大的吞吐量時(shí),就需要增加后端服務(wù)器的數(shù)量,可沒辦法無限量地增加,因?yàn)闀?huì)受到調(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ù)算法得到一臺真實(shí)服務(wù)器地址,然后將用戶請求的目標(biāo)地址修改成該真實(shí)服務(wù)器地址,數(shù)據(jù)處理完后返回給負(fù)載均衡服務(wù)器,負(fù)載均衡服務(wù)器收到響應(yīng)后將自身的地址修改成原用戶訪問地址后再講數(shù)據(jù)返回回去。類似于反向服務(wù)器負(fù)載均衡。

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

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

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

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

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

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

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

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

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

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

網(wǎng)站題目:django解決高并發(fā)的問題-創(chuàng)新互聯(lián)
轉(zhuǎn)載來源:http://www.muchs.cn/article28/dhjocp.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供搜索引擎優(yōu)化、外貿(mào)網(wǎng)站建設(shè)、關(guān)鍵詞優(yōu)化動(dòng)態(tài)網(wǎng)站、定制網(wǎng)站、品牌網(wǎng)站設(shè)計(jì)

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會(huì)在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

搜索引擎優(yōu)化