grpc 学习

grpc 学习

  • 一 概述
    • 1 特性
      • (1) 基于http2.0
      • (2) IDL使用protobuf
      • (3) 多语言支持
    • 2 缺点
    • 3 rpc框架对比
    • 4 grpc坑
  • 二 grpc 使用
    • 1 编译准备库下载【Linux】
    • 2 grpc 下载
    • 3 grpc编译
    • 4 grpc 应用
  • 三 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框架对比

grpc 学习_第1张图片
grpc 学习_第2张图片

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 编译配置:【参考】
grpc 学习_第3张图片

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

你可能感兴趣的:(开发)