RPC(Remote Procedure Call)远程过程调用,简单的理解是一个节点请求另一个节点提供的服务。

RPC


1. gRPC google出品

GitHub

gRPC的官网概括

A high-performance, open-source universal RPC framework / 一个高性能、开源的通用RPC框架

gRPC

  • 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 百度出品

GitHub

根据编译说明安装依赖

尝试了make方式编译但失败!

$ mkdir cmake/build
$ cd cmake/build
$ cmake ../..
$ make