1. 程式人生 > >gRPC 介紹及簡單使用

gRPC 介紹及簡單使用

gRPC 官方文件中文版:http://doc.oschina.net/grpc?t=56831

gRPC 是什麼?

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

 

 

gRPC 客戶端和服務端可以在多種環境中執行和互動 - 從 google 內部的伺服器到你自己的筆記本,並且可以用任何 gRPC

支援的語言來編寫。所以,你可以很容易地用 Java 建立一個 gRPC 服務端,用 Go、Python、Ruby 來建立客戶端。此外,Google 最新 API 將有 gRPC 版本的介面,使你很容易地將 Google 的功能整合到你的應用裡。

使用 protocol buffers

gRPC 預設使用 protocol buffers,這是 Google 開源的一套成熟的結構資料序列化機制(當然也可以使用其他資料格式如 JSON)。正如你將在下方例子裡所看到的,你用 proto files 建立 gRPC 服務,用 protocol buffers 訊息型別來定義方法引數和返回型別。你可以在

Protocol Buffers 文件找到更多關於 Protocol Buffers 的資料。

Protocol buffers 版本

儘管 protocol buffers 對於開源使用者來說已經存在了一段時間,例子內使用的卻一種名叫 proto3 的新風格的 protocol buffers,它擁有輕量簡化的語法、一些有用的新功能,並且支援更多新語言。當前針對 Java 和 C++ 釋出了 beta 版本,針對 JavaNano(即 Android Java)釋出 alpha 版本,在protocol buffers Github 原始碼庫裡有 Ruby 支援, 在golang/protobuf Github 原始碼庫

裡還有針對 Go 語言的生成器, 對更多語言的支援正在開發中。 你可以在 proto3 語言指南裡找到更多內容, 在與當前預設版本的釋出說明比較,看到兩者的主要不同點。更多關於 proto3 的文件很快就會出現。雖然你可以使用 proto2 (當前預設的 protocol buffers 版本), 我們通常建議你在 gRPC 裡使用 proto3,因為這樣你可以使用 gRPC 支援全部範圍的的語言,並且能避免 proto2 客戶端與 proto3 服務端互動時出現的相容性問題,反之亦然。

你好 gRPC!

現在你已經對 gRPC 有所瞭解,瞭解其工作機制最簡單的方法是看一個簡單的例子。 Hello World 將帶領你建立一個簡單的客戶端——服務端應用,向你展示:

  • 通過一個 protocol buffers 模式,定義一個簡單的帶有 Hello World 方法的 RPC 服務。
  • 用你最喜歡的語言(如果可用的話)來建立一個實現了這個介面的服務端。
  • 用你最喜歡的(或者其他你願意的)語言來訪問你的服務端。

這個例子完整的程式碼在我們 GitHub 原始碼庫的 examples 目錄下。我們使用 Git 版本系統來進行原始碼管理,但是除了如何安裝和執行一些 Git 命令外,你沒必要知道其他關於 Git 的任何事情。需要注意的是,並不是所有 gRPC 支援的語言都可以編寫我們例子的服務端程式碼,比如 PHP 和 Objective-C 僅支援建立客戶端。比起針對於特定語言的複雜教程,這更像是一個介紹性的例子。你可以在本站找到更有深度的教程,gRPC 支援的語言的參考文件很快就會全部開放。

例項參考:https://blog.csdn.net/linuxarmsummary/article/details/79467412