当前位置: 首页 > article >正文

gRPC入门教程

1.简介

gRPC是Google开发的一个跨平台、开源的远程过程调用(RPC)框架,可以使用Protocol Buffers作为接口定义语言(IDL)和底层消息交换格式。

在gRPC中,客户端应用程序可以直接调用位于不同机器上的服务器应用程序的方法,就像本地对象一样,从而可以更容易地创建分布式应用和服务。与很多RPC系统一样,gRPC是基于定义服务的思想,即指定可以远程调用的方法及其参数和返回类型。服务端实现这个接口并运行一个gRPC服务器来处理客户端调用,客户端有一个提供相同的方法的桩接口(stub)。

gRPC支持C++、Java、Python、Go、Ruby等多种语言,可以运行在多种不同的环境中,如下图所示。

gRPC概念图

  • 官方网站:https://grpc.io/
  • 项目主页:https://github.com/grpc/grpc

3.快速入门

3.1 C++

C++ Quick start

3.1.1 安装依赖

由于C++没有统一的依赖管理工具,因此必须手动构建并安装gRPC及其依赖。

  • CMake 3.13+,参考CMake构建工具使用教程
  • Protocol Buffers,参考Protocol Buffers入门教程
  • 其他工具:
sudo apt install build-essential autoconf libtool pkg-config

或者

sudo yum install make automake gcc gcc-c++ kernel-devel autoconf libtool pkgconfig

3.1.2 安装gRPC

首先克隆grpc仓库:

git clone --recurse-submodules -b v1.54.0 --depth 1 --shallow-submodules https://github.com/grpc/grpc

之后依次执行以下命令:

$ cd grpc
$ mkdir -p cmake/build && cd cmake/build
$ cmake -DgRPC_INSTALL=ON \
    -DgRPC_BUILD_TESTS=OFF \
    -DCMAKE_INSTALL_PREFIX=$HOME/.local \
    -S ../..
$ make -j 4
$ make install

其中CMAKE_INSTALL_PREFIX选项用于指定安装目录,安装完成后头文件和库文件将分别被拷贝至该目录下的include和lib目录下。

3.1.3 构建示例

示例代码位于grpc/example目录,下面构建其中的helloworld示例。

$ cd examples/cpp/helloworld
$ mkdir -p cmake/build && cd cmake/build
$ cmake -DCMAKE_INSTALL_PREFIX=$HOME/.local -S ../..
$ make -j 4

构建完成后,服务器和客户端的可执行程序在examples/cpp/helloworld/cmake/build目录下。

运行服务器:

$ ./greeter_server
Server listening on 0.0.0.0:50051

在另一个终端运行客户端,将会看到客户端输出:

$ ./greeter_client 
Greeter received: Hello world

http://www.kler.cn/news/16537.html

相关文章:

  • 【Java笔试强训 25】
  • 时序预测 | MATLAB实现BO-CNN-BiLSTM贝叶斯优化卷积双向长短期记忆网络时间序列预测
  • Java 基础入门篇(四)—— 方法的重载与参数传递机制
  • 11.string,stringbuilder,stringbuffer的区别和联系。
  • 5. 操作系统基础
  • windows下定时备份mysql数据库
  • 第 02 章 OSPF实验
  • 【AI前沿】chatgpt还有哪些不足?
  • Python操作PostgreSQL数据库
  • 【学习视频】阅读开源工业软件和工业智能实战上线B站
  • 数字设计小思 - D触发器与死缠烂打的亚稳态
  • 五种最危险的新兴网络攻击技术
  • 《***生态文明思想学习纲要》学习辅导
  • git alias
  • 【Python】【进阶篇】16、settings.py配置文件详解
  • 登录关键字封装
  • 使用树莓派(zero2w + Camera Module 3 支持自动对焦 1200 万像素)拍照
  • JavaSE第三章 访问修饰符,Collection,List
  • 是面试官放水,还是公司实在是太缺人?这都没挂,腾讯原来这么容易进···
  • 【MySQL】带你了解MySQL 如何学习MySQL以及MySQL的用途以及意义
  • SQL 使用where字句条件查询
  • 4月23日作业
  • 年薪40万程序员辞职炒股,把一年工资亏光了,得了抑郁症,太惨了
  • 为什么越来越多的企业选择云计算?—分析云计算的优势和未来发展趋势
  • ​力扣解法汇总2404. 出现最频繁的偶数元素
  • 【华为机试】HJ1 字符串最后一个单词的长度
  • 【Vue面试题】vue组件之间如何传值通信
  • pytest - Getting Start
  • 8个免费使用ChatGPT网站,部分可使用gpt4
  • 如何将 github pages 迁移到 vercel 上托管