本站已运行

攻城狮论坛

作者: spoto
查看: 2179|回复: 27

more +今日重磅推荐Recommend No.1

所有IT类厂商认证考试题库下载所有IT类厂商认证考试题库下载

more +随机图赏Gallery

【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集【新盟教育】2023最新华为HCIA全套视频合集【网工基础全覆盖】---国sir公开课合集
【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课【新盟教育】网工小白必看的!2023最新版华为认证HCIA Datacom零基础全套实战课
原创_超融合自动化运维工具cvTools原创_超融合自动化运维工具cvTools
重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)重量级~~30多套JAVA就业班全套 视频教程(请尽快下载,链接失效后不补)
链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享链接已失效【超过几百G】EVE 国内和国外镜像 全有了 百度群分享
某linux大佬,积累多年的电子书(约300本)某linux大佬,积累多年的电子书(约300本)
乾颐堂现任明教教主Python完整版乾颐堂现任明教教主Python完整版
乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)乾颐堂 教主技术进化论 2018-2019年 最新31-50期合集视频(各种最新技术杂谈视频)
Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天Python学习视频 0起点视频 入门到项目实战篇 Python3.5.2视频教程 共847集 能学102天
约21套Python视频合集 核心基础视频教程(共310G,已压缩)约21套Python视频合集 核心基础视频教程(共310G,已压缩)
最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程最新20180811录制 IT爱好者-清风羽毛 - 网络安全IPSec VPN实验指南视频教程
最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器最新20180807录制EVE开机自启动虚拟路由器并桥接物理网卡充当思科路由器

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

[复制链接]
spoto [Lv10 举世无双] 发表于 2021-12-20 14:50:47 | 显示全部楼层 |阅读模式
查看: 2179|回复: 27
开通VIP 免金币+免回帖+批量下载+无广告
CCNA资料/视频
技术内容: 基础知识
资料类型: 概念讲解
文件属性: 其他
【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

grpc 是 google 给出的 rpc 调用方式,它基于 google 的 protobuf 定义方式,提供了一整套数据定义和 rpc 传输的方式。现阶段的 grpc 还不完善,有些功能还不具备。



RPC 介绍

在介绍 grpc 之前有必要首先介绍一下 rpc。RPC 的英文全名是 Remote Procedure Call(远程过程调用),它实现了远程函数或方法的本地调用。由于不在一个内存空间,不能直接调用,因此需要通过网络来表达调用的语义和传达调用的数据。其基本流程如下图所示。

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

客户端需要调用某个远程函数,首先需要在 client stub 进行函数语义和数据的网络表达,之后将转义好的数据通过 sockets 经过网络传到服务器端,之后同样经过 sever stub 的解析调用远程服务的函数。之后通过同样的链路将函数的结果返回给客户端。

Protobuf 介绍

Protobuf 是 Google 给出的一种通用的数据表示方式,通过 proto 文件定义的数据格式,可以一键式的生成 C++,Python,Java 等各种语言实现。

下面给出一个学生类的范例:

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

将编写的 protobuf 文件编译成指定语言的头文件或者源文件可以使用 protoc 工具。网上下载之后就可以直接使用以下命令编译 protobuf 文件。

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

其中例子中编译为 python 文件。如果需要编译成其他语言可以参考下图。


生成的 ***_pb2.py 文件中主要是 protobuf 中定义的数据类型,可以在变成时直接引用。


GRPC 介绍

grpc 在基础 protobuf 文件中添加指定 rpc 调用方式的说明。基础形式如下:

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

上面给出了一种通用的实现方法,对于复杂的输入和输出参数可以采用例子中的序列化和反序列化的方式来定义,对于没有实现默认序列化和反序列化的数据结构或自定义数据结构,需要自己定义。当然也可以参考 protobuf 中定义数据类型的例子,具体定义类中的每个变量。


添加了 rpc 定义的 protobuf 文件不能再使用上述的 protoc 编译方式,protoc 只能编译其中的通用部分,即只输出 文件名_pb2.py 文件,并不会输出用于远程调用的 文件名_pb2_grpc.py (这里以 python 为例)。其具体编译方式如下。




编译之前需要先安装 grpc_tools 的 python 库(这里以 python 为例)。其中 -I 指定输入文件位置,--python_out 指定通用 protobuf 文件输出位置,--grpc_python_out 指定 grpc 文件输出位置。


其中 ****_pb2_grpc.py 文件中,主要包含两个类和一个方法:


class TestStub:Test 为 protobuf 中定义的服务名,其用于客户端实例化可调用远程函数的基类


class TestServicer:作为服务器端编写自定义服务类的基类


function add_TestServicer_to_server:将服务器端自定义的基类注册为指定服务



可能会遇到的问题

个人在 GRPC 调用中遇到的一些问题,具体解决方案汇总如下。


01 远程调用函数定义多个输入、输出参数报错


具体原因是 grpc 现阶段只支持单一输入和输出参数。可以通过在 protobuf 中自定义数据类型,将多个参数组合成为单一参数,作为远程调用输入。


02 调用过程中,提示 grpc: received message larger than max (8653851 vs. 4194304)


具体原因是 grpc 默认传输参数大小为 4M (4 * 1024 * 1024 = 4194304),此时如果输入输出参数过大就会报错。具体可以通过如下方式自己指定参数内存大小。

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】


了解更多课程↓↓↓
进入全国网络工程师交流群 ,请扫描下方二维码↓↓↓

群里有行业大咖、实战分享、技术交流、技术咨询、企业内推等机会
若群满,请添加老杨微信(spotoa),邀你进群

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】


【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】

【SPOTO思博网络】网络管理与监控《gRPC》【CCNA入门基础】
CCNA考试 官方正规报名 仅需1500元
回复 论坛版权

使用道具 举报

wjlovezzd [Lv9 无所不能] 发表于 2021-12-29 20:09:17 | 显示全部楼层
感谢楼主 感谢攻城狮论坛 每天签到得积分(连续签到金币翻倍) 希望越办越好
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 13:57:34 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 13:58:21 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 13:58:47 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 14:00:12 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 14:00:30 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 14:00:50 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 14:01:07 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

guaidaokenan [Lv10 举世无双] 发表于 2021-12-30 14:01:24 | 显示全部楼层
好好学习,天天向上
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|无图浏览|手机版|网站地图|攻城狮论坛

GMT+8, 2026-9-23 07:29 , Processed in 0.122099 second(s), 16 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4 © 2001-2013 Comsenz Inc.

Designed by ARTERY.cn