为什么用Thrift及各种数据传输方式比较
目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等。其中所用到的数据传输方式包括 XML,JSON 等,然而 XML 相对体积太大,传输效率低,JSON 体积较小,新颖,但还不够完善。本文将介绍由 Facebook 开发的远程服务调用框架 Apache Thrift,它采用接口描述语言定义并创建服务,支持可扩展的跨语言服务开发,所包含的代码生成引擎可以在多种语言中,如 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, Smalltalk 等创建高效的、无缝的服务,其传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势。本文将详细介绍 Thrift 的使用,并且提供丰富的实例代码加以解释说明,帮助使用者快速构建服务。
看看官网怎么说,Thrift经量级,可生成远程过程调用代码,提供数据传输、序列化、应用级别处理,如何编写thrift文件(IDL规范),跨语言平台;大数据框架及相关组件支持thrift,如Hadoop、Hbase等。
Thrift is a lightweight, language-independent software stack with an associated code generation mechanism for RPC. Thrift provides clean abstractions for data transport, data serialization, and application level processing. Thrift was originally developed by Facebook and now it is open sourced as an Apache project. Apache Thrift is a set of code-generation tools that allows developers to build RPC clients and servers by just defining the data types and service interfaces in a simple definition file. Given this file as an input, code is generated to build RPC clients and servers that communicate seamlessly across programming languages.
In this tutorial I will describe how Thrift works and provide a guide for build and installation steps, how to write thrift files and how to generate from those files the source code that can be used from different client libraries to communicate with the server. Thrift supports a variety of languages including C++, Java, Python, PHP, Ruby but for simplicity I will focus this tutorial on examples that include Java and Python.
In this tutorial I will describe how Thrift works and provide a guide for build and installation steps, how to write thrift files and how to generate from those files the source code that can be used from different client libraries to communicate with the server. Thrift supports a variety of languages including C++, Java, Python, PHP, Ruby but for simplicity I will focus this tutorial on examples that include Java and Python.
一、安装方法(Centos6)
下载及安装指导(官网)
Download Thrift: http://thrift.apache.org/download
Detailed information on how to install Thrift can be found here: http://thrift.apache.org/docs/install/
Detailed information on how to install Thrift can be found here: http://thrift.apache.org/docs/install/
1)安装依赖
Thrift的编译器使用C++编写的,在安装编译器之前,首先应该保证操作系统基本环境支持C++的编译,安装相关依赖的软件包
yum install automake libtool flex bison pkgconfig gcc-c++ boost-devel libevent-devel zlib-devel python-devel ruby-devel
启动Java Library 需要安装Ant
/*
* 启动Java Library 需要安装Ant
*/
Install the languages with which you plan to use thrift. To use with Java for example, install a Java JDK you prefer. In this demo I am using Oracle JDK 7 for Ubuntu, but you shouldn’t have problem using the one you like.
• To use with Java you will also need to install Apache Ant
• sudo yum install ant
* 启动Java Library 需要安装Ant
*/
Install the languages with which you plan to use thrift. To use with Java for example, install a Java JDK you prefer. In this demo I am using Oracle JDK 7 for Ubuntu, but you shouldn’t have problem using the one you like.
• To use with Java you will also need to install Apache Ant
• sudo yum install ant
2)安装Thrift
wget http://archive.apache.org/dist/thrift/0.9.0/thrift-0.9.0.tar.gz
tar zxvf thrift-0.9.0
cd thrift-0.9.0
tar zxvf thrift-0.9.0
cd thrift-0.9.0
编译安装
./configure
make
make install
make
make install
3)Thrift安装验证
$ thrift -version
Thrift version 0.9.0
Thrift version 0.9.0
4)将thrift文件生成Java类
thrift --gen java hello.thrift
hello.thrift文件,编写thrift基本知识及规范,我们下一节再讲
// namespace + 语言 + 生成包路径 namespace java com.java /** * 类似Java定义接口 */ service Hello{ string getWord(), void writeWold(1:string words) }
执行上述命令后,在com.java包下生成Hello.java,用于编写服务端及客户调用。
二、Windows环境下搭建开发环境
这里不再讲用Cgwin模拟Linux
1)Windows编译工具,用于通过Thrift生成Java类
下载后即可用,不需要按装,下载地址:http://archive.apache.org/dist/thrift/
thrift -r --gen java hello.thrift
2)Maven开发环境,将编译工具生成的Java类导入项目里,接下来可编写接口实现、服务端、客户端代码
<dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
<groupId>org.apache.thrift</groupId>
<artifactId>libthrift</artifactId>
<version>0.9.2</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.9</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-log4j12</artifactId>
<version>1.5.8</version>
</dependency>
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.12</version>
</dependency>
至此Thrift安装及开发环境准备了,下一节我们讲一下Thrift语法,然后以实例方案讲述开发流程
参考以下网站资源:
http://thrift-tutorial.readthedocs.io/en/latest/intro.html
http://thrift.apache.org/tutorial/
相关推荐
《Thrift实战案例详解》 Thrift是一种高性能、语言无关、平台无关的远程过程调用(RPC)框架,由Facebook于2007年开源。它最初设计的目的是解决大规模分布式系统中的通信问题,现在已经成为业界广泛使用的跨语言...
Thrift作为可伸缩的跨语言服务开发框架,网上的资源较少,这里是一个简单的入门小程序,文件中的mylib下包含了依赖的jar包,并且在file目录下放了一个简单的thrift文件和生成thrift-0.9.0.exe工具,直接使用 thrift-...
在这个实战源码中,我们有两个主要的部分:`thrift-server` 和 `thrift-client`,分别代表服务端和客户端的实现。 服务端(thrift-server): 1. **Thrift IDL (接口定义语言)**:首先,你需要定义服务的接口和数据...
在本实例中,我们将关注一个基于Thrift的RPC调用实现,Thrift是由Facebook开发的一种高效的跨语言服务开发框架。 Thrift的核心思想是定义一种中间描述文件(.thrift),该文件包含了服务接口、数据结构以及服务间的...
7. **实战应用** - 调试:在开发和测试环境中,使用Wireshark抓取Thrift流量可以帮助定位接口调用的问题,如序列化错误、网络通信问题等。 - 监控:在生产环境中,定期抓取Thrift流量可监控服务的健康状况,及时...
Thrift是一种高效的、跨语言的服务框架,最初由Facebook开发,现在是Apache的顶级项目。它提供了强大的代码生成工具,可以从接口定义文件(IDL)生成多种编程语言的客户端和服务端代码,使得不同语言之间可以轻松地...
3. **编译环境准备** 在编译Thrift之前,确保你的系统已经安装了必要的依赖库,这通常包括C++编译器(如GCC或Clang),Boost库,以及Autotools(autoconf、automake、libtool)。对于不同的操作系统,安装方法略有...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年创建,现在是Apache软件基金会的项目。它的主要目标是通过定义一种中间语言(IDL,Interface Definition Language)来简化不同编程语言之间的通信,使得...
Thrift是Facebook开源的一款高性能、跨语言的服务框架,它的设计目标是高效地在不同编程语言之间进行通信。本文将基于Thrift的Java实现,总结学习过程中的一些关键知识点,旨在帮助理解Thrift的工作原理以及如何在...
- **NIO多路复用模型**:如图2-3所示,Netty通过Selector监听多个Channel的就绪状态,一旦某个Channel准备就绪,就会被Selector选中,然后由对应的线程处理。这种方式避免了传统多线程模型下的线程切换和上下文切换...
在IT行业中,Thrift是一种高性能、可扩展的跨语言服务开发框架,由Facebook开源,用于构建分布式服务。它通过定义一种中间表示(IDL,接口定义语言)来描述服务,然后自动生成不同编程语言的代码,使得不同语言之间...
Thrift是一种开源的跨语言服务开发框架,由Facebook于2007年设计并发布,其目的是为了在各种编程语言之间提供高效的、轻量级的通信机制。Thrift通过定义一种中间表示(IDL,Interface Definition Language)来描述...
而Thrift则是一种开源的软件框架,用于构建可伸缩的服务,它支持多种编程语言,包括C++,并且允许不同语言之间进行高效的数据交换。在这个“C++(Qt)下的thrift的使用示例”中,我们将探讨如何在Qt项目中集成和使用...
【 Maven-Thrift-Server:构建Thrift服务的Maven实践】 在软件开发中,Thrift是一种高效的跨语言服务开发框架,由Facebook开发并开源。它允许定义数据类型和服务接口,然后自动生成各种编程语言的代码,使得不同...
虚拟机Centos安装thrift涉及到的操作系统环境是Linux,尤其是Centos版本的操作系统。Thrift是一个跨语言的服务开发框架,它主要用于开发可扩展的跨语言服务。以下是根据提供的文件信息整理的详细知识点。 1. 下载...
Thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, ...
Thrift是一种开源的跨语言服务开发框架,由Facebook开发并贡献给Apache基金会。它通过定义一种中间语言(IDL,Interface Definition Language)来描述服务接口,然后自动生成多种编程语言的客户端和服务端代码,大大...
Thrift Delphi实例详解 Thrift,全称为“Transportation Layer Security”,是由Facebook开源的一款高性能、跨语言的服务框架。它最初设计的目的是解决大规模分布式系统中的数据通信问题,通过定义一种中间表示...
Thrift 环境配置方法 Thrift 是一个跨语言的 RPC 框架,由 Facebook 开发,用于建立高性能的服务之间的远程过程调用。为了使用 Thrift,需要配置好相关的环境,这篇文章将介绍 Thrift 环境配置的方法。 Thrift ...