摘要 在上一篇文章中,我們聊了聊gRPC是怎么管理一條從Client到Server的連接的。 我們聊到了gRPC擁有Resolver,用來解析地址;擁有Balancer,用來做負載均衡。 在這一篇文章中,我們將從代碼的角度來分析gRPC是怎么設計Resolver和Balancer的,並會 ...
寫在前面 在這個系列的文章中,我們將會從源碼的層面學習和理解gRPC。 整個系列的文章的計划大概是這樣的:我們會先從客戶端開始,沿着調用路徑逐步分析到服務端,以模塊為粒度進行學習,考慮這個模塊是為了解決什么問題,然后思考gRPC應該怎么去解決這個問題。在分析完這部分的架構設計后,我們會在接下來的一篇文章中研究具體的代碼實現。 因此,這個系列的文章不會像之前的源碼分析那樣貼一大段的代碼,然后加上注 ...
2021-01-24 17:05 1 535 推薦指數:
摘要 在上一篇文章中,我們聊了聊gRPC是怎么管理一條從Client到Server的連接的。 我們聊到了gRPC擁有Resolver,用來解析地址;擁有Balancer,用來做負載均衡。 在這一篇文章中,我們將從代碼的角度來分析gRPC是怎么設計Resolver和Balancer的,並會 ...
當我們連接到一個失敗的后端時,通常希望不要立即重試(以避免泛濫的網絡或服務器的請求),而是做某種形式的指數backoff。 我們有幾個參數: INITIAL_BACKOFF (第一次失敗重試前后需等待多久) MULTIPLIER (在失敗的重試后乘以的倍數) JITTER (隨機 ...
摘要 在這篇文章中,主要是跟你介紹一下gRPC這個東西。 然后,我會創建一個簡單的練習項目,作為gRPC的Hello World項目。 在這個項目中,只有很簡單的一個RPC函數,用於說明gRPC的工作方式。 此外,我也會跟你分享一下我初次接觸gRPC所遇到的一些坑,主要是在protocol ...
准備依賴 測試HelloWorld 打開server $env:GOPATH\src\github.com\grpc\grpc-go\examples\helloworld\greeter_server go run main.go 打開client $env:GOPATH\src ...
HttpClient連接管理 主機間建立網絡連接是個非常復雜跟耗時的過程(例如TCP三次握手bla bla),在HTTP請求中,如果可以復用一個連接來執行多次請求,可以很大地提高吞吐量。 HttpClient中,連接就是一種可以復用的資源。它提供了一系列連接管理的API,幫助我們處理連接管理 ...
時間等。 比較重要的時間概念代碼如下: boneCP對連接的管理 MySQL對連接有最大空閑時 ...
TCP的運輸連接管理 TCP是面向連接的協議,有三個階段:連接建立、數據傳送 和 連接釋放。運輸連接的管理就是使運輸連接的簡歷和釋放都能正常地進行。 在TCP連接建立過程中要解決一下三個問題: 1、 要使每一方都能夠確知對方的存在: 所以需要三次握手。 2、 要允許雙方協商一些參數 ...
熟悉我的小伙伴都知道,我之前肝了本《HTTP 核心總結》的 PDF,這本 PDF 是取自我 HTTP 系列文章的匯總,然而我寫的 HTTP 相關內容都是一年前了,我回頭看了一下這本 PDF,雖然內容不 ...