gRPC框架介绍和安装记录

gRPC框架介绍和安装记录
最新回答
コ夏日纠结成风

2022-10-22 04:45:41

gRPC框架介绍

gRPC(全称:Google Remote Procedure Call)是谷歌开发的一个高性能的开源RPC框架,基于HTTP/2协议,支持多种编程语言,并采用Protobuf作为接口定义语言和消息格式。它特别适合用于服务器架构。

gRPC详细特性如下

  • 跨语言支持:gRPC支持C++、Java、Python、Go、Ruby、C#、Node.js等多种编程语言。
  • 高性能:基于HTTP/2协议,支持多路复用、二进制传输和流式通信,具有低延迟和高吞吐量。
  • 简单易用:使用Protobuf定义接口和消息格式,自动生成客户端和服务器端代码,简化开发流程。
  • 流式通信:支持四种通信模式:单一请求-单一响应、服务端流式响应、客户端流式请求、双向流式通信。
  • 负载均衡和故障转移:内置负载均衡和故障转移机制,提高系统的可用性和容错性。
  • 拦截器和中间件:支持拦截器和中间件,可插入自定义逻辑,如日志记录、权限验证、监控等。

HTTP/2协议介绍

HTTP/2是HTTP协议的第二个大版本,与HTTP/1的主要区别在于使用了二进制传输而非文本传输,并具备多路复用的特性。HTTP/2由IETF(Internet Engineering Task Force)于2015年发布。

HTTP/2和3的区别(了解即可)

HTTP/3尚未普及,其主要推动者是谷歌。HTTP/3的最显著变化是底层传输协议从TCP改为QUIC。

Ubuntu系统安装教程

A:首先,安装必要的构建工具和依赖项

sudo apt-get updatesudo apt-get install -y build-essential autoconf libtool pkg-configsudo apt-get install -y libssl-devsudo apt-get install -y cmake

A-1:相关依赖介绍-build-essential

build-essential是一个元包,包含了在Ubuntu系统上进行软件开发和编译所需的基本工具。它包括以下组件:

  • gcc(GNU Compiler Collection):用于编译C和C++代码。
  • g++:GNU的凯伍C++编译器。
  • make:用于自动化构建过程的工具。
  • libc6-dev:C标准库开发头文件和库。

对于gRPC来说,build-essential提供了编译C++代码所需的基本工具链。

A-2:相关依赖介绍-autoconf

autoconf是一个自动化配置工具,用于生成可移植的配置脚本。它根据模板文件生成configure脚本,这些脚本可以检测系统上的环境,并生成适合该环境的Makefile。

在构建gRPC时,autoconf用于生成配置脚本,以确保构建过程能够适应不同的系统环境和依赖项。

A-3:相关依赖介绍-libtool

libtool是一个做悉通用库支持脚本,用于简化共享库的创建和使用。它提供了一套抽象接口,屏蔽了不同平台之间的共享库管理差异。

在构建gRPC时,libtool用于处理共享库的生成和管理,确保构建过程能够在不同平台上顺利进行。

A-4:相关依赖介绍-pkg-config

pkg-config是一个用于管理编译和链接标志的工具。它可以从.pc文件中读取库的配置信息,并输出相应的编译器和链接器标志。

对于gRPC来说,pkg-config用于查找和使用依赖库(如OpenSSL、Protobuf等)的配置信息,确保在编译和链接过程中正确设置相关标志。

A-5:相关依赖介绍-libssl-dev

libssl-dev包含OpenSSL库的开发头文件和库。OpenSSL是一个实现安全套接字层(SSL)和传输层安全(TLS)协议的开源项目,用于在网络通信中提供加密功能。

在构建gRPC时,libssl-dev提供了加密通信所需的库和头文件,确保gRPC能够使用TLS进行纯孙乎安全的网络通信。

B:gRPC依赖Protobuf,所以还需要安装Protobuf

# 克隆Protobuf仓库git clone
https://github.com/protocolbuffers/protobuf.gitcd
protobuf# 检出稳定版本git checkout v3.15.8# 构建和安装Protobufmkdir buildcd buildcmake .. && make -j$(nproc)sudo make installsudo ldconfig

详细的可以参考这篇文章,有实际记录:

Matte-Zhang:C++中使用 Protocol Buffers(从零开始掌握跨语言数据传输的利器)

C:安装gRPC

# 克隆gRPC仓库git clone --recurse-submodules -b v1.37.0
https://github.com/grpc/grpccd
grpc# 构建和安装gRPCmkdir -p cmake/buildcd cmake/buildcmake ../.. && make -j$(nproc)sudo make installsudo ldconfig

C-1:克隆仓库(挺慢)

D:通过预编译包,安装gRPC(快一点)

gRPC的

GitHub Releases 页面
,找到适合你系统的预编译包并下载。

比如:

D-1:解压并安装它

Releases · grpc/grpc

D-2:使用CMake构建gRPC及其依赖项。

先安装依赖:

sudo apt-get updatesudo apt-get install -y build-essential autoconf libtool pkg-configsudo apt-get install -y cmakesudo apt-get install -y libssl-devsudo apt-get install -y python3-dev python3-pip python3-setuptools

在编译:

mkdir -p cmake/buildcd cmake/buildcmake ../..make -j$(nproc)

D-3:安装构建好的gRPC库文件和头文件。

sudo make installsudo ldconfig