************写在最前面************
个人比较喜欢Thrift,它可以高效的解决不同编程语言之间的交互问题,使不同编程语言可以很轻松地进行交互,完成软件抑或是系统的架构。
Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年进入Apache开源项目。Thrift通过一个中间语言(IDL, 接口定义语言)来定义RPC的接口和数据类型,然后通过一个编译器生成不同语言的代码(目前支持C++,Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk和OCaml),并由生成的代码负责RPC协议层和传输层的实现。
Facebook使用的几种不同的语言和不同的services。 PHP是最终用于前端,Erlang是用于聊天,Java和C ++也使用于多种场所,也许还有其他语言。Thrift是一个内部开发的跨语言的框架,联系语言,使他们可以在一起合作,从而使他们之间可以交互。 这使得Facebook可以更容易为继续保持其跨语言的发展。
Facebook已经让Thrift开源。更多的语言支持已被添加到Thrift。
Thrift的框架介绍,可以详见董的博客
http://dongxicheng.org/search-engine/thrift-framework-intro/
小弟就不在此谈论了。
***Thrift的安装***
1、安装环境
可以在Linux、win下进行安装,当然在win环境下安装时,需要在win安装相应的插件
在Linux下安装前,需要确保操作系统中有相应的语言编译器,如gcc、g++、erl等,根据自己的需要进行安装
2、获取安装包
我用的是thrift-0.2.0-incubating.tar.gz版本,有更高的版本可根据自己的需要下载
3、安装
1、解压
这一步,习惯Linux的人群,都应该不陌生
tar zxvf thrift-0.2.0-incubating.tar.gz
2、./bootstrap.sh
3、编译
./configure(时间不是很长)
4、make(时间稍微有点长)
5、install
这一步需要有超级用户的权限
sudo make install
4、安装完成之后,输入thrift之后,如果出现thrift的输入帮助,就说明,thrift已经安装成功
***Thrift简单使用***
以CPP和Erlang交互编程为例
1、进入/thrift-0.2.0/tutorial文件
2、启动Erlang服务器
thrift -r -gen erl tutorial.thrift
编译成功之后,就会出现gen-erl文件夹
进入erl文件夹,启动./server.sh
进入erl shell中,输入命令server:start().至此,erlang服务器端已经启动
3、启动CPP客户端
进入cpp文件夹
使用make进行编译
./CppClient 启动cpp客户端
4、出现计算结果后,表明,erlang和cpp的交互编程已经成功。
ps:要确保服务器端和客户端的socket端口一致
分享到:
相关推荐
Thrift通过定义一种中间表示(IDL,Interface Description Language)来描述服务接口,允许开发者在多种编程语言之间轻松地创建和使用服务。 ## 一、Thrift IDL Thrift IDL是Thrift的核心部分,它是一种类似C++或...
使用thrift、websocket在javascript和c++之间建立rpc调用机制。 如果要使用js+html来写界面,cpp来写底层业务逻辑,这就非常有用了。 当然,如果底层不用cpp来写,也可以参考本代码的js对thrift的rpc包装。
Thrift+SpringBoot+RocketMQ+Elasticsearch+C#; 1.通过thrift的RPC实现C#与java通信, 2.阿里巴巴RocketMQ实现高并发数据消息队列 3.Elasticsearch实现对数据全文检索
Thrift的编译器负责将IDL文件转换为实际的代码,而SDK则提供了在目标语言中使用Thrift接口的必要库和工具。 描述中提到的"与dubbo集成支持原生thrift协议"是指将Thrift与Dubbo框架结合使用。Dubbo是阿里巴巴开源的...
综上所述,通过结合使用Netty和Thrift,可以有效地解决传统RPC框架存在的性能瓶颈问题,实现高并发和高性能的服务。这种组合不仅可以大幅提高系统的吞吐量,还能降低延迟,是现代分布式系统中不可或缺的技术栈之一。
在本资源中,我们讨论的是在Windows环境下,使用Visual Studio 2010编译的Thrift版本0.11.0,包含了编译生成的库文件(lib)以及原始的C++源码(src)。 首先,让我们深入理解Thrift的核心概念: 1. **Thrift IDL...
在表面之下, ehbase使用 Erlang Thrift 库通过其 Thrift 网关连接到 HBase,该网关包含在标准 HBase 0.9x 版本中。 另外, ehbase使用进行连接的池封装。 但是我使用了,它支持更多功能,并且出于某种原因暂时不向...
1. 接口定义语言(IDL):Thrift使用IDL文件来定义服务接口,这些文件通常以`.thrift`为扩展名。在IDL文件中,你可以定义数据类型(如结构体、枚举、异常)、服务以及它们的操作。例如: ```thrift service ...
在Windows环境下,使用QT结合Thrift进行开发是一项常见的任务,特别是在构建跨平台的服务或应用时。这个样例项目提供了一种方法,使开发者能够在QT环境中有效地利用Thrift框架。让我们详细了解一下这些技术以及如何...
thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, ...
在这个“C++(Qt)下的thrift的使用示例”中,我们将探讨如何在Qt项目中集成和使用Thrift。 首先,Thrift的主要功能是定义服务接口和数据结构,这些定义会被编译成各种目标语言的代码,以便于实现客户端和服务器端...
Thrift数据类型与IDL理解 Thrift服务定义与实现 Thrift跨语言服务开发实践 Thrift编译器与代码生成 Thrift客户端与服务器端通信 Thrift异常处理与错误码 Thrift性能优化与调优 Thrift与RPC原理深入解析 Thrift在...
一旦有了IDL文件,你可以使用Thrift编译器生成对应语言的客户端和服务器端代码。例如,对于PHP和Python,这将生成服务接口类、协议处理类以及数据结构的序列化和反序列化代码。 - `PhpClient.php`: 这是生成的PHP...
解决在thrift0.9.3 cpp lib编译时候出现的问题: 无法解析的外部符号 "public: virtual void __cdecl apache::thrift::server::TServerFramework::serve(void)" (?serve@TServerFramework@server@thrift@apache@@...
对于 C++ 示例,需要使用 `thrift` 工具生成 C++ 代码,然后编译生成的 `CppServer` 和 `CppClient`,分别运行这两个程序,可以看到客户端和服务器端之间的交互。 对于 Java 示例,首先同样使用 `thrift` 生成 Java...
Thrift框架通过接口描述语言(IDL)来定义服务,支持多种编程语言,如C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk等,并能生成相应语言的服务端和客户端代码。其传输数据采用二进制...
使用Thrift时,首先需要安装Thrift编译器,然后编写服务定义(.thrift文件)。编译器会生成对应语言的客户端和服务端代码,接着在VS2010中编译这些代码,生成可执行文件或库。服务端程序启动后监听特定端口,客户端...
使用`thrift --gen cpp Hbase.thrift`命令,这会在当前目录下生成一个名为`gen-cpp`的文件夹,其中包含了HBase的C++客户端代码。 **三、准备HBase** 1. **验证HBase和ThriftServer状态**: 确保HBase正常工作,检查...
在"thrift+依赖包整合"中,我们包含了以下关键组件: 1. **Thrift**:这是Thrift的核心库,它提供了一个编译器,可以将用户定义的IDL文件(.thrift)转换为各种目标语言的代码,如Java、Python、C++等。这个编译器...
本示例主要探讨如何在Java环境中使用Thrift实现RPC。 首先,我们需要理解Thrift的工作原理。Thrift通过定义一种中间表示(IDL,Interface Description Language)来描述服务接口和数据结构。这个IDL文件类似于接口...