apache-fork/thrift

Apache Thrift RPC 系统描述

安装: 40

依赖: 0

建议者: 0

安全: 0

星星: 0

关注者: 2

分支: 4,007

语言:C++

0.11.0 2017-12-03 17:27 UTC

This package is auto-updated.

Last update: 2024-09-25 21:17:21 UTC


README

最后修改: 2017-11-10

许可证

根据一项或多项贡献者许可协议,授权 Apache 软件基金会(ASF)使用。有关版权所有权的更多信息,请参阅与此工作一起分发的 NOTICE 文件。ASF 根据Apache许可证2.0版(“许可证”)向您授予此文件的使用权;您只能根据许可证使用此文件。您可以在以下位置获得许可证副本:

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

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

简介

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

Apache Thrift Layered Architecture

Thrift 使得用不同编程语言编写的程序能够轻松地共享数据和调用远程过程。Thrift 支持 超过 20 种编程语言,因此很可能会支持您当前使用的语言。

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:

./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的全面构建说明