gRPC简单学习了解


=Start=

缘由:

简单记录一下学习和了解gRPC相关的概念和知识点的内容,方便以后参考。

正文:

参考解答:
1、RPC框架原理

RPC 框架的目标就是让远程服务调用更加简单、透明,RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(xml/json/ 二进制)和通信细节。让服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和具体调用过程。

RPC 框架的调用原理图如下所示:

2、gRPC简介

gRPC 是一个高性能、开源和通用的 RPC 框架,面向移动和 HTTP/2 设计。

gRPC 基于 HTTP/2 标准设计,带来诸如双向流、流控、头部压缩、单 TCP 连接上的多复用请求等特。这些特性使得其在移动设备上表现更好,更省电和节省空间占用。

3、gRPC的常规使用方法

gRPC的使用通常包括如下几个步骤:

①通过protobuf来定义接口和数据类型
②使用protobuf编译器生成创建应用所需的特定客户端和服务端的代码
③编写gRPC server端代码
④编写gRPC client端代码


下面以Python为例简单过一遍环境准备&代码开发的流程:

# 首先确保你的 pip 是 9.0.1 或以上版本
$ python -m pip install --upgrade pip

# 然后安装VirtualENV创建测试环境,避免对系统环境产生影响
$ python -m pip install virtualenv
$ virtualenv venv
$ source venv/bin/activate
$ python -m pip install --upgrade pip

# 安装gRPC
$ python -m pip install grpcio

# 安装gRPC tools
$ python -m pip install grpcio-tools

&

# 编写 .proto 文件(包含 syntax/service/message 等几个简单必要字段就行)
## .proto 文件中的 service 和 message 名称会对下面的 server/client 端代码编写有影响,记得一一对应

# 借助gRPC的编译工具生成相关代码(xxx_pb2.py 和 xxx_pb2_grpc.py)
$ python -m grpc_tools.protoc -I../../protos --python_out=. --grpc_python_out=. ../../protos/helloworld.proto

# 编写 gRPC 的 server 端代码(需要对其中的模式有一定了解,好在编码时import需要的模块及其相关的类)

# 编写 gRPC 的 client 端代码(需要对常规的编码流程有一定了解)

# 先启动 server 端,再在另一个终端中启动 client 端以进行测试
参考链接:

=END=

, ,

《 “gRPC简单学习了解” 》 有 6 条评论

  1. Protobuf 终极教程
    https://colobu.com/2019/10/03/protobuf-ultimate-tutorial-in-go/
    `
    历史
    序列化
    proto教程
      proto3的改变
      一个简单的例子
      proto3 格式
      版本定义
      引入其它proto文件
      package
      option
      普通字段
      Oneof
      map类型
      Reserved
      枚举类型
      使用其它类型
      嵌套类型
      未知类型
      Any
      更新消息类型
      其它
    Well-Known类型
    编码
    gogo库
    `

  2. gRPC,爆赞
    https://mp.weixin.qq.com/s?__biz=MzI3MjY1ODI2Ng==&mid=2247484210&idx=1&sn=7d26f0d5ecf68704b75fcad76f42a68f&scene=21
    `
    # 介绍

    gRPC 是 Google 公司基于 Protobuf 开发的跨语言的开源 RPC 框架。gRPC 基于 HTTP/2 协议设计,可以基于一个 HTTP/2 链接提供多个服务,对于移动设备更加友好。

    # 入门
    首先来看一个最简单的 gRPC 服务,第一步是定义 proto 文件,因为 gRPC 也是 C/S 架构,这一步相当于明确接口规范。

    然后使用 protoc-gen-go 内置的 gRPC 插件生成 gRPC 代码:
    protoc –go_out=plugins=grpc:. helloworld.proto

    执行完上面这个命令之后,会在当前目录生成一个 helloworld.pb.go 文件,文件中分别定义了服务端和客户端的接口。

    接下来就是写服务端和客户端的代码,分别实现对应的接口。
    server: …
    client: …
    这样就完成了最基础的 gRPC 服务的开发,接下来我们就在这个「基础模板」上不断丰富,学习更多特性(流处理模式,验证器,Token 认证和证书认证)。
    `

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注