Apache Thrift系列(一):Thrift基本及IDL语法

thrift支持数据类型

基本类型:

  • bool: 布尔值
  • byte: 8位有符号整数
  • i16: 16位有符号整数
  • i32: 32位有符号整数
  • i64: 64位有符号整数
  • double: 64位浮点数
  • string: UTF-8编码的字符串
  • binary: 二进制串

结构体类型:

  • struct: 定义的结构体对象

容器类型:

  • list: 有序元素列表
  • set: 无序无重复元素集合
  • map: 有序的key/value集合

异常类型:

  • exception: 异常类型

服务类型:

  • service: 具体对应服务的类

除此之外,Thrift 还支持枚举类型(enum)和常量类型(const)

IDL语法参考:

  Thrift可以让用户选择 客户端服务端之间 传输通信协议的类别,在 传输协议上总体划分为 文本(text)和 二进制(binary)传输协议,主要有BinaryProtocol、CompactProtocol、JsonProtocol、MultiplexedProtocol,一般实现RPC最常用协议BinaryProtocol和CompactProtocol。常用协议有以下几种:

  • TBinaryProtocol: 二进制编码格式进行数据传输
  • TCompactProtocol: 高效率的、 密集二进制编码格式进行数据传输
  • TJSONProtocol: 使用 JSON 文本的数据编码协议进行数据传输
  • TSimpleJSONProtocol:只提供 JSON 只写的协议,适用于通过 *脚本语言解析

上面是RPC通讯协议,序列化协议Thrift实现主要是Binary、Compact、JSON,可以理解通讯协议里面包含了序列化协议。

Thrift 网络栈主要包含四部分:

  • Server
  • 创建 transport
  • 为 transport 创建一个输入/输出 protocol
  • 基于 输入/输出 protocol 创建一个 processor
  • 等待连接并处理
  • Processor
  • 从输入流读取数据并写到输出流
  • Protocol
  • 协议层可以理解为主要负责序列化和反序列化,是与 Proto Buf 可类比的层
  • 常用的有 binary、compact:
  • Transport
  • 通常使用基于 Raw TCP 的传输协议,包括 Buffered 和 Framed 的;
  • 一般包含打开链接、关闭链接、读写数据、监听链接等接口和功能;

Original: https://www.cnblogs.com/-wenli/p/15088124.html
Author: std
Title: Apache Thrift系列(一):Thrift基本及IDL语法

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/548904/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 厉害了,七牛云 CEO 来讲架构了!

    【原文链接】:https://blog.tecchen.tech ,博文同步发布到博客园。由于精力有限,对文章的更新可能不能及时同步,请点击上面的原文链接访问最新内容。欢迎访问我的…

    技术杂谈 2023年7月11日
    0100
  • 【转】iOS MD5加密

    Original: https://www.cnblogs.com/wi100sh/p/13094711.htmlAuthor: wi100shTitle: 【转】iOS MD5加…

    技术杂谈 2023年6月1日
    081
  • 三次Bezier曲线算法

    三次Bezier曲线算法 给定(n+1)个控制点(p_i(i=0,1,2,…,n)),则(n)次Bezier曲线定义为: [p(t)=\sum_{i=1}^np_iB_…

    技术杂谈 2023年7月11日
    080
  • 利用JAVA API远程进行HDFS的相关操作

    学习HDFS有一段时间了,现在把自己总结的HDFS的相关操作代码展示给大家。 主要有HDFS的增删改查,文件的追加,windows本地文件的上传,hdfs文件的下载,文件重命名,创…

    技术杂谈 2023年7月25日
    071
  • 如何管理分布式团队

    如何管理分布式团队 如今,寻找和雇用所有必要的人才来建立你的数字产品是具有挑战性的。因此,许多企业选择替代解决方案,并将其项目的某些部分外包。因此,他们可以扩大专业知识,实现更大的…

    技术杂谈 2023年6月1日
    087
  • 5分钟搞定MySQL到ClickHouse实时数据同步进阶篇-CloudCanal实战

    之前的文章 5分钟搞定 MySQL 到 ClickHouse 实时数据同步 发布后,很多用户将 MySQL->ClickHouse 实时同步链路用了起来,但是我们很快发现,C…

    技术杂谈 2023年7月24日
    078
  • 禁用Windows重复数据删除

    重复数据删除,可以减少磁盘占用,但使用不当也有可能增加IO,另外,也为此功能会将硬盘分块,所以当硬盘占用较高时,进行碎片整理也比较困难,所以有时需要禁用掉重复数据删除功能,并解除重…

    技术杂谈 2023年5月31日
    084
  • 【赵渝强老师】史上最详细的PostgreSQL体系架构介绍

    PostgreSQL是最像Oracle的开源数据库,我们可以拿Oracle来比较学习它的体系结构,比较容易理解。PostgreSQL的主要结构如下: 一、存储结构 PG数据存储结构…

    技术杂谈 2023年7月24日
    066
  • 用WebClient代替RestTemplate

    RestTemplate是用于执行 HTTP 请求的同步客户端,通过底层 HTTP 客户端库(例如 JDK HttpURLConnection、Apache HttpCompone…

    技术杂谈 2023年7月23日
    078
  • 56.谁不是

    dsfdsf posted @2022-09-28 08:32 随遇而安== 阅读(4 ) 评论() 编辑 Original: https://www.cnblogs.com/55…

    技术杂谈 2023年6月21日
    096
  • 微服务设计模式

    微服务可以对你的企业产生积极的影响。因此,值得了解如何处理 微服务架构(MSA)和一些微服务的设计模式,以及,微服务架构的一般目标或原则。以下是微服务架构方法中需要考虑的四个目标。…

    技术杂谈 2023年6月1日
    061
  • Set vs. Set<?>

    You may know that an unbounded wildcard Set can hold elements of any type, and a raw type …

    技术杂谈 2023年6月1日
    069
  • 单张海报点击实例

    可以修改图片和链接,点击链接跳转,适合单张图片模块,店铺收藏、公告等。 <ui> <view> <container> <editProp…

    技术杂谈 2023年6月1日
    0104
  • 利用XtraDiagram.DiagramControl进行流程图形的绘制和控制

    DevExpress提供了一个比较强大的图形绘制工具,可以用于绘制各种图形,如流程图、组织机构图等等,本篇随笔介绍XtraDiagram.DiagramControl的使用,以及利…

    技术杂谈 2023年5月31日
    0102
  • SkyWalking 服务器端搭建

    下载:https://skywalking.apache.org/downloads/ 将下载的 apache-skywalking-apm-es7-8.5.0.tar.gz 解压…

    技术杂谈 2023年5月31日
    094
  • [学习笔记]Java重写和重载

    重写(Override) 重写是子类对允许访问的父类方法的方法体重新进行编写,返回值和形参不发生改变; 通过重写,子类可以根据需要定义特定于自身的行为,根据需要实现父类的方法; 方…

    技术杂谈 2023年7月24日
    078
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球