limingxinleo / thrift
Apache Thrift RPC 系统
Requires
- php: >=5.3.0
This package is auto-updated.
Last update: 2024-09-17 18:51:52 UTC
README
最后修改:2017-11-10
许可证
根据一个或多个贡献者许可证协议许可给Apache软件基金会(ASF)。有关版权所有权的附加信息,请参阅与此工作一起分发的NOTICE文件。ASF根据Apache许可证2.0版本(以下简称“许可证”)向您授予此文件的许可证;除非适用法律要求或经书面同意,否则不得使用此文件,除非遵守许可证。您可以在以下位置获得许可证副本:
https://apache.ac.cn/licenses/LICENSE-2.0
除非适用法律要求或书面同意,否则在许可证下分发的软件按“现状”提供,不提供任何明示或暗示的保证或条件。有关许可证具体规定许可权和限制,请参阅许可证。
简介
Thrift是一个轻量级、语言无关的软件栈,包含与RPC相关的代码生成机制。Thrift提供了数据传输、数据序列化和应用级处理等方面的清晰抽象。代码生成系统以简单的定义语言作为输入,并为使用抽象堆栈的编程语言生成代码,从而构建可互操作的RPC客户端和服务器。
Thrift使得使用不同编程语言编写的程序能够轻松共享数据和调用远程过程。支持超过20种编程语言,Thrift很可能支持您当前使用的语言。
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的协议缓冲区的启发。
安装
如果您是从源代码库中第一次构建,您需要生成配置脚本。(如果您下载了tar包,则此步骤不是必需的。)从顶级目录开始,执行以下操作:
./bootstrap.sh
一旦生成配置脚本,就可以配置Thrift。从顶级目录开始,执行以下操作:
./configure
您可能需要明确指定boost文件的位置。如果您将boost安装在/usr/local,则配置命令如下:
./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
这将运行一组使用不同语言客户端和服务器进行测试的测试。
开发
要像Travis CI构建项目一样构建,您应该使用docker。我们提供了docker的全面构建说明。