grpc 学习
一 概述
gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统
1 特性
(1) 基于http2.0
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)
2 缺点
(1) GRPC尚未提供连接池,需要自行实现
(2) 尚未提供“服务发现”、“负载均衡”机制
3 rpc框架对比
4 grpc坑
http2只允许单个链接传输10亿流数据。原因在于:
htt2使用31位整形标示流,服务端使用奇数,客户端使用偶数,所以总共10亿可用。
二 grpc 使用
1 编译准备库下载【Linux】
$ [sudo] apt-get install build-essential autoconf libtool pkg-config
$ [sudo] apt-get install libgflags-dev libgtest-dev
$ [sudo] apt-get install clang libc+±dev
2 grpc 下载
$ git clone -b https://github.com/grpc/grpc
$ cd grpc
$ git submodule update --init
3 grpc编译
export prefix=/home/xhw/share/arm/linux/grpc
make
make install
protobuf 编译
./configure prefix=/home/xhw/share/arm/linux/grpc
make
make install
arm 编译配置:【参考】
4 grpc 应用
grpc 官方文档
http://doc.oschina.net/grpc?t=57966
其他文档:【很详细可参考】
https://blog.csdn.net/GG_SiMiDa/article/details/81514561
三 grpc 线程模型分析
参考文档:
https://blog.csdn.net/jek123456/article/details/80451500