2 回答

TA貢獻(xiàn)1866條經(jīng)驗(yàn) 獲得超5個(gè)贊
WSGI
協(xié)議特定于 Python1。使用 Go,你有三個(gè)選項(xiàng)(實(shí)際上是四個(gè),但CGI
對(duì)于中到高負(fù)載設(shè)置,應(yīng)該不考慮普通):
HTTP
Go 標(biāo)準(zhǔn)庫(kù)的內(nèi)置服務(wù)設(shè)施。在這種情況下,您的應(yīng)用程序是一個(gè)獨(dú)立的服務(wù)器。這可能是最簡(jiǎn)單的設(shè)置,但可能存在以下問題:
要在特權(quán)端口號(hào)(低于 1024,并且 80 在此范圍內(nèi))上以降級(jí)的特權(quán)(您必須這樣做)運(yùn)行您的應(yīng)用程序,您需要使用專門的包裝器或 POSIX 功能。
為了在不丟失連接的情況下提供優(yōu)雅的重新部署,您需要另一個(gè)包裝器(如
goagain
)。與上面相同,但在
HTTP
Web 服務(wù)器形式的反向代理后面。主要消除了獨(dú)立變體的問題,但仍然有
HTTP
來(lái)回傳遞全流量的開銷。FastCGI
通過(guò)合適的網(wǎng)絡(luò)服務(wù)器。Nginx
并且Apache
(以及許多其他人)對(duì)此沒有意見。FCGI
客戶端實(shí)現(xiàn)在 Go 標(biāo)準(zhǔn)庫(kù)中可用。除了沒有獨(dú)立設(shè)置的問題外,還實(shí)現(xiàn)了更高效的數(shù)據(jù)交換協(xié)議。另一個(gè)好處是您的 Go 服務(wù)器可能使用 Unix 管道與前端 Web 服務(wù)器通信,其傳輸成本低于反向
HTTP
代理變體中涉及的 TCP 套接字。
因此,如果您的設(shè)置當(dāng)前使用WSGI
,我會(huì)說(shuō)使用FCGI
.
1 正如一些評(píng)論者指出的那樣,嚴(yán)格來(lái)說(shuō),這并不完全正確:WSGI 允許將用任何語(yǔ)言編寫的 Web 服務(wù)應(yīng)用程序與 Web 服務(wù)器或應(yīng)用程序服務(wù)器(依次連接到 Web 服務(wù)器)分離。
為了實(shí)現(xiàn)這一點(diǎn),雙方必須使用相同的協(xié)議 WSGI,該協(xié)議與語(yǔ)言無(wú)關(guān)。盡管如此,似乎大多數(shù)不是用 Python 編寫的軟件會(huì)使用 HTTP 或 FastCGI 與前端服務(wù)器進(jìn)行通信。
- 2 回答
- 0 關(guān)注
- 520 瀏覽
添加回答
舉報(bào)