GRPC简单介绍和使用

一、基本介绍

  •    GRPC是一个高性能、通用的开源RPC框架,基于HTTP/2协议标准和Protobuf序列化

协议开发,支持众多的开发语言。

二、概括

  •    在grpc框架中,客户端可以像调用本地对象一样直接调用位于不同机器的服务端方

法,如此我们就可以非常方便的创建一些分布式的应用服务。

  •    在服务端,我们实现了所定义的服务和可供远程调用的方法,运行一个gRPC server
  •    来处理客户端的请求;
  •    在客户端,gRPC实现了一个stub(可以简单理解为一个client),其提供跟服务端

相同的方法。

GRPC简单介绍和使用

 

三、特点

1、基于HTTP/2

 HTTP/2 提供了连接多路复用、双向流、服务器推送、请求优先级、首部压缩等机制。可以

节省带宽、降低TCP链接次数、节省CPU,帮助移动设备延长电池寿命等。gRPC 的协议设

计上使用了HTTP2 现有的语义,请求和响应的数据使用HTTP Body 发送,其他的控制信

息则用Header 表示。

2、IDL使用ProtoBuf

gRPC使用ProtoBuf来定义服务,ProtoBuf是由Google开发的一种数据序列化协议

(类似于XML、JSON、hessian)。ProtoBuf能够将数据进行序列化,并广泛应用在数

据存储、通信协议等方面。压缩和传输效率高,语法简单,表达力强。

3、多语言支持

C, C++, Python, PHP, Nodejs, C#, Objective-C、Golang、Java

四、简单实用

1、安装grpc

go get google.golang.org/grpc

2、安装protocol buffer编译器

https://github.com/protocolbuffers/protobuf/releases

开发是可以安装相同的版本

3、安装go的protoc编译器插件

go get -u github.com/golang/protobuf/protoc-gen-go

编译器插件protoc-gen-go将安装在$GOBIN中,默认位于$GOPATH/bin

4、安装php的protoc编译器插件,php-protobuf,php-grpc

php --ri grpc  查看是否有grpc扩展

https://github.com/grpc/grpc/archive/v1.12.0.tar.gz

 

五、实例

1、定义proto文件 hello.proto

GRPC简单介绍和使用

 

2、生成go对应的文件 hello.pb.go

protoc -I ./ -I $GOPATH/src/ --go_out=plugins=grpc:. $files

文件比较多,就不展示了

3、编写服务端 server/main.go

 

GRPC简单介绍和使用

4、编写客户端 client/main.go

GRPC简单介绍和使用

 

5、可以通过grpcurl调用服务端

grpcurl --plaintext -d '{"hi":"world"}' 127.0.0.1:50051 hello.Hello/SayHello

6、生成PHP文件调用服务端

protoc --proto_path=./ --php_out=./ --grpc_out=./ --plugin=protoc-gen-grpc=/usr/local/bin/grpc_php_plugin $files

生成文件有两部分,

GRPC简单介绍和使用

 

调用服务端

 

GRPC简单介绍和使用

六、参考文档

https://blog.****.net/xuduorui/article/details/78278808

https://www.jianshu.com/p/7392406e2450