Thrift ist ein leichter, sprachunabhängiger Software-Stack für die Punkt-zu-Punkt-RPC-Implementierung. Thrift bietet saubere Abstraktionen und Implementierungen für den Datentransport, die Datenserialisierung und die Verarbeitung auf Anwendungsebene. Das Codegenerierungssystem verwendet eine einfache Definitionssprache als Eingabe und generiert programmiersprachenübergreifenden Code, der den abstrahierten Stapel verwendet, um interoperable RPC-Clients und -Server zu erstellen.
Thrift erleichtert Programmen, die in verschiedenen Programmiersprachen geschrieben wurden, den Austausch von Daten und den Aufruf von Remote-Prozeduren. Mit der Unterstützung von 28 Programmiersprachen unterstützt Thrift wahrscheinlich die Sprachen, die Sie derzeit verwenden.
Thrift wurde speziell entwickelt, um nicht-atomare Versionsänderungen im Client- und Servercode zu unterstützen. Auf diese Weise können Sie Ihren Server aktualisieren und gleichzeitig ältere Clients bedienen. oder lassen Sie neuere Clients Anfragen an ältere Server senden. Einen hervorragenden, von der Community bereitgestellten Artikel über Sparsamkeit und Kompatibilität bei der Versionierung einer API finden Sie im Thrift Missing Guide.
Weitere Einzelheiten zum Design und zur Implementierung von Thrift finden Sie im Thrift-Whitepaper, das in dieser Distribution enthalten ist, oder in der Datei README.md in Ihrem jeweiligen Unterverzeichnis.
Zweig | Travis | Appveyor | Coverity-Scan | codecov.io | Webseite |
---|---|---|---|---|---|
master | |||||
0.17.0 |
Thrift unterhält derzeit keinen spezifischen Veröffentlichungskalender.
Wir streben danach, zweimal jährlich zu veröffentlichen. Laden Sie die aktuelle Version herunter.
Lizenziert an die Apache Software Foundation (ASF) im Rahmen einer oder mehrerer Mitwirkender-Lizenzvereinbarungen. Weitere Informationen zum Urheberrecht finden Sie in der mit diesem Werk verteilten HINWEIS-Datei. Die ASF lizenziert Ihnen diese Datei unter der Apache-Lizenz, Version 2.0 (die „Lizenz“); Sie dürfen diese Datei nur in Übereinstimmung mit der Lizenz verwenden. Eine Kopie der Lizenz erhalten Sie unter
http://www.apache.org/licenses/LICENSE-2.0
Sofern nicht durch geltendes Recht vorgeschrieben oder schriftlich vereinbart, wird die im Rahmen der Lizenz vertriebene Software „WIE BESEHEN“ und OHNE GEWÄHRLEISTUNGEN ODER BEDINGUNGEN JEGLICHER ART, weder ausdrücklich noch stillschweigend, vertrieben. Die spezifische Sprache, die die Berechtigungen und Einschränkungen im Rahmen der Lizenz regelt, finden Sie in der Lizenz.
Sparsamkeit/
Compiler/
Contains the Thrift compiler, implemented in C++.
lib/
Contains the Thrift software library implementation, subdivided by
language of implementation.
cpp/
go/
java/
php/
py/
rb/
...
prüfen/
Contains sample Thrift files and test code across the target programming
languages.
Tutorial/
Contains a basic tutorial that will teach you how to develop software
using Thrift.
Um auf die gleiche Weise zu erstellen, wie Travis CI das Projekt erstellt, sollten Sie Docker verwenden. Wir haben ausführliche Bauanleitungen für Docker.
Eine Liste der Build-Anforderungen finden Sie unter http://thrift.apache.org/docs/install (möglicherweise veraltet). Alternativ finden Sie in den Docker-Build-Umgebungen eine Liste der Voraussetzungen.
Weitere Informationen zu Thrift erhalten Sie auf der Thrift-Webseite unter:
http://thrift.apache.org
Thrift wurde von Pillar, einem leichten RPC-Tool von Adam D'Angelo, und auch von den Protokollpuffern von Google inspiriert.
Wenn Sie zum ersten Mal aus dem Quell-Repository erstellen, müssen Sie die Konfigurationsskripts generieren. (Dies ist nicht erforderlich, wenn Sie einen Tarball heruntergeladen haben.) Gehen Sie im obersten Verzeichnis wie folgt vor:
./bootstrap.sh
Sobald die Konfigurationsskripte generiert sind, kann Thrift konfiguriert werden. Gehen Sie im obersten Verzeichnis wie folgt vor:
./configure
Möglicherweise müssen Sie den Speicherort der Boost-Dateien explizit angeben. Wenn Sie Boost in /usr/local
installiert haben, würden Sie configure wie folgt ausführen:
./configure --with-boost=/usr/local
Beachten Sie, dass die Thrift-C++-Bibliothek standardmäßig mit enthaltenen Debugging-Symbolen erstellt wird. Wenn Sie diese Optionen anpassen möchten, sollten Sie die Option CXXFLAGS in configure verwenden, und zwar wie folgt:
./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
Um gcov zu aktivieren, aktivieren Sie die erforderlichen Optionen -fprofile-arcs -ftest-coverage:
./configure --enable-coverage
Führen Sie ./configure --help aus, um andere Konfigurationsoptionen anzuzeigen
Bitte beachten Sie, dass die Python-Bibliothek die Option --prefix ignoriert und einfach dort installiert, wo Pythons Distutils sie ablegen (normalerweise nach dem Vorbild von /usr/lib/pythonX.Y/site-packages/
). Wenn Sie steuern müssen, wo die Python-Module installiert werden, legen Sie die Variable PY_PREFIX fest. (DESTDIR wird für Python und C++ respektiert.)
Sparen Sie:
make
Melden Sie sich im obersten Verzeichnis als Superuser an und führen Sie Folgendes aus:
make install
Thrift deinstallieren:
make uninstall
Beachten Sie, dass einige Sprachpakete manuell mithilfe von Build-Tools installiert werden müssen, die für diese Sprachen besser geeignet sind (zum Zeitpunkt des Schreibens dieses Artikels gilt dies für Java, Ruby, PHP).
Suchen Sie nach der Datei README.md im Ordner lib//, um weitere Informationen zur Installation der einzelnen Sprachbibliothekspakete zu erhalten.
Apache Thrift ist über eine Reihe von Paketmanagern verfügbar, und die Liste wächst stetig. Eine detailliertere Übersicht finden Sie auf der Apache Thrift-Website unter „Bibliotheken“ und/oder in den jeweiligen READMEs für jede Sprache unter /lib
Es gibt eine große Anzahl von Clientbibliothekstests, die alle aus dem Verzeichnis der obersten Ebene ausgeführt werden können.
make -k check
Dadurch werden alle Bibliotheken (nach Bedarf) erstellt und die in jeder Client-Bibliothek definierten Komponententests ausgeführt. Wenn eine einzelne Sprache fehlschlägt, wird die Make-Prüfung fortgesetzt und am Ende eine Zusammenfassung bereitgestellt.
Um die sprachübergreifende Testsuite auszuführen, führen Sie bitte Folgendes aus:
make cross
Dadurch wird eine Reihe von Tests ausgeführt, die Clients und Server in verschiedenen Sprachen verwenden.