網路程式設計筆記一 nginx,wsgi,flask

2021-09-24 13:12:33 字數 2204 閱讀 4623

nginx 的作用

客戶端從傳送乙個 http 請求到 flask 處理請求,分別經過了 web伺服器層,wsgi層,web框架層,這三個層次。不同的層次其作用也不同,下面簡要介紹各層的作用。

對於傳統的客戶端 - 伺服器架構,其請求的處理過程是,客戶端向伺服器傳送請求,伺服器接收請求並處理請求,然後給客戶端返回響應。在這個過程中,伺服器的作用是:

接收請求

處理請求

返回響應

web伺服器是一類特殊的伺服器,其作用是主要是接收 http 請求並返回響應。提起 web伺服器大家都不會陌生,常見的 web伺服器有 nginx,apache,iis等。在上圖1的三層結構中,web伺服器是最先接收使用者請求的,並將響應結果返回給使用者。

from flask import flask

def home():

return 'hello world!'

if __name__ == '__main__':

nginx是常用的幾種常用的web伺服器之一, 同時也是一款輕量級的web 伺服器/反向**伺服器及電子郵件。其特點是占有記憶體少,併發能力強,官方宣告測試結果說明可以達到5萬併發。 其主要三個特點是

反向**

負載均衡

其他

何為**,這是我們首先要熟知的。 **是一種中間渠道,類似的中介。

正向**即是,你不想讓目標對方知道自己的詳細資訊,但是你可以通過乙個中介進行了解並得到自己想要的結果。 主要目的是為了隱藏自己的真實資訊。

而反向**則是多個請求向目標主機請求資料,對於分布式部署來說,nginx伺服器接收到請求之後,按照一定的規則分發給了後端的業務處理伺服器進行處理了。此時目標真實資訊客戶端是不知道,他所知道的資料都是從nginx進行返回。

我們知道nginx可以實現反向**,將請求按一定規則傳送到後端業務處理介面。

這裡提到的客戶端傳送的、nginx反向**伺服器接收到的請求數量,就是我們說的負載量

請求數量按照一定的規則進行分發到不同的伺服器處理的規則,就是一種均衡規則

所以~將伺服器接收到的請求按照規則分發的過程,稱為負載均衡。

負載均衡在實際專案操作過程中,有硬體負載均衡和軟體負載均衡兩種,硬體負載均衡也稱為硬負載,如f5負載均衡,相對造價昂貴成本較高,但是資料的穩定性安全性等等有非常好的保障,如中國移動中國聯通這樣的公司才會選擇硬負載進行操作;更多的公司考慮到成本原因,會選擇使用軟體負載均衡,軟體負載均衡是利用現有的技術結合主機硬體實現的一種訊息佇列分發機制

nginx支援的負載均衡排程演算法方式如下:

weight輪詢(預設):接收到的請求按照順序逐一分配到不同的後端伺服器,即使在使用過程中,某一台後端伺服器宕機,nginx會自動將該伺服器剔除出佇列,請求受理情況不會受到任何影響。 這種方式下,可以給不同的後端伺服器設定乙個權重值(weight),用於調整不同的伺服器上請求的分配率;權重資料越大,被分配到請求的機率越大;該權重值,主要是針對實際工作環境中不同的後端伺服器硬體配置進行調整的。

ip_hash:每個請求按照發起客戶端的ip的hash結果進行匹配,這樣的演算法下乙個固定ip位址的客戶端總會訪問到同乙個後端伺服器,這也在一定程度上解決了集群部署環境下session共享的問題。

fair:智慧型調整排程演算法,動態的根據後端伺服器的請求處理到響應的時間進行均衡分配,響應時間短處理效率高的伺服器分配到請求的概率高,響應時間長處理效率低的伺服器分配到的請求少;結合了前兩者的優點的一種排程演算法。但是需要注意的是nginx預設不支援fair演算法,如果要使用這種排程演算法,請安裝upstream_fair模組

url_hash:按照訪問的url的hash結果分配請求,每個請求的url會指向後端固定的某個伺服器,可以在nginx作為靜態伺服器的情況下提高快取效率。同樣要注意nginx預設不支援這種排程演算法,要使用的話需要安裝nginx的hash軟體包

在高連線併發的情況下,nginx是apache伺服器不錯的替代品: nginx在美國是做虛擬主機生意的老闆們經常選擇的軟體平台之一. 能夠支援高達 50,000 個併發連線數的響應。

可以作為郵件伺服器,檔案伺服器,而且操作十分簡潔。

nginx web伺服器是乙個 安裝非常的簡單 , 配置檔案 非常簡潔(還能夠支援perl語法), bugs非常少的伺服器: nginx 啟動特別容易, 並且幾乎可以做到7*24不間斷執行,即使執行數個月也不需要重新啟動. 你還能夠 不間斷服務的情況下進行軟體版本的公升級.

unix網路程式設計(筆記一)

一。1.乙個長時間執行的程式,即守護程序,它只在響應來自網路的請求時才傳送網路訊息。2.通常乙個客和每次只與乙個伺服器通訊,不過以web瀏覽器為例子,該客戶端程式卻可以與多個不同的web伺服器通訊。3.tcp ip 協議簇 也稱為 網際協議簇 4.英特網 和 網際網 網際網路是乙個網際網 網際網是採...

網路程式設計學習筆記一

本學期開始學習網路程式設計,第乙個任務是學時tcp ip客戶端伺服器的搭建 用c寫伺服器端 server.cpp pragma comment lib,ws2 32.lib 預編譯 include include int main int argc,char argv printf s li sca...

python核心程式設計筆記 網路程式設計(一)

套接字 通訊端點 列印伺服器是硬體伺服器的乙個例子。它們處理傳入的列印作業並將其傳送給系統中的列印裝置。這樣的計算機通常可以通過網路進行訪問,並且客戶端計算機向它傳送列印請求。另乙個例子是檔案伺服器。這些通常是擁有龐大的儲存容量的計算機,可悲客戶端遠端訪問,支援檔案伺服器的乙個最流行的網路作業系統是...