多语言通信基础 04 grpc和protobuf

gRPC 是一个谷歌开源、高性能、通用的 RPC 框架,面向移动和 HTTP/2 设计。目前提供 C、Java 和 Go 语言版本,分别是:grpc, grpc-java, grpc-go. 其中 C 版本支持 C, C++, Node.js, Python, Ruby, Objective-C, PHP 和 C# 支持。

grpc使用的不是json而是protobuf协议。

protobuf

java中的dubbo使用的协议是 dubbo/rmi/hessian,压缩比会比json高 。常用的协议还有 messagepack压缩比也比json高,如果你懂了协议完全有能力自己去实现一个协议。

  • 习惯用 数据存储格式的你们,相信大多都没听过
  • 其实 是 出品的一种轻量 & 高效的结构化数据存储格式,性能比 真的强!太!多!
  • protobuf经历了protobuf2和protobuf3,pb3比pb2简化了很多,目前主流的版本是pb3。

protobuf优缺点

protobuf 优点:

  • 性能:压缩性,序列化和反序列化,传输速度好于json和xml
  • 便携性:使用简单,可以自动生成序列化和反序列化代码。向后加绒,添加新内容不用修改旧内容,加密性好。
  • 兼容性:跨语言、跨平台

protobuf 缺点:

  • 通用性差,json任何语言都可以支持,但是protobuf需要专门解析
  • 自解释性差,只有通过proto文件才能了解数据结构

protobuf快速体验 

python中体验protobuf3

步骤1:首先安装如下python包。

步骤2:protobuf3有自己专门的定义方式。

程序示例:

图示:pycharm中安装proto插件,就能识别proto文件,如下图

步骤3:进入到文件所在目录执行命令

执行命令后生成两个文件.py如下,两个文件是我们可以使用的python文件:

步骤4:序列化和反序列化

程序示例:

运行结果:

python体验grpc开发

我们完整的体验一下python的grpc开发。

步骤1:写proto协议

# 文件:H:pythonProjectpythonTestprotobuf_grpcprotohelloWEB.proto

步骤2: 在proto文件路径下,执行命令生成py文件 

 步骤3:server端程序

 步骤4:client端程序

:步骤5:修改文件的导入

文件:H:pythonProjectpythonTestprotobuf_grpcprotohelloWEB_pb2_grpc.py

步骤6:运行server端和client程序

运行结果:

上面的程序需要注意的就是步骤5修改包的导入,否则运行会出错。

文章知识点与官方知识档案匹配,可进一步学习相关知识Python入门技能树首页概览214970 人正在系统学习中

声明:本站部分文章及图片源自用户投稿,如本站任何资料有侵权请您尽早请联系jinwei@zod.com.cn进行处理,非常感谢!

上一篇 2022年3月16日
下一篇 2022年3月16日

相关推荐