什麼是gRPC?

來源:互聯網
上載者:User
這是一個建立於 的文章,其中的資訊可能已經有所發展或是發生改變。

本文會介紹gRPC和協議緩衝。gRPC可以使用協議緩衝作為它的IDL和底層資訊交換格式。如果你剛接觸gRPC或者協議緩衝,那就看本文!如果你想深入或者實戰,查看Quick Starts。

概述

在gRPC裡,用戶端可以直接調用不同機器上的服務應用的方法,就像是本機物件一樣,所以建立分布式應用和服務就很簡單了。在很多RPC(Remote Procedure Call Protocol)系統裡,gRPC是基於定義一個服務,指定一個可以遠程調用的帶有參數和傳回型別的的方法。在服務端,服務實現這個介面並且運行gRPC服務處理用戶端調用。在用戶端,有一個stub提供和服務端相同的方法。



在各種環境裡,gRPC用戶端和服務端都能運行並且互相通訊 - 從Google內部服務到你自己的案頭 - 並且可以寫在任何gRPC支援的語言。比如,可以簡單的建立java作為gRPC的服務端,Go,Python或者Ruby作為用戶端。另外,最新的GoogleAPIs將會有gRPC版本的介面,可以方便的在應用裡構建Google功能。

使用協議緩衝

預設gRPC使用protocol buffers,Google成熟開源的序列化結構資料(儘管可以使用其他資料格式,比如JSON)。這裡有簡單的介紹他是如何工作的。如果你已經熟悉了協議緩衝,可以直接看下一章節。

使用協議緩衝的第一步是在proto file裡為資料定義你想序列化的結構:可以是普通的.proto擴充的文字檔。協議緩衝資料結構為messages,每條message是一個小的邏輯記錄的資訊包含一些name-value對名為fields。比如:

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

然後,一旦你指定了你的資料結構,使用協議緩衝解析器protoc產生資料訪問類在proto定義的語言。這些為每個欄位(比如name()set_name())和方法序列化/解析整個結構到/從raw bytes提供了簡單的訪問器 - 比如,你選擇的語言是C++,對上面的例子運行編譯會產生一個Person類。然後就可以在應用裡使用這個類去populate,序列化和擷取Person協議緩衝messages。

你將會在樣本裡看到更詳細的定義在普通proto檔案裡的gRPC services,有RPC方法參數和指定的傳回型別作為協議緩衝messages:

// 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 greetingsmessage HelloReply {  string message = 1;}

gRPC同樣使用protoc和指定的gRPC外掛程式從你的proto檔案裡產生代碼。但是,使用gRPC外掛程式,你會得到產生的gRPC用戶端和服務端代碼和普通的用來populating,序列化和擷取你的訊息類型protocol buffer代碼。我們將會在下面的執行個體詳細說明。

可以在Protocol Buffers documentation查看更多的關於protocal buffers, 和如何安裝相應語言的protoc和外掛程式。

Protocol buffer versions

雖然protocal buffers有些時候對開源使用者可用,我們的樣本使用了新風格的protocal buffers,叫做proto3,有著更簡單的文法,一些有用的新特性,並且支援更多的語言。現在對以下語言可用:Java,C++,Python,Objective-C,C#,alite-runtime(Android Java),Ruby和JavaScript from theprotocol buffers Github repo,同時Go語言產生器golang/protobuf Github repo,還有更多語言在開發中。查看proto3 language guide瞭解更多,還有相關可用的每種語言的文檔,在release notes查看每個版本的區別。更多的proto3文檔還在更新中。
一般,雖然可以使用proto2(當前預設的protocal buffers版本),我們還是建議你使用proto3搭配gRPC,讓你可以使用全部的gRPC支援的語言,同時避免與proto2用戶端與proto3服務端通選的相容問題(或者proto3用戶端-proto2服務端的問題)。

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.