Apache Thrift

from Wikipedia, the free encyclopedia
Apache Thrift

ASF-logo.svg
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

Individual evidence

  1. Releases apache / thrift GitHub . (accessed on October 20, 2018).
  2. The thrift Open Source Project on Open Hub: Languages Page . In: Open Hub . (accessed on September 21, 2018).
  3. 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).
  4. Apache Thrift by Andrew Prunicki, Senior Software Engineer Object Computing, Inc. (OCI) jnb.ociweb.com - accessed March 10, 2013