Day28-Go gRPC(上)

前言

在此之前,我们有介绍 HTTP 网路通讯协定,除了这个通讯方法外,今天要介绍一个 Google 开发的 RPC架构,就是 gRPC,这是你学习 Go 语言後,再发後端时,必定会碰到的。

gRPC

先介绍一下什麽是 gRPC,gRPC 是使用 Protobuf 来进行序列化协定设计,Protobuf 是 Protocol Buffers的简称,为二进位制讯息,这使得 Server 端和 Client 端上序列化更下迅速 。
gRPC 也是基於 HTTP/2 设计的, HTTP/2 通讯协定在传送和接收时都表现的精简且有效率。

gRPC package

在 Go 语言里要使用 gRPC 前,你必须先载入套件,

$ go get -u github.com/golang/protobuf/{proto,protoc-gen-go}
$ go get -u google.golang.org/grpc

这麽一来,就可以用指令来产生 .pb.go 档,待会会有范例来示范。

Go proto

在你开发 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)

>>:  [D21] 物件侦测(2)

档案搜寻+日期+大小+keyword【Delphi 附例】

延续上一篇利用call back function Enumerate搜寻子目录下档案,今天再继续完...

[C 语言笔记--Day05] C 语言的 function call 如何被组合语言实作 II

延续上一篇的话题 这篇文章要来讲当 C 语言中的 function 需要 6 个以上的参数时(虽然这...

[Lesson28] Kotlin - Generics

泛型就是参数化类型,将类别参数化。让你在定义类别、方法、介面时先不用决定型别,等到要实体化时再决定型...

Nutrition Helper Part 2

流程图 运动 go! 由使用者传送位置讯息给 Line,Line 搭配之前提到过的开放地图,搜寻附近...

6.MYSQL 建立资料表语法

既然上一篇是介绍建立资料库,那这一篇就是要来建立自己的资料表 CREATE DATABASE 资料库...