设为首页收藏本站language 语言切换
查看: 1435|回复: 13
收起左侧

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

[复制链接]
发表于 2021-12-20 14:51:54 | 显示全部楼层 |阅读模式
本帖最后由 SPOTO 于 2022-8-9 11:08 编辑

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

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



RPC 介绍

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

1.jpg

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

Protobuf 介绍

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

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

2.png

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

3.png

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

4.png

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


GRPC 介绍

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

5.png

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


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

6.png



编译之前需要先安装 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),此时如果输入输出参数过大就会报错。具体可以通过如下方式自己指定参数内存大小。

7.png


——————————————————————————————————
HCIE/CCIE的提升空间有多少?看看群内聊天讨论就知道!



添加老杨老师微信:spotoa,加入全国网工交流群(已建立50+个),获取更多CCIE/HCIE考试一手资讯+考试必备资料,也欢迎添加
网工老杨老师微信:spotoa




【推荐阅读】


 楼主| 发表于 2021-12-22 16:47:24 | 显示全部楼层
有问题可加微信咨询:spotoa
板凳 2021-12-22 16:47:24 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-23 09:22:17 | 显示全部楼层
有问题可加微信咨询:spotoa
地板 2021-12-23 09:22:17 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-28 16:52:53 | 显示全部楼层
有问题可加微信咨询:spotoa
5# 2021-12-28 16:52:53 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2021-12-29 13:40:33 | 显示全部楼层
有问题可加微信咨询:spotoa
6# 2021-12-29 13:40:33 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-1-6 10:29:30 | 显示全部楼层
有问题请咨询微信:spotoa
7# 2022-1-6 10:29:30 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-11 09:57:01 | 显示全部楼层
有问题请咨询微信:spotoa
8# 2022-2-11 09:57:01 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-15 15:49:59 | 显示全部楼层
有问题请咨询微信:spotoa
9# 2022-2-15 15:49:59 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-2-25 14:23:24 | 显示全部楼层
有问题请咨询微信:spotoa
10# 2022-2-25 14:23:24 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-4-7 09:49:40 | 显示全部楼层
有问题请咨询微信:spotoa
11# 2022-4-7 09:49:40 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-6-22 09:32:31 | 显示全部楼层
有问题请咨询微信:spotoa
12# 2022-6-22 09:32:31 回复 收起回复
回复 支持 反对

使用道具 举报

 楼主| 发表于 2022-8-9 11:08:22 | 显示全部楼层
如果你有以下需求:
1. 有需要思科/华为考证【稳定题库】
2. 想要进入全国网工交流群,和更多同伴连接
3. 对网工生涯迷茫,想要有大佬可以指点迷津~

欢迎扫描下方二维码,加老杨老师的微信,作为CCIE+9年网工,他对行业的了解可谓是颇深。围观他的朋友圈,能学习到的技术和视野远远超过你的想象,欢迎扫码加v!!!


13# 2022-8-9 11:08:22 回复 收起回复
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 论坛注册

本版积分规则

QQ|Archiver|手机版|小黑屋|sitemap|鸿鹄论坛 ( 京ICP备14027439号 )  

GMT+8, 2025-4-29 15:17 , Processed in 0.107218 second(s), 25 queries , Redis On.  

  Powered by Discuz!

  © 2001-2025 HH010.COM

快速回复 返回顶部 返回列表