Thrift

✍ dations ◷ 2025-11-30 10:01:34 #自2013年8月需要澄清文字的条目,应用层协议,数据序列化格式,进程间通信,远端程序呼叫,Facebook软件

Thrift是一种接口描述语言和二进制通讯协议,它被用来定义和创建跨语言的服务。它被当作一个远程过程调用(RPC)框架来使用,是由Facebook为“大规模跨语言服务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,来创建不同程度的、无缝的跨平台高效服务,可以使用C#、C++(基于POSIX兼容系统)、Cappuccino、Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk。虽然它以前是由Facebook开发的,但它现在是Apache软件基金会的开源项目了。该实现被描述在2007年4月的一篇由Facebook发表的技术论文中,该论文现由Apache掌管。

Thrift包含一套完整的栈来创建客户端和服务端程序。顶层部分是由Thrift定义生成的代码。而服务则由这个文件客户端和处理器代码生成。在生成的代码里会创建不同于内建类型的数据结构,并将其作为结果发送。协议和传输层是运行时库的一部分。有了Thrift,就可以定义一个服务或改变通讯和传输协议,而无需重新编译代码。除了客户端部分之外,Thrift还包括服务器基础设施来集成协议和传输,如阻塞、非阻塞及多线程服务器。栈中作为I/O基础的部分对于不同的语言则有不同的实现。

Thrift支持众多通讯协议:

支持的有:

Thrift还提供众多的服务器,包括:

Thrift一些已经明确的优点包括:

Thrift由C++编写,但可以为众多语言创建代码。要创建一个Thrift服务,必须写一些Thrift文件来描述它,为目标语言生成代码,并且写一些代码来启动服务器及从客户端调用它。下面就是一个这样的描述文件的代码示例:

enum PhoneType { HOME, WORK, MOBILE, OTHER}struct Phone { 1: i32 id, 2: string number, 3: PhoneType type}

Thrift将由这个描述信息生成独立的代码。例如,在Java里,PhoneType将是Phone类中一个简单的enum

相关

  • 定性研究实证主义 · 反实证主义(英语:Antipositivism) 结构主义 · 冲突理论 中层理论 · 形式理论 批判理论人口 · 团体 · 组织(英语:Organizational theory) · 社会化 社会性
  • 着丝粒染色体着丝粒(centromere),又称中节,主要作用是使复制的染色体在有丝分裂和减数分裂中可均等地分配到子细胞中。在很多高等真核生物中,着丝粒看起来像是在染色体一个点上的浓缩区
  • 阿尔萨斯人阿尔萨斯语(Elsässerditsch,意为“阿尔萨斯德语”),一种通行于法国阿尔萨斯地区的日耳曼语系方言,属于低地阿勒曼尼语,与德语密切相关,使用者人数超过70万。
  • 时代年度风云人物时代杂志年度风云人物(英语:Time Person of the Year)是美国《时代》于每年年底评选出的当年度对世界最具有影响力的事物。获选对象可以是个人、夫妇、一群人、概念、地方甚至
  • 合囊蕨科合囊蕨科(Marattiaceae)系为蕨类植物的一科,为合囊蕨目现生成员中唯一的一科,目前共计有6属,约135种,主要分布于热带和亚热带。合囊蕨科的成员拥有大型蕨叶(英语:frond),为2-3回羽状复
  • 蒂罗尔州蒂罗尔州(德语:Tirol,意大利语:Tirolo)是位于奥地利共和国西部的一个州。蒂罗尔州是一个多山的地区,它西邻福拉尔贝格州,东接萨尔茨堡州和克恩滕州。蒂罗尔州被萨尔茨堡州分成了两
  • 紫外紫外线(英语:Ultraviolet,简称为UV),为波长在10nm至400nm之间的电磁波,波长比可见光短,但比X射线长。太阳光中含有部分的紫外线,电弧、水银灯、黑光灯也会发出紫外线。虽然紫外线不
  • 斯皮尔曼等级相关系数 在 统计学中, 以查尔斯·斯皮尔曼命名的斯皮尔曼等级相关系数, 经常用希腊字母 ρ {\displaystyle \rho } 的样本, 个 原始数据
  • 参考每日摄入量参考每日摄入量(英语:Reference Daily Intake (RDI)),也叫做推荐每日摄入量(英语:Recommended Daily Intake)是1968年时指定的营养素参考;当时认为这样的摄入量足以满足美国各人群中
  • 德哈斯-范阿尔芬效应德哈斯-范阿尔芬效应(英文: De Haas-van Alphen effect);是指纯金属晶体的磁化强度随外加磁场的增加而发生振荡的现象。它是一种量子力学效应。产生这种效应的物理原因是由于