gRPC 簡介

gRPC 簡介

標籤(空格分隔): go,grpc

概述

在 gRPC 中,客戶端應用程序可以直接調用不同計算機上的服務器應用程序上的方法,就像它是本地對象一樣,從而使您更輕鬆地創建分佈式應用程序和服務。與許多 RPC 系統一樣,gRPC 基於定義服務的思想,指定可以使用其參數和返回類型遠程調用的方法。在服務器端,服務器實現此接口並運行 gRPC 服務器來處理客戶端調用。在客戶端,客戶端有一個存根(在某些語言中稱爲客戶端),它提供與服務器相同的方法

gRPC 客戶端和服務器可以在各種環境中運行和通信 - 從 Google 內部的服務器到您自己的桌面 - 並且可以使用 gRPC 支持的任何語言編寫。因此,例如,您可以使用 Go、Python 或 Ruby 中的客戶端輕鬆地在 Java 中創建 gRPC 服務器。此外,最新的 Google API 將具有其接口的 gRPC 版本,讓您可以輕鬆地將 Google 功能構建到您的應用程序中。

使用協議緩衝區 【Protocol Buffers】

默認情況下,gRPC 使用 Protocol Buffers,這是 Google 成熟的開源機制,用於序列化結構化數據(儘管它可以與其他數據格式(如 JSON)一起使用)。以下是其工作原理的快速介紹。如果您已經熟悉協議緩衝區,請隨時跳到下一部分。

使用協議緩衝區的第一步是爲要在 proto 文件中序列化的數據定義結構:這是一個擴展名爲 .proto 的普通文本文件。協議緩衝區數據結構化爲消息,其中每條消息都是包含一系列稱爲字段的名稱-值對的信息的小型邏輯記錄。這是一個簡單的例子

message Person {
  string name = 1;
  int32 id = 2;
  bool has_ponycopter = 3;
}

然後,指定數據結構後,使用協議緩衝區編譯器 protoc 從原型定義中以首選語言生成數據訪問類。它們爲每個字段提供了簡單的訪問器,如 name() 和 set_name(),以及將整個結構序列化/解析爲/從原始字節解析的方法。因此,例如,如果您選擇的語言是C++,則在上面的示例中運行編譯器將生成一個名爲 Person 的類。然後,可以在應用程序中使用此類來填充、序列化和檢索 Person 協議緩衝區消息

在普通原型文件中定義 gRPC 服務,並將 RPC 方法參數和返回類型指定爲協議緩衝區消息

// The greeter service definition.
service Greeter {
  // Sends a greeting
  rpc SayHello (HelloRequest) returns (HelloReply) {}
}

// The request message containing the user's name.
message HelloRequest {
  string name = 1;
}

// The response message containing the greetings
message HelloReply {
  string message = 1;
}

gRPC 使用帶有特殊 gRPC 插件的 protoc 從原型文件生成代碼:您將獲得生成的 gRPC 客戶端和服務器代碼,以及用於填充、序列化和檢索消息類型的常規協議緩衝區代碼。若要了解有關協議緩衝區的詳細信息,包括如何使用所選語言的 gRPC 插件安裝 protoc,請參閱協議緩衝區文檔

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章