RPC呼叫
阿新 • • 發佈:2018-11-02
1.RPC呼叫、本地呼叫和HTTP呼叫
網路呼叫一般是基於HTTP協議進行呼叫,RPC是使用TCP或者UDP協議進行呼叫,效率上回更好;
常用的RPC框架有Thrift、GRPC等;
2.RPC的呼叫時序圖
1)呼叫方呼叫Proxy請求服務,並設定非同步處理器handler;
2)由代理類打包request,並在註冊方(匯流排、路由等)獲取服務提供方的地址,向目標服務方發起請求;
3)由服務方找到對應的處理類和處理方法,並處理髮送方請求;
4)由服務方打包response,返回呼叫方;
設計成什麼樣的呼叫模型? 呼叫資訊通過什麼樣的方式序列化?通過哪種協議傳輸?效能如何?可靠性如何? 分散式系統中最關注的問題:出現 failure 如何應對?如何容錯? 更為全面的服務治理功能(如服務發現、負載均衡等)
服務代理。即實現一個服務介面,被呼叫端實現此服務介面,實現對應的方法邏輯,並寫好 RPC 呼叫資訊接收部分;呼叫端通過 RPC 模組獲取一個服務代理例項,這個服務代理例項繼承了服務介面並封裝了相應的遠端呼叫邏輯(包括訊息的編碼、解碼、傳輸等)。呼叫端通過這個服務代理例項進行 RPC 呼叫。像 Vert.x Service Proxy 和 gRPC 都是這種模型。這樣的 RPC 模組需要具備生成服務代理類的功能
直接呼叫,即設計特定的 API 用於 RPC 呼叫。比如 Golang 的 rpc 包,裡面的 Client 就提供了一個 Call 方法用於任意RPC呼叫,呼叫者需要傳入方法名稱、引數以及返回值指標(非同步模式下傳入 callback handler)