## gRPC來(lái)源
2015年,谷歌開(kāi)源了他們的項(xiàng)目,該項(xiàng)目最終被稱為gRPC。但gRPC中的“g”實(shí)際上代表什么?很多人可能認(rèn)為這是為了谷歌,因?yàn)楣雀柚圃炝怂?,但它沒(méi)有。谷歌更改了每個(gè)版本的“g”的含義,以至于他們甚至制作了一個(gè)README來(lái)列出所有含義。
gRPC是一種用于實(shí)現(xiàn)RPC API的技術(shù)。由于gRPC是開(kāi)源框架,通信雙方都基于該框架進(jìn)行二次開(kāi)發(fā),從而使得通信雙方聚焦在業(yè)務(wù),無(wú)需關(guān)注由gRPC軟件框架實(shí)現(xiàn)的底層通信。如下圖,DATA部分即為業(yè)務(wù)層面內(nèi)容,DATA下面所有的信息都由gRPC進(jìn)行封裝。
## 什么是gRPC ProtoBuf?
gRPC ProtoBuf是gRPC協(xié)議的接口描述語(yǔ)言,是一種與語(yǔ)言無(wú)關(guān)、平臺(tái)無(wú)關(guān)、擴(kuò)展性好的用于通信協(xié)議、數(shù)據(jù)存儲(chǔ)的序列化結(jié)構(gòu)數(shù)據(jù)格式。gRPC ProtoBuf編碼格式也稱為GPB(Google Protocol Buffers)編碼格式。GPB提供了一種靈活、高效、自動(dòng)序列化結(jié)構(gòu)數(shù)據(jù)的機(jī)制。GPB與XML、JSON編碼類似,也是一種編碼方式,但不同的是,它是一種二進(jìn)制編碼,性能好,效率高。
REST(Representational State Transfer)表征狀態(tài)轉(zhuǎn)移,是一種軟件架構(gòu)風(fēng)格,用于指導(dǎo)WEB架構(gòu)的設(shè)計(jì)和開(kāi)發(fā)。REST同樣為管理和配置網(wǎng)絡(luò)設(shè)備提供了一種API接口設(shè)計(jì)的方法。gRPC與REST兩者的主要差異如下:
功能 | gRPC | [[W20250400136 |
---|---|---|
協(xié)定 | 必需 (.proto ) |
必須(.xml) |
協(xié)議 | HTTP/2 | HTTP |
Payload | Protobuf(小型,二進(jìn)制) | XML(大型,人工可讀取) |
規(guī)定性 | 嚴(yán)格規(guī)范 | 嚴(yán)格規(guī)范 |
流式處理 | 客戶端、服務(wù)器,雙向 | 客戶端、服務(wù)器 |
瀏覽器支持 | 無(wú)(需要 grpc-web) | 是 |
安全性 | 傳輸 (TLS) | WS-security規(guī)范 |
客戶端代碼生成 | 是 | 三方工具均支持 |
gRPC官網(wǎng)
gRPC開(kāi)源框架
gRPC 基礎(chǔ)概念詳解
gRPC高性能的原因