gRPC的Channel

HTTP/1.1已經(jīng)面世20年了,被互聯(lián)網(wǎng)界廣泛應用,但是它的一些特性導致它無法適用于海量應用。HTTP/1.1會建立一個TLS保護的long-lived TCP連接,后續(xù)的交互數(shù)據(jù)都會通過這個連接傳輸。但是如果這個連接正在被一個耗時較長的請求占用,那么后續(xù)發(fā)出的請求只能等待,這就是隊頭阻塞(Head of line blocking)。

HTTP/2引入了流的概念,一個TCP連接可以包含多個雙向流(Stream),每個流中可以傳輸若干消息(Message),每個消息由若干二進制幀(Frame)組成??蛻舳撕头斩丝梢园袶TTP消息分解成獨立的幀交錯傳輸,然后在另一端組裝。這樣即使是某一個大消息的響應時間過長,也不會影響到后續(xù)的請求,如果后發(fā)請求的響應幀先到齊,客戶端可以根據(jù)幀頭的信息把消息組裝起來繼續(xù)處理。

gRPC基于HTTP/2,gRPC的Channel利用了流的機制。Channel是一個虛擬的連接,它其實對應了多個連接以及多個流。RPC調(diào)用實際上就是HTTP/2的流,通過其中一個連接傳遞,RPC調(diào)用的消息以幀的形式發(fā)送,根據(jù)消息的大小,即有可能多個消息公用一個幀,也有可能一個消息分割成多個幀。




https://grpc.io/blog/grpc_on_http2/

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

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