luoxiaojun1992 / thrift
Apache Thrift RPC 系统
Requires
- php: >=5.3.0
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
这将运行一套使用不同语言客户端和服务器进行测试的测试。