thrift、protobuf、idl,这些都是什么?

1,500 阅读2分钟

开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 10 天,点击查看活动详情 之前实习的时候,项目使用的是kitex协议,在每次新增或修改接口时,需要编辑对应项目idl文件,使用kitex针对idl文件生成最终的handler接口。但是对于一些thrift协议、idl文件其实一概不懂,这里就简单的搞清楚这些名称所针对的具体含义。

rpc是一种通信类型,允许应用程序通过网络相互通信。使一个应用程序可以从另一个应用程序中调用,允许分布式计算和更大的可扩展性。rpc框架的目标是让远程服务调用更加简单透明,屏蔽底层的传输方式、序列化方式和通信细节。

protobuf

protocol buffers,谷歌开发的数据序列号格式。以二进制形式有效而紧凑地存储结构化数据,允许在网络连接上更快传输。

grpc

grpc是一个基于protobuf的高性能rpc框架

Thrift

提供全套rpc解决方案,包括序列化机制、传输层、并发处理框架等的rpc服务框架。利用idl文件来定义接口和数据类型。通过thrift提供的编译器编译成不同语言代码,以此实现跨语言调用。

IDL

接口描述语言(Interface description language,缩写IDL),是用来描述软件组件介面的一种计算机语言。IDL通过一种独立于编程语言的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信交流。

protobuf和json的区别?

  • 速度:在序列化和反序列化数据方面,Protobuf 比JSON 快得多。由于格式是二进制的,json是文本格式,Protobuf 中读写结构化数据所需的时间比在JSON 中要短。
  • 大小:Protobuf 比JSON 小得多,在网络带宽有限的情况下,由于二进制数据流的紧凑性,存储和传输Protobuf 信息所占用的空间比JSON 信息要少。
  • 数据类型。Protobuf 支持更复杂的数据类型,如枚举和map
  • 平台兼容性。由于Protobuf 是一种开源格式,语言和平台独立的,它可以在多个平台上使用而没有困难或兼容性问题。

参考

appmaster.io/zh/blog/shi… juejin.cn/post/695130…