使用gRPC和protobuf建立高效能的API
現在我們構建雲時代的雲原生應用時,微服務能夠有非常好的擴充套件性能。我們需要在各種微服務之間有一種高效能的通訊機制。那麼,基於JSON的api能否提供高效能和高擴充套件性將會是一個問題。JSON是應用之間快速交換資料的格式嗎?rest風格的架構有能力建立複雜的api嗎?我們能夠很容易地使用Restful架構建立雙向的流API?http2提供了比他以前版本更多的功能,這樣我們需要平衡這些新技術來構建下一代的api,這就需要使用gRPC和protocol buffers。
介紹Protocol Buffers
也稱protobuf,是谷歌的語言中立、平臺中立的可擴充套件的序列化結構資料。Protocol buffers更小,更快,更簡單,相比XML和JSON提供了更高效能。
利用protobuf,,你可以定義你的結構化資料,然後生成你選擇程式語言的原始碼,使用稱為protoc的編譯器編譯,編寫和讀取你的結構化資料。當前protocol buffers是proto3,支援C++, Go, Java, Python, Ruby, 和 C#
、
為了從protocol buffers定義檔案生成程式碼,按以下步驟:
1.從https://github.com/google/protobuf.下載protoc編譯器,將本地protoc庫包檔案加入PATH環境,這樣能呼叫protoc編譯器。
2.安裝protoc語言外掛,Go語言使用:
go get -u github.com/golang/protobuf/protoc-gen-go
gRPC介紹
gRPC是一個高效能開源遠端過程呼叫RPC框架,可以執行在客戶端或伺服器端等各個地方,只要想建立通訊。gRPC框架是由Google開發,他們在各種雲產品中使用它已經很長一段時間。
gRPC遵循HTTP/2語義,它允許您建立帶有同步和非同步的通訊模型的服務。它支援傳統的請求/響應模型和雙向流。它能夠建設全雙工流,讓您在各種超強場景下使用:客戶端和伺服器應用程式可以非同步傳送資料流。帶有GRPC移動客戶端了會給你很多效能優點和易於消費的API。
預設gRPC使用 Protocol Buffers作為其介面定義語言IDL,也作為其底層的訊息交換格式。不像JSON和XML,Protocol Buffers
不僅是訊息交換格式,它也用於描述服務介面(服務端點)。因此,它既可用於服務介面也可用於高效的訊息結構。
在gRPC中,你能使用payload訊息定義服務和它的方法,像一個客戶端應用程式和一個RPC系統之間的典型的通訊,客戶端應用程式可以直接呼叫在遠端伺服器上方法,好像是在呼叫客戶端應用程式的本地物件一樣。
參考下文學習使用gRPC和Protocol Buffers基於Go語言建立一個API案例:
Building High Performance APIs In Go Using gRPC An
該API案例原始碼:github
[該貼被admin於2016-10-25 13:40修改過]
相關文章
- protobuf和gRPCRPC
- Cpp(九) gRPC protobuf for C++ 基本使用RPCC++
- GRPC之protobuf理解RPC
- grpc系列- protobuf詳解RPC
- ubuntu編譯grpc & protobufUbuntu編譯RPC
- GRPC與 ProtoBuf 的理解與總結RPC
- 思考gRPC:為什麼是protobufRPC
- gRPC(二)入門:Protobuf入門RPC
- No MFC,Only API——選單的建立和使用 (轉)API
- Spring Boot中使用gRPC與Protobuf驗證教程原始碼Spring BootRPC原始碼
- 《Grpc+Protobuf學習筆記》一、前言RPC筆記
- Go使用grpc+http打造高效能微服務GoRPCHTTP微服務
- 《Grpc+Protobuf學習筆記》一、protobuf安裝生成程式碼外掛RPC筆記
- 《Grpc+Protobuf學習筆記》二、protobuf安裝生成程式碼外掛RPC筆記
- 《Grpc+Protobuf學習筆記》三、go使用docker編譯執行RPC筆記GoDocker編譯
- Segment使用Go、gRPC和Envoy作為後端REST API實現GoRPC後端RESTAPI
- 使用 ASP.NET Core 和 MongoDB 建立 Web APIASP.NETMongoDBWebAPI
- google protocol buffer——protobuf的基本使用和模型分析GoProtocol模型
- 使用Java 18的Vector API提高效能 - martinJavaAPI
- C#語言下使用gRPC、protobuf(Google Protocol Buffers)實現檔案傳輸C#RPCGoProtocol
- [譯] Go 釋出新版 Protobuf APIGoAPI
- GRPC的使用RPC
- grpc python 原始碼分析(1):server 的建立和啟動RPCPython原始碼Server
- C# 使用Fluent API 建立自己的DSLC#API
- 在SAP雲平臺的API portal裡建立和管理APIAPI
- 使用API建立窗體(類似VC的建立過程) (轉)API
- php 中使用 protobufPHP
- java中使用protobufJava
- 使用Domain-Driven建立Hypermedia APIAIAPI
- GRPC——高效能基於HTTP/2的RPC框架RPCHTTP框架
- Protobuf的使用,結合ideaIdea
- C++Protobuf的生成與使用C++
- 使用Golang建立RESTful API的最佳實踐案例GolangRESTAPI
- redis api的使用和理解RedisAPI
- go語言gRPC系列(三) - 使用grpc-gateway同時提供HTTP和gRPC服務GoRPCGatewayHTTP
- 在 Golang 中使用 ProtobufGolang
- Protobuf Java使用嚮導Java
- Google Protobuf 使用 Java 版GoJava