Thrift es una pila de software liviana e independiente del lenguaje para la implementación de RPC punto a punto. Thrift proporciona abstracciones e implementaciones limpias para el transporte de datos, la serialización de datos y el procesamiento a nivel de aplicación. El sistema de generación de código toma un lenguaje de definición simple como entrada y genera código en todos los lenguajes de programación que utiliza la pila abstracta para construir clientes y servidores RPC interoperables.
Thrift facilita que los programas escritos en diferentes lenguajes de programación compartan datos y llamen a procedimientos remotos. Con soporte para 28 lenguajes de programación, es probable que Thrift admita los lenguajes que utiliza actualmente.
Thrift está diseñado específicamente para admitir cambios de versión no atómica en el código del cliente y del servidor. Esto le permite actualizar su servidor y al mismo tiempo poder atender a clientes más antiguos; o hacer que los clientes más nuevos envíen solicitudes a servidores más antiguos. En la Guía Thrift Missing se puede encontrar un excelente artículo proporcionado por la comunidad sobre el ahorro y la compatibilidad al versionar una API.
Para obtener más detalles sobre el diseño y la implementación de Thrift, consulte el documento técnico de Thrift incluido en esta distribución, o en el archivo README.md en su subdirectorio particular de interés.
Rama | travis | Appveyor | Escaneo de cobertura | codecov.io | Sitio web |
---|---|---|---|---|---|
master | |||||
0.17.0 |
Thrift no mantiene un calendario de lanzamiento específico en este momento.
Nos esforzamos por publicar dos veces al año. Descargue la versión actual.
Con licencia de Apache Software Foundation (ASF) según uno o más acuerdos de licencia de colaborador. Consulte el archivo AVISO distribuido con este trabajo para obtener información adicional sobre la propiedad de los derechos de autor. La ASF le otorga la licencia de este archivo bajo la Licencia Apache, Versión 2.0 (la "Licencia"); no puede utilizar este archivo excepto de conformidad con la Licencia. Puede obtener una copia de la Licencia en
http://www.apache.org/licenses/LICENSE-2.0
A menos que lo exija la ley aplicable o se acuerde por escrito, el software distribuido bajo la Licencia se distribuye "TAL CUAL", SIN GARANTÍAS NI CONDICIONES DE NINGÚN TIPO, ya sean expresas o implícitas. Consulte la Licencia para conocer el idioma específico que rige los permisos y limitaciones de la Licencia.
ahorro/
compilador/
Contains the Thrift compiler, implemented in C++.
biblioteca/
Contains the Thrift software library implementation, subdivided by
language of implementation.
cpp/
go/
java/
php/
py/
rb/
...
prueba/
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.
Para construir de la misma manera que Travis CI construye el proyecto, debe usar la ventana acoplable. Tenemos instrucciones de construcción completas para Docker.
Consulte http://thrift.apache.org/docs/install para obtener una lista de requisitos de compilación (puede estar obsoleto). Como alternativa, consulte los entornos de compilación de Docker para obtener una lista de requisitos previos.
Puede obtener más información sobre Thrift en la página web de Thrift en:
http://thrift.apache.org
Thrift se inspiró en Pillar, una herramienta RPC liviana escrita por Adam D'Angelo, y también en los buffers de protocolo de Google.
Si está compilando desde el repositorio de origen por primera vez, deberá generar los scripts de configuración. (Esto no es necesario si descargó un archivo tar). Desde el directorio superior, haga:
./bootstrap.sh
Una vez que se generan los scripts de configuración, se puede configurar el ahorro. Desde el directorio superior, haga:
./configure
Es posible que deba especificar explícitamente la ubicación de los archivos de refuerzo. Si instaló boost en /usr/local
, ejecutaría configure de la siguiente manera:
./configure --with-boost=/usr/local
Tenga en cuenta que, de forma predeterminada, la biblioteca C++ de segunda mano normalmente se crea con símbolos de depuración incluidos. Si desea personalizar estas opciones, debe usar la opción CXXFLAGS en configurar, como tal:
./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'
Para habilitar las opciones requeridas de gcov -fprofile-arcs -ftest-coverage habilítelas:
./configure --enable-coverage
Ejecute ./configure --help para ver otras opciones de configuración
Tenga en cuenta que la biblioteca de Python ignorará la opción --prefix y simplemente la instalará donde la coloquen los distutils de Python (generalmente en la línea de /usr/lib/pythonX.Y/site-packages/
). Si necesita controlar dónde están instalados los módulos de Python, configure la variable PY_PREFIX. (DESTDIR se respeta para Python y C++).
Hacer ahorro:
make
Desde el directorio superior, conviértete en superusuario y haz:
make install
Desinstalar ahorro:
make uninstall
Tenga en cuenta que algunos paquetes de idiomas deben instalarse manualmente utilizando herramientas de compilación más adecuadas para esos idiomas (en el momento de escribir este artículo, esto se aplica a Java, Ruby, PHP).
Busque el archivo README.md en la carpeta lib// para obtener más detalles sobre la instalación de cada paquete de biblioteca de idiomas.
Apache Thrift está disponible a través de varios administradores de paquetes, una lista que crece constantemente. Puede encontrar una descripción más detallada en el sitio web de Apache Thrift en "Bibliotecas" y/o en los archivos README respectivos para cada idioma en /lib.
Hay una gran cantidad de pruebas de biblioteca cliente que se pueden ejecutar desde el directorio de nivel superior.
make -k check
Esto creará todas las bibliotecas (según sea necesario) y ejecutará las pruebas unitarias definidas en cada una de las bibliotecas del cliente. Si un solo idioma falla, la verificación continuará y proporcionará una sinopsis al final.
Para ejecutar el conjunto de pruebas en varios idiomas, ejecute:
make cross
Esto ejecutará un conjunto de pruebas que utilizan clientes y servidores de diferentes idiomas.