PostgreSQL 前端/后端協(xié)議

2021-09-14 16:38 更新

PostgreSQL使用一種基于消息的協(xié)議用于前端和后端(服務(wù)器和客戶機(jī))之間通訊。該協(xié)議是在TCP/IP和Unix 域套接字上實(shí)現(xiàn)的。端口號(hào) 5432 已經(jīng)在IANA 注冊為支持這種協(xié)議的服務(wù)器的常用端口,但實(shí)際上任何非特權(quán)端口號(hào)都可以使用。

這份文檔描述了版本3.0的協(xié)議,它在PostgreSQL版本 7.4 和以后的版本中實(shí)現(xiàn)。對(duì)于以前版本協(xié)議的描述,請(qǐng)參考以前版本的PostgreSQL文檔。一臺(tái)服務(wù)器能夠支持多種協(xié)議版本。初始的啟動(dòng)請(qǐng)求消息告訴服務(wù)器客戶端嘗試使用哪個(gè)協(xié)議版本。如果客戶端請(qǐng)求的主版本不被服務(wù)器支持,連接將被拒絕(例如,如果客戶端請(qǐng)求的協(xié)議版本是4.0就會(huì)發(fā)生這種情況,因?yàn)樵趯懽鬟@份文檔時(shí),4.0根本還不存在)。如果客戶端請(qǐng)求的次版本不被服務(wù)器支持(例如客戶端請(qǐng)求版本3.1,但服務(wù)器僅支持3.0),服務(wù)器可能會(huì)拒絕該連接或者用一個(gè)包含它支持的最高次協(xié)議版本的NegotiateProtocolVersion消息進(jìn)行響應(yīng)。然后客戶端可以選擇使用指定的協(xié)議版本繼續(xù)連接或者中止連接。

為了可以有效地為多個(gè)客戶端提供服務(wù),服務(wù)器為每個(gè)客戶端派生一個(gè)新的后端進(jìn)程。 在目前的實(shí)現(xiàn)里,在檢測到新來的連接請(qǐng)求后,馬上創(chuàng)建一個(gè)新的子進(jìn)程。 不過,這些是對(duì)協(xié)議透明的。對(duì)于協(xié)議而言,術(shù)語后端服務(wù)器是可以互換的; 類似的還有前端客戶端也是可以互換的。


以上內(nèi)容是否對(duì)您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)