Apache Thrift
Apache Thrift
|
|
---|---|
Basic data
|
|
Maintainer | Apache Software Foundation |
developer | Apache Software Foundation |
Publishing year | 2007 |
Current version |
0.11.0 ( December 3, 2017 ) |
operating system | Windows, Linux |
programming language | C ++ , ActionScript , C , C # , D , Dart , Delphi, Erlang , Go , Haskell , Haxe , Java , JavaScript , Node.js , Objective CAML , Perl , PHP , Python , Rust , Smalltalk |
category | Interface description language |
License | Apache license, version 2.0 |
German speaking | No |
thrift.apache.org |
Apache Thrift is an interface description language or a communication protocol for interoperable and scalable services. It combines a software protocol stack with a generator component for creating services that seamlessly integrate ActionScript , C , C ++ , C # , Cappuccino , Cocoa , Delphi , Erlang , Go , Haskell , Java , Node.js , Objective-C , OCaml , Perl , PHP , Python , Ruby and Smalltalk as well as other languages.
Development and description
The project originated from the social network platform Facebook to support the development of highly scalable backend services. The Apache Thrift Project is a software development project of the Apache Software Foundation and is published under the Apache 2.0 license.
A simple and straightforward interface description language (Interface Definition Language, IDL) defines various Thrift types. These Thrift IDL files are processed by an implemented code generator, which produces the relevant code for the various target languages.
In the course of the increasing needs and an analysis by the developers of the social network platform Facebook, functions were sought that would surpass existing ones in terms of interoperability, efficiency, data traffic performance and simplicity. Out of this need, Facebook engineers developed more efficient protocols and services that later became Thrift. The social network Facebook is now using Thrift for its back-end services.
Thrift architecture
Thrift includes a complete software protocol stack for building clients and servers . The upper part of the batch code is generated from the Thrift definition file, which means that it contains the required client and processor code. The data structures sent, with the exception of integrated types, are also included in the generated code. The protocol and transport are part of the Thrift runtime library .
The server infrastructure included in Thrift combines protocols and transports and ties them together. The base value I / O as a section of the stack depends on the language in question. The implemented libraries are used for Java and Python networks, while a separate implementation takes place for C ++ implementations.
Supported protocols
Thrift supports both text protocols and binary protocols. The binary protocols have a higher rating than the secondary text protocols. However, text logs are used, for example, in troubleshooting. Some of the protocols that Thrift supports:
- TBinaryProtocol
- A binary format encoding that represents numeric values in binary instead of text conversions.
- TCompactProtocol
- An efficient compact coding that compresses the relevant data.
- TDenseProtocol
- Similar to the TCompactProtocol, but this removes the meta information from the transmitted data and reinserts it when it is transmitted to the recipient.
- TJSONProtocol
- This protocol uses JSON to encode the data.
- TSimpleJSONProtocol
- A write log with JSON. Suitable for parsing script languages .
- TDebugProtocol
- This log is formatted in human-readable text formats for debugging .
Web links
- Apache Thrift website (English)
- Apache Thrift Whitepaper (PDF, 221 kB)
- Tutorial side Apache Thrift (English)
- Testing of Apache Thrift compared to REST services (Java Spectrum 2/2012, German, PDF, 282 kB)
Individual evidence
- ↑ Releases apache / thrift GitHub . (accessed on October 20, 2018).
- ↑ The thrift Open Source Project on Open Hub: Languages Page . In: Open Hub . (accessed on September 21, 2018).
- ↑ a b c d e f g h i j k l m n o p q r s t projects.apache.org . In: Open Hub . (accessed on April 8, 2020).
- ↑ Apache Thrift by Andrew Prunicki, Senior Software Engineer Object Computing, Inc. (OCI) jnb.ociweb.com - accessed March 10, 2013