这是我参与「第五届青训营 」伴学笔记创作活动的第 7 天
在go三个框架篇讲到了Kitex的用法,不过作为一个RPC框架,使用之前我觉得还是最好了解一下RPC和IDL的概念。RPC在上一篇文章已做简略介绍,这篇用来写一下IDL。由于Kitex基于扩展的thrift作为底层传输协议,也提及一下thrift。
当我们要使用Kitex的时候,当然是先跑去看看官方文档的基础教程。
摘自官方文档:
Kitex 框架及命令行工具,默认支持 `thrift` 和 `proto3` 两种 IDL,对应的 Kitex 支持 `thrift` 和 `protobuf` 两种序列化协议。 传输上 Kitex 使用扩展的 `thrift` 作为底层的传输协议
我说我是一个小白,不知道这都是啥跟啥?所以让我们简要了解一下IDL&Thrift各自的概念。
IDL
IDL(Interface Definition Language)接口定义语言,通过一种中立的方式描述软件组件服务接口,以方便不同平台、不同语言编写的程序的通信交流。 很显然,IDL是RPC框架中的一个重要部分,为调用方/服务方以中继转换方式的方式建立起桥梁。 IDL是一种规范语言,IDL语言有不同的种类,典型的比如JSON、ProtoBuf、Thrift。它们会提供一套通用的数据类型,并通过这些基本数据类型来定义更复杂的数据结构。有的IDL只能定义数据结构,有的IDL则可以定义数据结构和接口。 一般而言,每个服务都会有自己所依赖的IDL文件,IDL文件中会包含服务接口声明——接口名和输入输出的数据结构,以指导RPC服务的接入。
Thrift
Thrift既是一种接口描述语言,也是一种二进制通讯协议,为Apache下的开源项目。 作为接口描述语言,Thrift会依照IDL文件接口描述文件,通过其编译生成器可以自动生成接口代码,方便服务端编写实现和客户端调用。 作为传输协议,Thrift在传输协议上总体划分为文本和二进制传输协议。其中文本类型的协议仅少量使用,大部分情况还是使用序列化/反序列化的方法将原始信息转化为二进制信息来进行二进制网络传输。