一 点睛

Thrift 是一歀基于 CS 架构的 RPC 框架,最初由 Facebook 研发,2008 年转入 Apache 组织。开发人员可以使用 Thrift 提供的 IDL(接口定义语言)来定义数据结构、异常和接口。IDL 的功能类似 Protobuf 的 message,但 message 只能用于定义数据结构,因此 IDL 比 message 功能更加强大。编写完 IDL 后,就可以通过 Thrift 提供的工具生成各种语言的数据结构(比如 Java 中的类,C 语言中的结构体等)、异常和接口文件。

Thrift 与 Protobuf 相比,除了 IDL 比 messge 更加丰富外,Thrift 还有另外一个巨大的优势,Protobuf 本身只用于消息(message)的编码和解码。也就是说,Protobuf 只能存储 RPC 中的数据,但不能传输数据(必须借助于 Netty、Socket 等通信技术才能传输);而 Thrift 不仅能存储数据,还能直接对数据进行网络传输。

二 Thrift 工作模式

服务端的工作模式

简介

TSimpleServer

单线程服务模式,通常在测试时使用

TThreadPoolServer

1 阻塞式I/O

2 多线程服务模式

TNonblockingServer

1 非阻塞式I/O

2 多线程服务模式

3 需要结合使用 TFramedThransport 传输方式

三 Thrift 传输方式

传输方式

简介

TSocket

使用阻塞式 socket 传输数据

TFramedThransport

1 使用阻塞式工作模式

2 以 frame 为单位传输数据

TFileTransport

以文件形式进行传输数据

TMemoryThransport

使用内存I/O 形式传输

TZlibThransport

1 使用 zlib 压缩数据

2 需要与其他传输方式联合使用

3 不支持 Java

四 Thrift 传输协议

传输协议

简介

TBinaryProtocol

二进制格式

TCompactProtocol

压缩格式

TJSONNProtocol

JSON 格式

TSimpleJSONProtocol

1 JSON 格式

2 提供 JSON 只写协议,适用于通过脚本语言解析

TDebugProtocol

使用易读的文本格式,便于 debug

五 Thrift 下载

1 下载地址

http://archive.apache.org/dist/thrift

2 下载版本

windows 下的 0.11.0

3 将下载的文件配置到环境变量的 PATH 下

4 查看版本,验证是否配置成功

C:\Users\>thrift -version

Thrift version 0.11.0

Apache Thrift 介绍相关推荐

  1. Apache Thrift - 可伸缩的跨语言服务开发框架

    简介: Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.本文将从 Java 开发人员角度详细介绍 Apache Thrift 的架构.开发和部 ...

  2. Windows 10 Visual Studio 2017 安装配置 Apache Thrift (C++)

    最近需要使用Thrift,所以在网上看了很多资料,不过很多教程都不够详细完整,导致我花了不少时间安装配置.在这里我把我配置的过程写下来和大家分享. 1 介绍 Apache Thrift 是一个跨语言的 ...

  3. Apache Thrift使用简介

    Apache Thrift 是 Facebook 实现的一种高效的.支持多种编程语言的远程服务调用的框架.和其它RPC框架相比,它主要具有如下连个特点: 高性能. 它采用的是二进制序列化,并且用的是长 ...

  4. 基于Apache Thrift的公路涵洞数据交互实现原理

    基于Apache Thrift的公路涵洞数据交互实现原理 Apache Thrift简介 Apache Thrift(以下简称为"Thrift") 是 Facebook 实现的一种 ...

  5. Apache Thrift快速入门教程

    Thrift是一种跨语言RPC框架,最初是在Facebook上开发的,现在作为Apache项目开源. 这篇文章将描述如何以不同的模式(例如阻塞,非阻塞和异步)编写Thrift服务和客户端. (我觉得后 ...

  6. thrift linux java,Apache Thrift环境配置

    安装Thrift的官方文档地址: 当我看到windows安装需要Cygwin或MinGW时,我就直接放弃在windows中配置的想法了,直接打开虚拟机用CentOS进行安装,使用一堆命令安装毕竟比wi ...

  7. 由浅入深了解Thrift(一)——Thrift介绍与用法

    相关示例代码见:http://download.csdn.net/detail/hjx_1000/8374829 一.  Thrift简单介绍 1.1.  Thrift是什么?能做什么? Thrift ...

  8. 【网络】RPC通信之Apache Thrift

    文章目录 概述 RPC的概念 Thrift架构设计 一.Transports 1. Transports接口 2.End Point Transports 3.Layered Transports 4 ...

  9. Apache Thrift 官方JAVA教程

    Apache Thrift 官方JAVA教程 本文只是讲如何按照官方教程跑起来代码,并不会对代码细节进行介绍 配置Apache Thrift环境可以查看:Apache Thrift配置环境 这个环境仅 ...

最新文章

  1. 算法学习:后缀数组(SA)
  2. 吴恩达“机器学习”——学习笔记六
  3. rust高级矿场_高级 Rust 所有权管理
  4. Cygwin复制,粘贴 直接用鼠标在黑框上选区即可,选区结束就已经复制了。cygwin里面Ctrl+V是不能粘贴的,用Shfit+ Insert(键盘上下左右方向键的上面) Cygwin 下切换目
  5. dump java 内存_Java如何dump对象的内存
  6. C语言判断树是否为求和树(附完整源码)
  7. python控制流代码怎么用_Python学习笔记控制流的元素
  8. Netapp日志出现auth.dc.trace.DCConnection.errorMsg:error报错
  9. 一个基于 SpringBoot 开源的小说和漫画在线阅读网站,简洁大方、强烈推荐
  10. Tsung压力测试工具的搭建和使用,配置。
  11. 【图像分割】基于matlab GUI二值化+灰白质医学影像分割【含Matlab源码 184期】
  12. android防全家桶html5,不要再用全家桶浏览器了!五款轻量级安卓浏览器,体积小,功能强...
  13. ryuyan 方差分析_R语言之方差分析篇
  14. 机器人电焊电流电压怎么调_焊电焊电流怎么调节,调多少合适?
  15. 半孔板设计需要注意细节问题
  16. Python爬虫学习之路——python IED工具介绍(一)
  17. 最详细的 K8S 学习笔记总结(2021最新版)
  18. 使用go搭建一个简单的web服务器(3)验证表单的输入
  19. Flask项目能打包为单个exe文件运行?掌握原理后居然如此简单!
  20. 晨星评选的2020年获奖基金怎么样?

热门文章

  1. EF的基本了解(一)
  2. 发送报警信息到微信公众号
  3. zabbix-邮箱报警与微信报警
  4. 元宵快乐!!!! 自己做的贺卡。。 :)
  5. 声音大小与振幅的关系_物理知识问答-响度与振幅的关系是什么?
  6. 微信小程序获取头像和昵称,头像圆角设置
  7. 《新撰组异闻录——铁》启示录
  8. c++基础学习:输入cin、输出cout、换行endl
  9. 不只是同构应用(isomorphic 工程化你所忽略的细节)
  10. 几乎每个人都听说过三皇五帝,那么三皇五帝是否存在?又是谁呢?