【gRPC】What is gRPC ?

介紹 gRPC 和 protocol buffers。

gRPC 可以使用 protocol buffers 作為其接口定義語言(Interface Definition Language)(IDL)和底層消息交換格式。

Overview

使用 gRPC,一個客戶端應用程序能夠 直接調用 另一臺機器上的 服務應用程序的方法,就好像它是本地對象一樣。這使更容易創(chuàng)建分布式應用程序和服務。
與許多RPC系統(tǒng)一樣,gRPC基于定義服務的思想,指定可以被遠程調用的方法,方法的參數(shù)、返回類型。
服務端,服務端實現(xiàn)這個接口,運行一個gRPC服務去處理客戶端調用。
客戶端,客戶端有一個存根,它提供與服務器相同的方法。


gRPC客戶機和服務器可以在各種環(huán)境中運行并相互通信。
例如,你可以使用java創(chuàng)建一個 gRPC 服務,使用 Go, Python 或者 Ruby 創(chuàng)建客戶端。
除此之外,最新的 Google APIs 將會有 gRPC 版本的接口,你可以輕松的將 Google 的功能構建到你的應用程序中。

Working with Protocol Buffers

默認情況下,gRPC使用 Protocol Buffers,Googel 成熟的 結構化數(shù)據(jù) 序列化的開源機制(雖然也可是使用其它數(shù)據(jù)格式,像 JSON)。

  1. 第一步,在 proto 文件(一個普通的文本文件,使用 .proto 擴展名)中定義 你想要序列化的數(shù)據(jù)結構。
    protocol buffer 數(shù)據(jù)被構造為 message,其中每條 message 都是包含一系列鍵值對(稱為字段)的信息的小的邏輯記錄,例如:

    message Person {
      string name = 1;
      int32 id = 2;
      bool has_ponycopter = 3;
    }
    
  2. 一旦你定義好你的數(shù)據(jù)結構,就使用 protocol buffer 的編譯器 protoc,根據(jù)你的proto定義生成你首選語言對應的數(shù)據(jù)訪問類。它們?yōu)槊總€字段提供簡單的訪問器,像 name() 、set_name(),以及將整個結構 序列化/反序列化為原始字節(jié)的方法。
    例如,你選擇的語言是 C++,在第一步的示例上運行編譯器,將會生成一個叫做 Person 的類,你可以在應用程序中使用這個類,用于填充、序列化、檢索 Person 協(xié)議緩沖區(qū)消息。

  3. 在普通的 proto 文件中定義 gRPC 服務,并將 RPC 方法參數(shù)、返回類型 定義為 protocol buffer messages:

    service Greeter {
      rpc SayHello (HelloRequest) returns (HelloReply) {}
    }
    
    message HelloRequest {
      string name = 1;
    }
    
    message HelloReply {
      string message = 1;
    }
    

    gRPC使用 protoc 和一個特殊的gRPC插件從 .proto文件 生成代碼:生成 gRPC客戶端 和 服務器 代碼,以及用于填充、序列化和檢索消息類型的常規(guī)協(xié)議緩沖區(qū)代碼。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • Prerequisites(先決條件) GoGo的三個最新主要版本之一 Protocol buffer 編譯器,p...
    panic閱讀 707評論 0 0
  • gRPC 是一個高性能、通用的開源RPC框架,基于HTTP/2協(xié)議標準和Protobuf序列化協(xié)議開發(fā),支持眾多的...
    小波同學閱讀 19,826評論 6 19
  • 原文出處:gRPC gRPC分享 概述 gRPC 一開始由 google 開發(fā),是一款語言中立、平臺中立、開源的遠...
    小波同學閱讀 7,699評論 0 18
  • 下面是對gRPC和protocol buffers的介紹。 這個頁面介紹gRPC和protocol buffers...
    朋小閱讀 576評論 0 0
  • 本文轉載自用Golang構建gRPC服務[https://zhuanlan.zhihu.com/p/8550838...
    雪域迷影閱讀 2,058評論 0 0

友情鏈接更多精彩內容