Thrift

✍ dations ◷ 2025-12-02 07:39:21 #自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

相关

  • 磷脂酶磷脂酶(英语:Phospholipase)是一种将磷脂质水解为脂肪酸及亲脂性物质的酵素。磷脂酶主要依据其催化反应的对象分为四类,即磷脂酶A、B、C、D四种。磷脂酶A1-切SN-1酰基 磷脂酶A2-切
  • 克拉斯诺达尔边疆区克拉斯诺达尔边疆区(俄语:Краснода́рский край,罗马化:Krasnodarskiy kray),位于前高加索西部、大高加索北麓,亚速海—黑海东岸,与克里米亚隔刻赤海峡相望。南面
  • 碱液碱液,腐蚀性化学品,在传统意义上是指通过浸出草木灰方法得到的碱性金属氢氧化物的混合液(主要成分为碳酸钾),或者是强碱高度溶于水后而产生的溶液。 尽管在学术上“碱液”是指宽
  • 火山冬天火山冬天是一个关于全球气候变化的理论,该理论认为火山爆发后产生大量的火山灰、硫酸、水等物质到大气层中,提升地球对太阳的反照率,将太阳辐射大幅反照回地球外,导致全球气温下
  • 粒子束武器粒子束武器是指使用粒子加速器令粒子高速移动进行撞击目标的一种强力武器。他由发射高度聚集的强原子粒子束流或亚原子粒子束流,以0.6C-0.8C光速的速度撞击目标的武器。粒子
  • 科里奥利效应在心理物理学中的科里奥利效应(Coriolis effect)也称为科里奥利幻觉(Coriolis illusion),是因为科里奥利力造成身体定位的错误认知,以及引发的恶心等现象。科里奥利效应是飞行员的
  • 李滉李滉(朝鲜语:이황,1501年-1570年),庆尚道安东人(今庆尚北道安东市),字景浩,号退溪、陶翁、清凉山人、真宝人,朝鲜中期的大臣、儒学思想家。李退溪发展了朱熹哲学,并创立退溪学派,是朝鲜儒
  • 衣笠贞之助衣笠贞之助(1896年1月1日-1982年2月26日)是日本昭和年间的一位电影导演。生于日本三重县龟山市的烟草商家庭,原名小龟贞之助。早年担任歌舞伎"女形"(男扮女装的旦角)演员。自1917
  • 威廉·戈德温威廉·戈德温(William Godwin,1756年3月3日-1836年4月7日),英国记者、哲学家、小说家。被认为是效益主义的最早解释者之一和无政府主义的提出者之一。 以其同一年内(1793年)发表的
  • 大田绅一郎大田绅一郎(日语:大田 紳一郎/おおた しんいちろう ,1967年8月2日-),日本音乐家、吉他手,出生于爱媛县。1992年在BAAD乐队出道。现在为doa乐队的成员。前B'z和ZARD的支援乐手。参与