gRPC是可以在任何環(huán)境中運(yùn)行的現(xiàn)代開源高性能RPC框架,它可以通過(guò)可插拔的支持來(lái)有效地連接數(shù)據(jù)中心內(nèi)和跨數(shù)據(jù)中心的服務(wù),以實(shí)現(xiàn)負(fù)載平衡,跟蹤,運(yùn)行狀況檢查和身份驗(yàn)證,它也適用于分布式計(jì)算的最后一英里,以將設(shè)備,移動(dòng)應(yīng)用程序和瀏覽器連接到后端服務(wù)。
軟件特色
簡(jiǎn)單的服務(wù)定義
使用協(xié)議緩沖區(qū),功能強(qiáng)大的二進(jìn)制序列化工具集和語(yǔ)言來(lái)定義服務(wù)
快速啟動(dòng)并擴(kuò)展
只需一行即可安裝運(yùn)行時(shí)和開發(fā)環(huán)境,并使用該框架每秒可擴(kuò)展至數(shù)百萬(wàn)個(gè)RPC
跨語(yǔ)言和平臺(tái)工作
自動(dòng)以多種語(yǔ)言和平臺(tái)為您的服務(wù)生成慣用的客戶端和服務(wù)器存根
雙向流和集成身份驗(yàn)證
雙向流和完全集成的可插入身份驗(yàn)證以及基于HTTP/2的傳輸
gRPC是可以在任何環(huán)境中運(yùn)行的現(xiàn)代開源高性能RPC框架。它可以通過(guò)可插拔的支持來(lái)有效地連接數(shù)據(jù)中心內(nèi)和跨數(shù)據(jù)中心的服務(wù),以實(shí)現(xiàn)負(fù)載平衡,跟蹤,運(yùn)行狀況檢查和身份驗(yàn)證。它也適用于分布式計(jì)算的最后一英里,以將設(shè)備,移動(dòng)應(yīng)用程序和瀏覽器連接到后端服務(wù)。
使用說(shuō)明
開始使用gRPC
為了最大化可用性,gRPC支持將依賴項(xiàng)添加到用戶選擇的語(yǔ)言(如果有)的標(biāo)準(zhǔn)方法。在大多數(shù)語(yǔ)言中,gRPC運(yùn)行時(shí)是作為軟件包提供的,可以在用戶的??語(yǔ)言包管理器中找到。
有關(guān)如何在項(xiàng)目中使用特定于語(yǔ)言的gRPC運(yùn)行時(shí)的說(shuō)明,請(qǐng)參閱以下文檔
C++: follow the instructions under the src/cpp directory
C#: NuGet package Grpc
Dart: pub package grpc
Go: go get google.golang.org/grpc
Java: Use JARs from Maven Central Repository
Kotlin: Use JARs from Maven Central Repository
Node: npm install grpc
Objective-C: Add gRPC-ProtoRPC dependency to po dspec
PHP: pecl install grpc
Python: pip install grpcio
Ruby: gem install grpc
WebJS: follow the grpc-web instructions
使用協(xié)議緩沖區(qū)
默認(rèn)情況下,gRPC使用 協(xié)議緩沖區(qū),這是Google成熟的用于序列化結(jié)構(gòu)化數(shù)據(jù)的開源機(jī)制(盡管它可以與其他數(shù)據(jù)格式(例如JSON)一起使用)。這里是它的工作原理的快速介紹。如果您已經(jīng)熟悉協(xié)議緩沖區(qū),請(qǐng)隨時(shí)跳到下一部分。
使用協(xié)議緩沖區(qū)的第一步是為要在原始文件中序列化的數(shù)據(jù)定義結(jié)構(gòu):這是帶有.proto擴(kuò)展名的普通文本文件。協(xié)議緩沖區(qū)數(shù)據(jù)被構(gòu)造為 消息,其中每個(gè)消息都是信息的小邏輯記錄,其中包含一系列稱為字段的名稱/值對(duì)。這是一個(gè)簡(jiǎn)單的例子:
messagePerson{
stringname=1;
int32id=2;
boolhas_ponycopter=3;
}
然后,一旦指定了數(shù)據(jù)結(jié)構(gòu),就可以使用協(xié)議緩沖區(qū)編譯器protoc從原型定義中以首選語(yǔ)言生成數(shù)據(jù)訪問(wèn)類。這些為每個(gè)字段(例如name()和)提供了簡(jiǎn)單的訪問(wèn)器set_name(),以及將整個(gè)結(jié)構(gòu)序列化為原始字節(jié)或從原始字節(jié)中解析出整個(gè)結(jié)構(gòu)的方法。因此,例如,如果您選擇的語(yǔ)言是C ++,則在上面的示例中運(yùn)行編譯器將生成一個(gè)名為的類Person。然后,您可以在應(yīng)用程序中使用此類來(lái)填充,序列化和檢索Person協(xié)議緩沖區(qū)消息。
您可以在普通的原始文件中定義gRPC服務(wù),并使用RPC方法參數(shù)和返回類型指定為協(xié)議緩沖區(qū)消息:
//Thegreeterservicedefinition.
serviceGreeter{
//Sendsagreeting
rpcSayHello(HelloRequest)returns(HelloReply){}
}
//Therequestmessagecontainingtheuser'sname.
messageHelloRequest{
stringname=1;
}
//Theresponsemessagecontainingthegreetings
messageHelloReply{
stringmessage=1;
}
gRPC protoc與特殊的gRPC插件一起使用,可從您的原型文件生成代碼:您將生成生成的gRPC客戶端和服務(wù)器代碼,以及用于填充,序列化和檢索消息類型的常規(guī)協(xié)議緩沖區(qū)代碼。