小程序應(yīng)用的Python服務(wù)器部署高配,依然是騰訊云秒殺阿里云!

上一篇文章,“小程序創(chuàng)業(yè)最低配置部署,騰訊云折扣秒殺阿里云!”介紹了小程序項目啟動時的最低配置服務(wù)器選擇,但當(dāng)項目良好發(fā)展時,還是要把服務(wù)器配置調(diào)整到標(biāo)準(zhǔn)水平,承受住日益增長的流量訪問。

隨著Python的流行,直接用Python來部署Web服務(wù)器變成一個需求。但Python自帶的Flask或傳統(tǒng)的DJango都是基于阻塞io模型實現(xiàn),性能上往往達不到生產(chǎn)環(huán)境大規(guī)模跑用戶的需求。Tornado在底層io處理機制上和django以及flask有著根本的區(qū)別,采用了非阻塞io模型,也特別適合小程序用python實現(xiàn)服務(wù)端時的部署。

1. 確定Tornado的部署架構(gòu)

下圖是一般Tornado用作生產(chǎn)環(huán)境的標(biāo)準(zhǔn)部署架構(gòu)。核心思想是在一臺服務(wù)器上要運行多個tornado實例,然后使用nginx作反向代理服務(wù)器,nginx會把客戶端請求中轉(zhuǎn)到適當(dāng)?shù)膖ornado服務(wù)器進程。

運行多個Tornado進程實例的原因是同步請求時,在應(yīng)用處理過程中(如數(shù)據(jù)庫查詢,磁盤訪問),服務(wù)器進程不能接受新請求,所以需要運行多個服務(wù)器進程實例。而在異步請求時,在應(yīng)用處理時,服務(wù)器進程是非阻塞的,可以接受新請求,因此tornado的非阻塞架構(gòu)本身就很好地解決這個問題。


2. 云服務(wù)器比較

一般建議每個Tornado進程實例對應(yīng)1個CPU,所以建議購買4核8G或者是8核16G的服務(wù)器。我們比較了騰訊云和阿里云的服務(wù)器價格,都是按照優(yōu)惠價格比較,依然是騰訊云秒殺阿里云。

騰訊云的“云服務(wù)器三折起”優(yōu)惠活動對4核8G和8核16G的服務(wù)器有超劃算的優(yōu)惠。見下圖,左邊選擇“8核16G”,右邊選擇“重慶”,1年付可以拿到3.8折,才3149.59元。

左邊如果選擇“4核8G”的話,1年付將是2000元左右更優(yōu)惠。一般情況下4核8G配置也已足夠,但考慮“8核16G”只貴了1000元1年,在有預(yù)算的時候,不妨選擇“8核16G”,當(dāng)有突發(fā)負(fù)載時更有緩沖的余量。

與之相對應(yīng)的阿里云,“性能級主機2-5折”是目前在搞的ECS優(yōu)惠活動。類似的“8核16G”將需要4466元/年。如果只有3000元預(yù)算的話,只有購買4核8G云服務(wù)器,或者是“8核16G”的突發(fā)型實例(即負(fù)載不能一直跑滿100%)。

3. NGinx配置

NGinx的反向代理安裝和配置是運維標(biāo)配了。我們這里著重兩個環(huán)節(jié),a) 反向代理到4個Tornado實例;b) 配置SSL。

下面所列的NGinx配置示例主要就考慮了這兩點,重點關(guān)注upstream和ssl的配置。

user nginx;

worker_processes 5;

error_log /var/log/nginx/error.log;

pid /var/run/nginx.pid;

events {

? ? worker_connections 1024;

? ? use epoll;

}

proxy_next_upstream error;

upstream tornadoes {

? ? server 127.0.0.1:8000;

? ? server 127.0.0.1:8001;

? ? server 127.0.0.1:8002;

? ? server 127.0.0.1:8003;

}

server {

? ? listen 443;

? ? ssl on;

? ? ssl_certificate /path/to/cert.pem;

? ? ssl_certificate_key /path/to/cert.key;

? ? server_name www.example.org *.example.org;

? ? location /static/ {

? ? ? ? root /var/www/static;

? ? ? ? if ($query_string) {

? ? ? ? ? ? expires max;

? ? ? ? }

? ? }

? ? location / {

? ? ? ? proxy_pass_header Server;

? ? ? ? proxy_set_header Host $http_host;

? ? ? ? proxy_redirect off;

? ? ? ? proxy_set_header X-Real-IP $remote_addr;

? ? ? ? proxy_set_header X-Scheme $scheme;

? ? ? ? proxy_pass http://tornadoes;

? ? }

}

4. 利用Supervisor管理部署tornado進程。

詳細(xì)操作可以參見這篇文章,使用python3+supervisor+nginx部署tornado。


更多省錢秘笈,請看:

阿里云如何跨賬號打通,多賬號同時享受2折優(yōu)惠

零門檻申請阿里云1萬元代金券

如何選擇阿里云固定帶寬節(jié)省50%費用

阿里云包年包月服務(wù)器如何退款

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容