gRPC安装以及使用

  1. 安装过程

sudo apt-get install build-essential autoconf libtool libgflags-dev libgtest-dev clang libc+±dev pkg-config unzip
git clone -b $(curl -L http://grpc.io/release) https://github.com/grpc/grpc
cd grpc
git submodule update --init
make
sudo make install
cd third_party/protobuf
sudo ./autogen.sh
sudo ./configure
make
sudo make install

  1. rpc架构(图片来自protobuf rpc service架构
    在这里插入图片描述
  2. 运行过程以及自己的理解:只是运行了示例程序,能理解调用过程,对于底层运行机制暂时理解不深,待续。
### gRPC 安装教程 #### Python 平台上的 gRPC 安装 在 Python 中安装 gRPC 非常简单,可以使用 `pip` 工具完成。运行以下命令即可安装必要的库: ```bash pip install grpcio grpcio-tools protobuf ``` 此命令会自动安装 gRPC 的核心库以及用于生成 Protocol Buffer 和 gRPC 代码的工具[^1]。 #### Windows 上 C++ 环境下的 gRPC 安装 对于 Windows 用户,在 C++ 环境中安装 gRPC 则稍微复杂一些。以下是详细的步骤: 1. **下载并安装 Protocol Buffers (Protobuf)** Protobuf 是 gRPC 的基础依赖之一。可以从其官方网站获取源码,并按照官方文档中的指导进行编译和安装[^3]。 2. **克隆 gRPC 源码仓库** 使用 Git 命令将 gRPC 的源码克隆至本地: ```bash git clone https://github.com/grpc/grpc.git cd grpc git submodule update --init ``` 3. **构建 gRPC 库** 在 Visual Studio 环境下打开解决方案文件 (`grpc.sln`),然后选择 Release 或 Debug 构建目标来编译整个项目[^4]。 4. **配置开发环境** 将生成的动态链接库路径添加到系统的 PATH 环境变量中,并设置 IDE(如 Visual Studio)项目的附加包含目录为 gRPC 和 Protobuf 的头文件所在位置。 #### Linux/Unix 平台上 gRPC安装 Linux 系统上通常推荐通过包管理器或者手动编译的方式安装 gRPC: 1. **更新系统包索引** ```bash sudo apt-get update ``` 2. **安装所需依赖项** 运行如下命令以确保所有必需的软件已就绪: ```bash sudo apt-get install build-essential autoconf libtool pkg-config \ python-protobuf protobuf-compiler-grpc ``` 3. **从源码编译 gRPC** 类似于 Windows,先拉取最新版 gRPC 源码再执行标准流程完成编译过程[^2]。 --- ### 编写简单的 gRPC 客户端与服务端程序 下面是一个基于 Python 的例子展示如何创建一个基本的服务端和客户端应用来进行通信测试。 #### 定义 `.proto` 文件 首先需要定义协议缓冲区消息格式和服务接口描述符存放在名为 `helloworld.proto` 的文件里: ```proto syntax = "proto3"; option java_package = "example.grpc"; option csharp_namespace = "Example.Grpc"; service Greeter { rpc SayHello(HelloRequest) returns (HelloReply); } message HelloRequest { string name = 1; } message HelloReply { string message = 1; } ``` 接着利用之前提到过的插件生成对应语言版本的目标类文件: ```bash python -m grpc_tools.protoc -I=. --python_out=. --grpc_python_out=. helloworld.proto ``` #### 实现 Server 端逻辑 下面是实现上述定义好的 RPC 方法的具体方式: ```python from concurrent import futures import time import grpc import helloworld_pb2 as pb2 import helloworld_pb2_grpc as pb2_grpc class Greeter(pb2_grpc.GreeterServicer): def SayHello(self, request, context): return pb2.HelloReply(message=f'Hello, {request.name}!') def serve(): server = grpc.server(futures.ThreadPoolExecutor(max_workers=10)) pb2_grpc.add_GreeterServicer_to_server(Greeter(), server) server.add_insecure_port('[::]:50051') server.start() try: while True: time.sleep(86400) except KeyboardInterrupt: server.stop(0) if __name__ == '__main__': serve() ``` #### 创建 Client 请求实例 最后我们还需要有能够调用远程方法的应用部分作为发起请求的一方: ```python import grpc import helloworld_pb2 as pb2 import helloworld_pb2_grpc as pb2_grpc def run(): with grpc.insecure_channel('localhost:50051') as channel: stub = pb2_grpc.GreeterStub(channel) response = stub.SayHello(pb2.HelloRequest(name='World')) print(response.message) if __name__ == '__main__': run() ``` 当启动这两个脚本之后应该可以看到终端打印出 `"Hello, World!"` 字样表示一切正常工作。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值