gRPC學習筆記1 簡單介紹

2021-10-23 02:30:49 字數 2004 閱讀 2507

grpc 是谷歌開源的輕量級 rpc 通訊框架,在微服務架構中經常用到。

grpc 是谷歌開源的輕量級 rpc 通訊框架,其中的通訊協議基於二進位制資料流,使得 grpc 具有優異的效能。

grpc 支援 http 2.0 協議,使用二進位制幀進行資料傳輸,還可以為通訊雙方建立持續的雙向資料流。

基礎概念

在grpc中,客戶端應用程式可以直接呼叫不同機器上伺服器應用程式上的方法,就好像它是本地物件一樣,這使建立分布式應用程式和服務變得很容易。

分解介紹:

grpc使得客戶機和伺服器可以在不同環境中執行和相互通訊,比如分布在不同地區,物理環境。和支援各種開發語言進行開發。

兩個微服務之間通過基於 http 2.0 二進位制資料幀通訊,使用 grpc 內建的 protobuf 協議,其 dsl 語法 可清晰定義服務間通訊的資料結構

對應 開發語言中的 struct 和 函式, grpc 通過 protobuf 通訊協議來描述(定義)序列化的資料的結構和服務呼叫方法。

下面分別描述:

protobuf 中 ,用 message 表示傳輸的 資料結構實體物件,示例:

message person
它描述了傳輸過程中的訊息的資料結構,protobuf 提供了序列化和反序列化的方法。protobuf 提供了編譯和生成**的工具,通過 protoc 工具生成基於各個開發語言的源**。可以參考我的另一篇文章go 語言中使用 protocol buffers。

就像開發語言中的函式,方法,服務定義 可以定義和描述 資料訪問方法,描述了方法名稱,呼叫引數,和返回引數等,示例:

// the greeter service definition.

service greeter

}// the request message containing the user's name.

message hellorequest

// the response message containing the greetings

message helloreply

這裡定義的服務方法,也可以借助 protobuf 生成源**。然後它作為服務端和客戶端之間的呼叫方法約定。

grpc 允許你定義四類服務方法:

即客戶端傳送乙個請求給服務端,從服務端獲取乙個應答,就像一次普通的函式呼叫。

rpc sayhello(hellorequest) returns (helloresponse)
即客戶端傳送乙個請求給服務端,可獲取乙個資料流用來讀取一系列訊息。客戶端從返回的資料流裡一直讀取直到沒有更多訊息為止。

rpc lotsofreplies(hellorequest) returns (stream helloresponse)
即客戶端用提供的乙個資料流寫入並傳送一系列訊息給服務端。一旦客戶端完成訊息寫入,就等待服務端讀取這些訊息並返回應答。

rpc lotsofgreetings(stream hellorequest) returns (helloresponse)
即兩邊都可以分別通過乙個讀寫資料流來傳送一系列訊息。

rpc bidihello(stream hellorequest) returns (stream helloresponse)
grpc 允許客戶端在呼叫乙個遠端方法前指定乙個最後期限值。

客戶端或者服務端都可以再任何時間取消乙個 rpc 呼叫

乙個簡單的 rpc 形式:客戶端發出單個請求,獲得單個響應。

quickstart

基本概念

指南grpc 官方文件中文版

end

grpc學習筆記

在 grpc 裡客戶端應用可以像呼叫本地物件一樣直接呼叫另一台不同的機器上服務端應用的方法,使得您能夠更容易地建立分布式應用和服務。與許多 rpc 系統類似,grpc 也是基於以下理念 定義乙個服務,指定其能夠被遠端呼叫的方法 包含引數和返回型別 在服務端實現這個介面,並執行乙個 grpc 伺服器來...

gRPC學習筆記 一 gRPC簡述

rpc 遠端過程呼叫 remote procedure call 是一種通過網路從其它程序或者其他主機上的程序請求服務的方式。rpc是分布式系統的基礎。grpc是主要由google公司開發的乙個高效能 通用的開源rpc框架。grpc基於http2.0協議,基於protobuf序列化協議,語言中立 平...

GRPC學習筆記(一)

專案中要使用rpc協議框架來實現兩個系統之間的介面呼叫。a系統呼叫b系統的相應介面,因為考慮到http請求會包含更多冗餘資訊,造成請求過大,因此選用了rpc眾多框架中的grpc。grpc是google開源的rpc框架,目前版本1.0.0,看jar包引入包括netty與okhttp,同時序列化中使用的...