摘要:現(xiàn)有的服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請求。賦予高可用性讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。
【編者按】本文主要介紹 NGINX 的主要功能以及如何通過 Nginx 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。
本文上一篇系: 利用 NGINX 最大化 Python 性能,第一部分:Web 服務(wù)和緩存。
Python 以其高性能腳本語言而著稱,而 NGINX 則能夠通過增加代碼的實(shí)際執(zhí)行速度來提供助力。對于單一服務(wù)器來說,如果網(wǎng)頁的一半由靜態(tài)文件組成(很多網(wǎng)頁都有一半由靜態(tài)文件組成),增加靜態(tài)文件緩存可使這類網(wǎng)頁性能翻倍,緩存動(dòng)態(tài)應(yīng)用程序內(nèi)容能夠進(jìn)一步提升應(yīng)用程序性能。
但這種方法并不是對所有應(yīng)用都受用,或者說提升的性能不足夠。這時(shí)就要考慮橫向擴(kuò)展了---遷移到多服務(wù)器應(yīng)用。多服務(wù)器應(yīng)用不僅功能強(qiáng)大、使用靈活、幾乎能夠無限擴(kuò)展,而且成本較低。讓我們繼續(xù)前面的優(yōu)化 Python 性能。
技巧 6---將 NGINX 作為反向代理服務(wù)器從單服務(wù)器環(huán)境來講,部署反向代理服務(wù)器似乎是個(gè)很大的進(jìn)步,因?yàn)檫@一部署非常簡單,實(shí)現(xiàn)的功能卻相當(dāng)強(qiáng)大。添加反向代理服務(wù)器后,不僅性能立即得到大幅提升,還有機(jī)會(huì)實(shí)現(xiàn):
增強(qiáng)性能 --- 在現(xiàn)有的 Python 應(yīng)用程序前放置一個(gè) NGINX 服務(wù)器。無需更改 Web 服務(wù)器軟件或配置。現(xiàn)有的 Web 服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請求。
優(yōu)化性能 --- 按照我們上一篇介紹 Python 的文章,針對應(yīng)用程序生成的文件實(shí)施靜態(tài)文件緩存和微應(yīng)用緩存。但現(xiàn)在,我們要在新的反向代理服務(wù)器而不是應(yīng)用程序服務(wù)器上實(shí)施。運(yùn)行應(yīng)用程序的服務(wù)器明顯減輕了工作負(fù)載,這樣就擴(kuò)充了應(yīng)用程序的容量,讓所有用戶都能感受到更高性能。
橫向擴(kuò)展 — 增加更多應(yīng)用程序服務(wù)器并對其實(shí)施負(fù)載均衡,利用持續(xù)會(huì)話實(shí)現(xiàn)每位用戶的連貫體驗(yàn)。
賦予高可用性 — 讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。
監(jiān)控與管理 — NGINX Plus 提供了高級監(jiān)測與管理功能,同時(shí)配備主動(dòng)體檢 —— 如果設(shè)定了主動(dòng)體檢,反向代理服務(wù)器會(huì)主動(dòng)向各個(gè)服務(wù)器發(fā)出帶外請求,核實(shí)各個(gè)服務(wù)器的可用性。
技巧 7---重寫 URLWeb 服務(wù)器配置通常包括 URL 重寫規(guī)則。你可以制作美觀的 URL 方便用戶理解,也可以讓 URL 在資源遷移后仍然不變。
NGINX 配置(包括重寫 URL)使用的指令數(shù)量較少,也被眾多人士認(rèn)為是簡單明了。但如果不熟悉,使用前還是要經(jīng)歷一個(gè)學(xué)習(xí)過程??梢园?Creating NGINX Rewrite Rules 這篇文章當(dāng)做介紹。
下面給出一個(gè)使用重寫指令的 NGINX 重寫規(guī)則樣板。此規(guī)則查找了以 /download開頭的 URL,之后還在路徑中包含 /media/ 或 /audio/ 目錄。此規(guī)則用 /mp3/ 替換這些元素,并增加合適的文件擴(kuò)展名 .mp3 或 .ra。變量 (1 和 )2 獲取保持不變的路徑元素。例如,/download/cdn-west/media/file1 變成 /download/cdn-west/mp3/file1.mp3。
server { ... rewrite ^(/download/.*)/media/(.*)..*$ $1/mp3/$2.mp3 last; rewrite ^(/download/.*)/audio/(.*)..*$ $1/mp3/$2.ra last; return 403; ... }
要在 NGINX 中實(shí)現(xiàn)類似 Apache 的效果,你可以在第一個(gè)服務(wù)器塊中匹配短 URL 的請求,然后把它們重定向到匹配長 URL 的第二個(gè)服務(wù)器塊。
# USE THIS CONVERSION server { listen 80; server_name example.org; return 301 http://www.example.org$request_uri; } server { listen 80; server_name www.example.org; ... }技巧 8---實(shí)施負(fù)載均衡
擴(kuò)充網(wǎng)站容量、提高網(wǎng)站可用性的終極辦法就是運(yùn)行多臺應(yīng)用程序服務(wù)器并實(shí)施負(fù)載均衡。
配備 NGINX 的負(fù)載均衡 PHP 服務(wù)器,要實(shí)現(xiàn) NGINX 負(fù)載均衡,首先用你需要均衡的各個(gè)服務(wù)器來創(chuàng)建一個(gè)服務(wù)器群組。然后編寫配置代碼,代碼包括服務(wù)器權(quán)重---如果服務(wù)器的處理能力較強(qiáng),請給它分配較大的權(quán)重,給它送去更多流量。
upstream stream_backend { server backend1.example.com:12345 weight=5; server backend2.example.com:12345; server backend3.example.com:12346; }技巧 9---啟用會(huì)話持續(xù)性和會(huì)話耗盡
網(wǎng)絡(luò)默認(rèn)用于無狀態(tài)交互;如果需要特定狀態(tài)的信息,可以通過若干方法來實(shí)施。如果狀態(tài)位于應(yīng)用程序服務(wù)器上,就得讓這臺服務(wù)器在會(huì)話期間處理指定用戶的所有請求,這就叫做會(huì)話持續(xù)。
要管理多個(gè)負(fù)載均衡的服務(wù)器,會(huì)話耗盡是一項(xiàng)有效工具。利用 NGINX Plus在一臺服務(wù)器上的上游群組中設(shè)置耗盡參數(shù),NGINX Plus 會(huì)讓這臺服務(wù)器放松下來,不會(huì)給它發(fā)送新的請求,而是讓現(xiàn)有連接繼續(xù)下去,直到會(huì)話結(jié)束。
技巧 10---啟用監(jiān)控和管理功能如果服務(wù)器配置較為復(fù)雜,在保持高性能和避免宕機(jī)時(shí),監(jiān)測和管理就變得尤其重要。監(jiān)控 NGINX 狀態(tài)頁,在服務(wù)器可能遇到麻煩時(shí)通知用戶,讓用戶監(jiān)測自己的系統(tǒng),根據(jù)信息在問題發(fā)生前采取行動(dòng)。
NGINX 提供了一個(gè)內(nèi)置控制面板來監(jiān)測 NGINX 服務(wù)器的健康狀況。你可以收集 NGIGX 面板數(shù)據(jù)確定每臺特定服務(wù)器是否有問題。
結(jié)論Python 創(chuàng)建的網(wǎng)站要能夠同時(shí)吸引眾多用戶,那就需要強(qiáng)大的性能支持,如果你采用的是 Nginx 做 Web 服務(wù)器,可以從上面10個(gè)方面來優(yōu)化性能。
本文轉(zhuǎn)自 OneAPM 官方博客
原文地址:Maximizing Python Performance with NGINX, Part II: Load Balancing and Monitoring
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/39289.html
摘要:現(xiàn)有的服務(wù)器和應(yīng)用程序服務(wù)器相結(jié)合并在一個(gè)冒泡中運(yùn)行,無法直接接觸網(wǎng)絡(luò)流量,由反向代理服務(wù)器提出填鴨式請求。賦予高可用性讓你的反向代理服務(wù)器鏡像到在線備份,同時(shí)擁有備用的應(yīng)用程序服務(wù)器,讓你的站點(diǎn)高度可用。 【編者按】本文主要介紹 NGINX 的主要功能以及如何通過 Nginx 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 本文上一篇系: 利用...
摘要:無論是將其用作的服務(wù)器反向代理服務(wù)器負(fù)載均衡器,還是同時(shí)使用以上三種功能,和都能帶來很大好處。再就是下篇文章會(huì)介紹如何把和當(dāng)作反向代理服務(wù)器和多個(gè)應(yīng)用程序服務(wù)器的負(fù)載均衡器。而使用將會(huì)有助于解決這一問題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過 NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 Python 的著名之...
摘要:無論是將其用作的服務(wù)器反向代理服務(wù)器負(fù)載均衡器,還是同時(shí)使用以上三種功能,和都能帶來很大好處。再就是下篇文章會(huì)介紹如何把和當(dāng)作反向代理服務(wù)器和多個(gè)應(yīng)用程序服務(wù)器的負(fù)載均衡器。而使用將會(huì)有助于解決這一問題。 【編者按】本文主要介紹 nginx 的主要功能以及如何通過 NGINX 優(yōu)化 Python 應(yīng)用性能。本文系國內(nèi) ITOM 管理平臺 OneAPM 編譯呈現(xiàn)。 Python 的著名之...
摘要:第二部分介紹當(dāng)當(dāng)?shù)膹椥曰虚g件。第三部分當(dāng)當(dāng)?shù)脑苹贰O旅娌糠质菫楫?dāng)當(dāng)運(yùn)營人員與合作伙伴提供的系統(tǒng),如商品價(jià)格庫存等。下圖是當(dāng)當(dāng)?shù)谋O(jiān)控系統(tǒng)以及限流系統(tǒng)的。當(dāng)當(dāng)采用的作業(yè)中間件是自研的,它可以將一個(gè)完整的作業(yè)拆分為多個(gè)相互獨(dú)立的任務(wù)。 showImg(https://segmentfault.com/img/remote/1460000009999152); 6月24日,雙態(tài)運(yùn)維·烏鎮(zhèn)...
摘要:是一個(gè)相對比較新的微服務(wù)框架,年才推出的版本雖然時(shí)間最短但是相比等框架提供的全套的分布式系統(tǒng)解決方案。提供線程池不同的服務(wù)走不同的線程池,實(shí)現(xiàn)了不同服務(wù)調(diào)用的隔離,避免了服務(wù)器雪崩的問題。通過互相注冊的方式來進(jìn)行消息同步和保證高可用。 Spring Cloud 是一個(gè)相對比較新的微服務(wù)框架,...
閱讀 4675·2021-10-25 09:48
閱讀 3244·2021-09-07 09:59
閱讀 2267·2021-09-06 15:01
閱讀 2737·2021-09-02 15:21
閱讀 2752·2019-08-30 14:14
閱讀 2211·2019-08-29 13:59
閱讀 2548·2019-08-29 11:02
閱讀 2560·2019-08-26 13:33