在此之前,我们有介绍 HTTP 网路通讯协定,除了这个通讯方法外,今天要介绍一个 Google 开发的 RPC架构,就是 gRPC,这是你学习 Go 语言後,再发後端时,必定会碰到的。
先介绍一下什麽是 gRPC,gRPC 是使用 Protobuf 来进行序列化协定设计,Protobuf 是 Protocol Buffers的简称,为二进位制讯息,这使得 Server 端和 Client 端上序列化更下迅速 。
gRPC 也是基於 HTTP/2 设计的, HTTP/2 通讯协定在传送和接收时都表现的精简且有效率。
在 Go 语言里要使用 gRPC 前,你必须先载入套件,
$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
$ go get -u google.golang.org/grpc
这麽一来,就可以用指令来产生 .pb.go 档,待会会有范例来示范。
在你开发 gRPC 的 API 之前,你需要先定义好自己的 Protobuf ,你需要开一个以 .proto 为结尾的档案,这边先看一下范例:
syntax = "proto3";
package student;
service WebServer {
rpc GetStudentData (GetStudentDataReq) returns (GetStudentDataRes) {}
}
message GetStudentDataReq {
int64 student_id = 1;
string class = 2;
}
message GetStudentDataRes {
string student_name = 1;
float64 student_heigh = 2;
float64 student_weight = 3;
}
先来解释上述的的程序码,需要先在 service 里头先定义 api,并且包含他的 request 和 response,
而在定义 request 和 response 里头的参数时,有比较严格的规定,在参数名称前,须先定义它的型态,也就是说输入的型态要符合才可以,而在参数後面会有一个 = <数字>,这是有严格规定的,必须按照顺序来填,第一个就等於 1,以此类推。这样你就完成了你的 proto挡了。
而刚刚有提到产生 .pb.go 档,就是以 proto 档来产出,在专端机下指令:
$ protoc --go_out=plugins=grpc:. *.proto
这样就可以产出你的 .pb.go 档了。
今天带来如何在 Go 语言中使用 gRPC 的前置作业,使用起来不会太过复杂,很方便可以建构出基本的架构,下回会带来 gRPC Server 和 Client。
感谢各位读者今天的阅读,希望对你有帮助!
<<: Day22-React Life Cycle 篇-上篇(介绍生命周期图 & Mounting)
延续上一篇利用call back function Enumerate搜寻子目录下档案,今天再继续完...
延续上一篇的话题 这篇文章要来讲当 C 语言中的 function 需要 6 个以上的参数时(虽然这...
泛型就是参数化类型,将类别参数化。让你在定义类别、方法、介面时先不用决定型别,等到要实体化时再决定型...
流程图 运动 go! 由使用者传送位置讯息给 Line,Line 搭配之前提到过的开放地图,搜寻附近...
既然上一篇是介绍建立资料库,那这一篇就是要来建立自己的资料表 CREATE DATABASE 资料库...