Apache Thrift RPC 系统

安装: 291

依赖项: 1

建议者: 0

安全: 0

星标: 0

关注者: 2

分支: 4,005

语言:C++

0.10.0 2016-12-21 20:36 UTC

This package is auto-updated.

Last update: 2024-09-19 16:41:12 UTC


README

最后修改: 2014-03-16

许可协议

在一份或多项贡献者许可协议下许可给Apache软件基金会(ASF)。有关版权所有权的附加信息,请参阅此工作随附的NOTICE文件。ASF根据Apache许可证版本2.0(“许可证”)将此文件许可给您;您只能根据许可证使用此文件。您可以在以下位置获取许可证的副本:

https://apache.ac.cn/licenses/LICENSE-2.0

除非适用法律要求或书面同意,否则在许可证下分发的软件按“原样”分发,不提供任何明示或暗示的保证或条件。有关许可证下管理许可和限制的具体语言,请参阅许可证。

简介

Thrift是一个轻量级、语言无关的软件堆栈,具有关联的代码生成机制用于RPC。Thrift为数据传输、数据序列化和应用级处理提供清晰的抽象。代码生成系统以简单的定义语言作为输入,并在使用抽象堆栈的编程语言中生成代码,以构建可互操作的RPC客户端和服务器。

Thrift专门设计来支持客户端和服务器代码之间的非原子版本变更。

有关Thrift的设计和实现更多详情,请参阅此分布中的Thrift白皮书或您感兴趣的子目录中的README.md文件。

层次结构

thrift/

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/

test/

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.

需求

有关构建需求的最新列表,请参阅http://thrift.apache.org/docs/install

资源

有关Thrift的更多信息,可以在以下Thrift网页上获得:

 http://thrift.apache.org

致谢

Thrift受到了Adam D'Angelo编写的轻量级RPC工具pillar的启发,以及Google的协议缓冲区。

安装

如果您是从源代码库中首次构建,则需要生成配置脚本。(如果您下载了tarball,则此步骤不是必需的。)从顶级目录中,执行以下操作:

./bootstrap.sh

生成配置脚本后,可以配置thrift。从顶级目录中,执行以下操作:

./configure

您可能需要显式指定boost文件的位置。如果您在/usr/local中安装了boost,则可以按以下方式运行配置:

./configure --with-boost=/usr/local

请注意,默认情况下,thrift C++库通常包含调试符号构建。如果您想自定义这些选项,应在配置中使用CXXFLAGS选项,如下所示:

./configure CXXFLAGS='-g -O2'
./configure CFLAGS='-g -O2'
./configure CPPFLAGS='-DDEBUG_MY_FEATURE'

要启用gcov所需的选项-fprofile-arcs -ftest-coverage,启用它们

./configure  --enable-coverage

运行./configure --help以查看其他配置选项

请注意,Python库将忽略--prefix选项,并将安装到Python的distutils放置的位置(通常是/usr/lib/pythonX.Y/site-packages/)。如果您需要控制Python模块的安装位置,请设置PY_PREFIX变量。(DESTDIR适用于Python和C++。)

构建thrift

make

从顶级目录中,成为超级用户并执行以下操作:

make install

请注意,某些语言包必须使用适合这些语言的构建工具手动安装(在撰写本文时,这适用于Java、Ruby、PHP)。

请查看lib//目录中的README.md文件,以获取有关安装每个语言库包的更多详细信息。

测试

存在大量客户端库测试,所有这些测试都可以从顶级目录运行。

      make -k check

这将构建所有库(如有必要),并运行客户端库中定义的单元测试。如果某个语言失败,make check将继续执行并在最后提供摘要。

要运行跨语言测试套件,请运行

      make cross

这将运行一套使用不同语言客户端和服务器进行测试的测试。