Apache Thrift

aus Wikipedia, der freien Enzyklopädie
Wechseln zu: Navigation, Suche
Apache Thrift
Maintainer Apache Software Foundation
Entwickler Apache Software Foundation
Erscheinungsjahr 2007
Aktuelle Version 0.9.1
(21. August 2013)
Betriebssystem Windows
Programmier­sprache C++, C#, Cocoa, D, Delphi, Erlang, Haskell, Java, OCaml, Perl, PHP, Python, Ruby, Smalltalk
Kategorie Framework
Lizenz Apache License 2.0
Deutschsprachig Nein
thrift.apache.org

Apache Thrift ist ein Kommunikationsprotokoll bzw. ein Open-Source-Framework zur Erstellung interoperabler und skalierbarer Services. Es kombiniert einen Software-Protokollstapel mit einer Generatorkomponente zur Erstellung von Services, die nahtlos zwischen C++, Java, Python, PHP, Ruby, Erlang, Perl, Go, Haskell, C#, Cocoa, Smalltalk, OCaml und Delphi sowie anderen Sprachen operieren können.[1]

Entwicklung und Beschreibung[Bearbeiten]

Das Projekt fand seinen Ursprung bei der Social-Network-Plattform Facebook, um die Entwicklung von hochskalierbaren Backend-Services zu unterstützen. Das Apache-Thrift-Projekt ist ein Software-Entwicklungsprojekt der Apache Software Foundation und wird unter der Apache-2.0-Lizenz veröffentlicht.

Durch eine einfache und geradlinige Interface Definition Language (IDL) werden verschiedene Thrift-Typen definiert. Die Verarbeitung dieser Thrift-IDL-Dateien erfolgt durch einen implementierten Codegenerator, welcher den betreffenden Code für die verschiedenen Zielsprachen produziert.

Im Zuge der steigenden Bedürfnisse und einer Analyse durch Entwickler der Social-Network-Plattform Facebook wurden Funktionen gesucht, die bereits Bestehenden an Interoperabilität, Effizienz, Datenverkehrsleistung und Einfachheit übertreffen sollten. Aus dieser Notwendigkeit heraus entwickelten Facebook-Ingenieure effizientere Protokolle und Dienste, die in weiterer Folge zu Thrift wurden. Das Social Network Facebook nutzt nun Thrift für seine Back-End-Services.

Thrift Architektur[Bearbeiten]

Thrift beinhaltet einen kompletten Software-Protokollstapel für die Erstellung von Clients und Servern. Der obere Teil des Stapel-Codes wird aus der Thrift-Definitionsdatei generiert, wodurch diese den benötigten Client- und Prozessorcode beinhalten. Die gesendeten Datenstrukturen, ausgenommen integrierten Typen, sind ebenfalls in erzeugtem Code inkludiert. Protokoll und Transport sind Teile der Thrift-Laufzeitbibliothek.

Die in Thrift beinhaltete Server-Infrastruktur fügt Protokolle und Transporte zusammen und bindet diese aneinander. Der Basiswert I/O als Abschnitt des Stapels hängt von der betreffenden Sprache ab. Für Java- und Python-Netzwerke werden die implementierten Bibliotheken genutzt, während für C++-Implementierungen eine eigene Umsetzung erfolgt.

Unterstützte Protokolle[Bearbeiten]

Thrift unterstützt sowohl Textprotokolle als auch binäre Protokolle. Die binären Protokolle verfügen über eine höhere Bewertung als die sekundären Text Protokolle. Textprotokolle werden jedoch zum Beispiel bei der Fehlersuche angewendet. Einige der Protokolle die Thrift unterstützt:

TBinaryProtocoll
Eine Binärformat-Codierung, die numerische Werte binär darstellt, anstelle von Textkonvertierungen.
TCompactProtocol
Eine effiziente Compact-Codierung, die die betreffenden Daten komprimiert.
TDenseProtocol
Ähnlich dem TCompactProtocol, jedoch entfernt dieses die Metainformationen der übertragenen Daten und fügt diese wieder bei der Übertragung an den Empfänger ein.
TJSONProtocol
Dieses Protokoll verwendet JSON für die Codierung der Daten.
TSimpleJSONProtocol
Ein Schreibprotokoll mit JSON. Geeignet für das Parsen von Skriptsprachen.
TDebugProtocol
Dieses Protokoll formatiert in lesbare Textformate für das Debugging.

Weblinks[Bearbeiten]

Einzelnachweise[Bearbeiten]

  1. Apache Thrift by Andrew Prunicki, Senior Software Engineer Object Computing, Inc. (OCI) jnb.ociweb.com - abgerufen am 10. März 2013