ubuntu系统下gRPC安装与简单使用

gRPC概述

gRPC 一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。
目前提供C、Java和Go语言版本,分别是grpc、grpc-java、grpc-go。
gRPC基于HTTP/2标准设计,带来诸如双向流、流控、头部压缩、单TCP连接上的多复用请求等特性。
这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

在 gRPC 里客户端应用可以像调用本地对象一样直接调用另一台不同的机器上服务端应用的方法,使得您能够更容易地创建分布式应用和服务。与许多 RPC 系统类似,gRPC 也是基于以下理念:定义一个服务,指定其能够被远程调用的方法(包含参数和返回类型)。在服务端实现这个接口,并运行一个 gRPC 服务器来处理客户端调用。在客户端拥有一个存根能够像服务端一样的方法。

对于开发者而言的使用方法:
首先需要使用protobuf定义接口,即.proto文件。
然后使用编译工具生成特定的语言执行代码。
启动服务端,通过侦听指定的port,来等待Client链接请求,通常使用Netty来构建,GRPC内置了Netty的支持。
启动一个或者多个Client端,Client也是基于Netty,Client通过与Server建立TCP长链接,并发送请求;Request与Response均被封装成HTTP2的stream Frame,通过Netty Channel进行交互。

gRPC安装与测试

首先是安装一系列的依赖:

  1. 安装pkg-config:

  2. 然后安装依赖文件autoconf、automake、libtool、make、g++、unzip、libgflags-dev、libgtest-dev、clang、libc+±dev:

     sudo apt-get install pkg-config
     
     sudo apt-get install autoconf automake libtool make g++ unzip
    
     sudo apt-get install libgflags-dev libgtest-dev
    
     sudo apt-get install clang libc++-dev
    
  3. 下载gRPC源码进行安装:

    git clone https://github.com/grpc/grpc.git
    cd grpc
    git submodule update --init  //更新第三方源码
    
  4. 安装protobuf源码:

    //首先要进入gRPC目录下
    cd third_party/protobuf/
    git submodule update --init --recursive   //确保克隆子模块,更新第三方源码
    sudo ./autogen.sh      //生成配置脚本
    sudo ./configure         //生成Makefile文件,为下一步的编译做准备,可以加上安装路径:--prefix=path,默认安装路径为usr/local/bin/
    sudo make                 //从Makefile读取指令,然后编译
    sudo make install //从Makefile读取指令,安装到指定位置,默认为/usr/local/,也可以指定安装目录:--prefix=path。
    sudo ldconfig       // 更新共享库缓存
    which protoc       // 查看软件的安装位置
    protoc --version   //检查是否安装成功
    

    安装成功的结果为:
    在这里插入图片描述
    可以看到显示了protoc的版本

  5. 安装gRPC
    从当前目录回到gRPC根目录下,并执行以下命令:

    cd ../..
    sudo make                          //从Makefile读取指令,然后编译
    sudo make install       //从Makefile读取指令,安装到指定位置,默认为/usr/local/,这里可以加上安装路径:prefix=/usr/local/
    
  6. 测试example中的用例,输出helloworld:

    cd examples/cpp/helloworld/
    make                 //编译
    ./greeter_server  //服务器
    ./greeter_client   //客户端 这里要重新打开一个终端窗口。
    

    运行的结果为:
    可以在服务端看到:
    在这里插入图片描述
    服务端监听的url为0.0.0.0:50051
    在客户端看到:
    在这里插入图片描述
    已经收到了helloworld。测试成功。

你可能感兴趣的:(新手)