(Translated by https://www.hiragana.jp/)
Thrift - 维基百科,自由的百科全书 とべ转到内容ないよう

Thrift

维基百科ひゃっか自由じゆうてき百科ひゃっかぜん
Apache Thrift
开发しゃApache软件基金ききんかい
とうぜん版本はんぽん0.9.3(2015ねん10がつ6にち,​8ねんまえ​(2015-10-06
みなもとだい码库 编辑维基数据链接
类型远程过程调用かまち
许可协议Apache许可证 2.0
网站thrift.apache.org

Thriftいちせっこう描述语言二进制通讯协议,[1]它被ようらいてい义和创建またが语言てきふく务。[2]它被とうさくいち远程过程调用(RPC)かまちらい使用しようゆかりFacebook为“だい规模またが语言ふく务开发”而开发的。它通过一个代码生成引擎联合了一个软件栈,らい创建不同ふどう程度ていどてき、无缝てきまたが平台ひらだいこうこうふく务,使用しようC#C++もとPOSIXけんようけい[3])、Cappuccino、[4]CocoaDelphiErlangGoHaskellJavaNode.jsOCamlPerlPHPPythonRubySmalltalk[5]虽然它以ぜんよしFacebook开发てきただし它现ざいApache软件基金ききんかいてき开源项目りょう。该实现被描述ざい2007ねん4がつてきいちへんゆかりFacebook发表てきわざ术论文中ぶんちゅう,该论ぶん现由Apacheてのひらかん[6]

[编辑]
Apache Thrift API CS

Thrift包含ほうがん一套完整的栈来创建客户端和服务端程序。[7]顶层部分ぶぶんゆかりThriftてい生成せいせいてきだい码。而服务则よし这个ぶんけんきゃく户端处理だい生成せいせいざい生成せいせいてきだい码里かい创建不同ふどう于内けん类型てきすうすえ结构,并将其作为结はて发送。协议传输层これ运行时库てきいち部分ぶぶんゆうりょうThrift,就可以定义一个服务或改变通讯和传输协议,而无需重しん编译だい码。じょりょうきゃく户端部分ぶぶんそと,Thrift还包括ほうかつふく务器もと础设ほどこせらい集成しゅうせい协议传输,如阻塞、阻塞及多线程ふく务器。栈中さく为I/Oもと础的部分ぶぶん对于不同ふどうてき语言则有不同ふどうてき实现。

Thrift支持しじ众多どおり讯协议:[7]

  • TBinaryProtocol – 一种简单的二进制格式,简单,ただしぼっゆう为空间效りつ而优ぶんほん协议处理おこりらいさらかいただしさら难于调试
  • TCompactProtocol – さら紧凑てき进制格式かくしき,处理おこりらい通常つうじょうどう样高こう
  • TDebugProtocol – 一种人类可读的文本格式,ようらい协助调试。
  • TDenseProtocol – あずかTCompactProtocol类似,はた传输すうすえてき元信もとのぶいきへず离。
  • TJSONProtocol – 使用しようJSON对数すえ编码。
  • TSimpleJSONProtocol – 一种只写协议,它不能ふのうThrift解析かいせきいん为它使用しようJSON时丢弃了もとすうすえ。适合よう脚本きゃくほん语言らい解析かいせき[8]

支持しじてき传输协议ゆう

  • TFileTransport – 该传输协议会うつしぶんけん
  • TFramedTransport – とう使用しよう一个非阻塞服务器时,要求ようきゅう使用しよう这个传输协议。它按帧来发送すうすえ,其中ごと一帧的开头是长度信息。
  • TMemoryTransport – 使用しようそん储器うつ输入输出。(Javaてき实现使用しようりょういち个简单的ByteArrayOutputStream。)
  • TSocket – 使用しよう阻塞てき套接I/Oらい传输。
  • TZlibTransport – ようzlib执行压缩。よう于连せっ另一个传输协议。

Thrift还提供ていきょう众多てきふく务器,包括ほうかつ

  • TNonblockingServer – 一个多线程服务器,它使用しよう阻塞I/O(Javaてき实现使用しようりょうNIOつうどう)。TFramedTransport必须跟这个服务器はい使用しよう
  • TSimpleServer – 一个单线程服务器,它使用しよう标准てき阻塞I/O。测试时很有用ゆうよう
  • TThreadPoolServer – 一个多线程服务器,它使用しよう标准てき阻塞I/O。

优点

[编辑]

Thrift一些已经明确的优点包括:[らいみなもと请求]

  • 跟一些替だい选择,SOAPそうまたが语言序列じょれつてきだい价更ていいん为它使用しよう进制格式かくしき
  • 它有一个又瘦又干净的库,ぼつゆう编码かまちぼつゆうXML配置はいちぶんけん
  • 绑定かん觉很自然しぜんれい如,Java使用しようjava.util.ArrayList<String>C++使用しようstd::vector<std::string>
  • 应用层通讯格しきあずか序列じょれつ层通讯格しき完全かんぜんぶん离的。它们独立どくりつおさむあらため
  • 预定义的序列じょれつ格式かくしき包括ほうかつ进制格式かくしき、对HTTP友好ゆうこうてき格式かくしき,以及紧凑てき进制格式かくしき
  • けんさくまたが言文げんぶんけん序列じょれつ
  • 协议使用しよう软版本号ほんごうつくえせい软件版本はんぽん管理かんり[需要じゅようかい]。Thrift要求ようきゅう一个中心化的和显式的版本号机制,れいしゅ版本はんぽんごう/版本はんぽんごうまつ耦合てき团队以轻まつひかえせいRPC调用てきえんじ进。
  • ぼつゆう构建赖也含非标准てき软件。存在そんざいけんようてき软件许可证混用こんようてきじょう况。

创建いち个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

まいり

[编辑]

参考さんこう文献ぶんけん

[编辑]
  1. ^ あんそう使用しようJavaてきApache Cassandraだい4部分ぶぶん(Thriftきゃく户端). http://www.sodeso.nl/: Sodeso–软件开发かい决方あん. [2011-03-30]. (原始げんし内容ないようそん档于2010-08-15). Thriftいち独立どくりつてきApache项目,简单说,就是一种二进制通讯协议。 英文えいぶん
  2. ^ Andrew Prunicki. Apache Thrift:かい. http://www.ociweb.com/: 对象计算有限ゆうげん公司こうし–一家开放解决方案公司. [2011-04-11]. (原始げんし内容ないようそん于2011-07-23). つう过一种简单且直截了当的接口定义语言(IDL),Thriftまこと许你てい义和创建いち种服务,这种ふく务既以用种语ごとらい实现,また以由种语ごとらい使用しよう利用りようだい码生成功せいこうのう,Thrift以创けんいち套文けんしかきさきどおり过这套文けんらい创建ふく务端きゃく户端ほどじょじょりょう操作性そうさせいわるそと,Thrift还非常ひじょうだかこう,这得えき于一套独特どくとくてきざい时间そら间上だかこうてき序列じょれつつくえせい 英文えいぶん
  3. ^ Thriftてき要求ようきゅう页面そん档备份そん互联网档あん),よう支持しじWindowsさん这里页面そん档备份そん互联网档あん英文えいぶん
  4. ^ Fred Potter,使用しようThrift + Cappuccino页面そん档备份そん互联网档あん),parallel48てき甜美てき邮件はくきゃく,2010ねん6がつ10日とおか英文えいぶん
  5. ^ Andrew Prunicki. Apache Thrift:だい生成せいせい. http://www.ociweb.com/: 对象计算有限ゆうげん公司こうし–一家开放解决方案公司. [2011-04-12]. (原始げんし内容ないようそん于2011-07-23). Thriftざい不同ふどう程度ていどじょう支持しじ许多语言,かんせいてきめい单如:(请小しん不能ふのう仅仅いん为你てき语言ざいぼう程度ていどじょう支持しじ,就假设它支持しじ所有しょゆうてきThrift特性とくせい如Python,仅支持しじTBinaryProtocol。)Cocoa、C++、C#、Erlang、Haskell、Java、OCaml、Perl、PHP、Python、RubySmalltalk。 英文えいぶん
  6. ^ Mark Slee、Aditya Agarwal、Marc Kwiatkowski,Thrift:だい规模またが语言ふく务的实现页面そん档备份そん互联网档あん英文えいぶん
  7. ^ 7.0 7.1 Andrew Prunicki. Apache Thrift:かい. http://www.ociweb.com/: 对象计算有限ゆうげん公司こうし–一家开放解决方案公司. [2011-04-11]. (原始げんし内容ないようそん于2011-07-23). 该栈てき顶层部分ぶぶん从你てきThriftてい义文けん生成せいせいてきだい码。Thriftふく务在生成せいせいてききゃく户端处理だい码中提供ていきょう结果。ざい图中,这些よう棕色かまち表示ひょうじてき发送てきすうすえ结构(不同ふどう于内けん类型)也由生成せいせいてきだい码产せい。这些结果よし红色かまち表示ひょうじつう讯和传输协议Thrift运行时库てきいち部分ぶぶんよし此,ようThrift,你可以定义一个服务,并可以自由じゆうあらため变通讯和传输协议,而无需重しん生成せいせい你的だい码。Thrift还包括ほうかつ一个服务器基础设施,以集成しゅうせいかく个通讯和传输协议。它支持しじ阻塞、阻塞、单线ほど以及线程ふく务器。栈中“さく为I/Oもと础”てき部分ぶぶん则是いん语言而异てき。对于JavaPython网络I/O,Thrift库对其内けん库起いたりょうゆずりは杆作よう,而C++てき实现使用しようりょう自己じこてき习惯。 英文えいぶん
  8. ^ Skelton, Steven. 对开发者友好ゆうこうてきThrift请求こころざし. [2014ねん7がつ3にち]. (原始げんし内容ないようそん于2014ねん7がつ14にち). 英文えいぶん

外部がいぶ链接

[编辑]