RPC(Remote Procedure Call)远程过程调用
RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。
1. gRPC google出品
gRPC的官网概括
A high-performance, open-source universal RPC framework / 一个高性能、开源的通用RPC框架
- gRPC采用HTTP/2传输协议
- gRPC使用protobuf定义接口
- 支持的开发语言
- C#
- C++ .1
- Dart
- Go
- Java
- Kotlin
- Node
- Objective-C
- PHP
- Python
- Ruby
1.1 安装使用
$ git clone https://github.com/grpc/grpc
$ cd grpc
$ git submodule update --init
# 编译对gcc版本有要求 >4.9+ 使用gcc官方源
$ sudo yum install centos-release-scl scl-utils-build
$ sudo yum install devtoolset-7-gcc devtoolset-7-gcc-c++
# 加载gcc-7
$ scl enable devtoolset-7 bash
$ mkdir -p cmake/build
$ cd cmake/build
$ cmake ../../
$ make
$ sudo make install
# 例子
$ cd ../../examples/cpp/hellworld
$ export PKG_CONFIG_PATH=$PKG_CONFIG_PATH:/usr/local/lib/pkgconfig:/usr/local/lib64/pkgconfig
$ sudo cp -r ../../../third_party/abseil-cpp/absl /usr/local/include/
$ make
$ ./greeter_async_server
$ ./greeter_async_client
$ protoc -I ../../protos --cpp_out=. ../../protos/helloworld.proto
[wii@dev7 helloworld2]$ ll
总用量 40
-rw-rw-r--. 1 wii wii 19799 4月 2 17:42 helloworld.pb.cc
-rw-rw-r--. 1 wii wii 18468 4月 2 17:42 helloworld.pb.h
$ protoc -I ../../protos --grpc_out=. --plugin=protoc-gen-grpc=`which grpc_cpp_plugin` ../../protos/helloworld.proto
[wii@dev7 helloworld2]$ ll
总用量 64
-rw-rw-r--. 1 wii wii 4380 4月 2 17:43 helloworld.grpc.pb.cc
-rw-rw-r--. 1 wii wii 16167 4月 2 17:43 helloworld.grpc.pb.h
error: StrFormat 问题 gcc版本问题,gcc4.8.5和gcc10都有这个问题
2. thrift facebook出品
3. bRPC 百度出品
根据编译说明安装依赖
尝试了make方式编译但失败!
$ mkdir cmake/build
$ cd cmake/build
$ cmake ../..
$ make