• Thrift:Quick Start


    Thrift 快速开始

    1 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 体积更小,对于高并发、大数据量和多语言的环境更有优势。本文将以官方文档中提到的教程为例,帮助使用者快速构建服务。

    2 Thrift 架构简述

             下面通过一张图来说明Thrift的架构:

     

    上面这张图展示了两个过程:

    1)Thrift编译器根据IDL规则对用户定义的.thrift文件进行编译,生成不同的编程语言的接口。这一点在其它技术中称为生成Stub。

    2)Thrift客户端调用服务过程:Thrift的客户端使用生成的Stub和不同语言的库文件通过网络访问服务,服务端给予响应。其中不同编程语言的类库中,都包括下面的组件:

    ·TTransport 是对网络传输的封装,例如Socket、Channel、IO、File等。用于控制应用程序通过底层操作系统与网络之间的数据的传输。

    ·TProtocol 是指应用在通信过程中使用协议。也可以理解为通信的数据格式,例如:二进制、压缩格式、JSON等。也可以这是一个序列化组件。

    ·应用层代码生成器:根据Thrift提供的编译器,将用户编写的的IDL定义转换为不同的代码。Thrift IDL代码生成器之于Thrift,等同于OMG IDL之于CORBA,也等同于Google Protocol Buffer IDL之于 Protocol Buffer。

    3 Thrift 安装

             在了解了Thrift的架构后,现在就来安装Thrift,并通过一个示例来学习一下Thrift。

    安装Thrift,需要两样:Thrift的编译器相关的编程语言的类库

    3.1 下载

    1)下载现成的安装包:

    http://thrift.apache.org/download 下,有现成的安装包,如果使用Windows系统,建议两个(thrift-version.exe 和 thrift-version.tar.gz)都下载。

    以及针对Java语言有现成的Maven依赖地址。

    <dependency>
      <groupId>org.apache.thrift</groupId>
      <artifactId>libthrift</artifactId>
      <version>0.9.3</version>
    </dependency>

    或者 

     在http://archive.apache.org/dist/incubator/thrift/  (0.6之前的版本的下载地址)和http://archive.apache.org/dist/thrift/ (0.6 之后的版本的下载地址)也可以直接下载安装包。

    2)下载源码,自己构建安装包

    Apache 现在的项目,也已经从SVN改成了Git管理,所以如果要通过这种方式,需要先学会Git的使用,Git的使用可以参考这里。

    git clone https://git-wip-us.apache.org/repos/asf/thrift.git thrift
    cd thrift


    3.2 安装编译器
     

             1)如果通过上面的第一种方式下载的,安装过程是这样的:

    在Windows系统上,已经下载是现成的编译器,就不需要做安装了。

    在Linux系统上,执行:

    ./configure && make

     在其它系统上,可以参考:http://thrift.apache.org/docs/install/

    3.3 安装类库

    Thrift的文档中,其实都已经说明了如何根据源码生成类库。网址是:http://thrift.apache.org/lib/

    就以Java为例:

    可以使用Maven,具体地址,上面已给出。

    也可以解压thrift-version.tar.gz之后,到${thrift-version}/lib/java目录下使用ant进行构建。

    4 官方Tutorial使用

    4.1 使用编译器生成Stub

             这里要说的是官方教程的使用,前提是Thrift已成功安装。

    将thrift编译器与shard.thrift,tutorial.thrift(这两个文件可以在${thrift-version}/tutorial目录一找到) 放在一起,创建出shared,tutorial(这是生成的代码放置的目录)目录。例如:

    然后使用Thrift的编译器生成文件。

    例如:

     

    Thrift的编译器的使用帮助可以通过thrift –help来取得,如:


    生成Java代码时,可以这样:

    thrift -r --gen java tutorial.thrift

    这些是我在测试时生成的代码: 

     

    4.2 运行示例

    示例的位置在:${thrift-0.9.3}/tutorial/java/src下。 示例中要用到的keystore文件在${thrift-0.9.3}/lib/java/test目录下。

  • 相关阅读:
    条件转移指令小结
    《那些年啊,那些事——一个程序员的奋斗史》——50
    《那些年啊,那些事——一个程序员的奋斗史》——50
    《那些年啊,那些事——一个程序员的奋斗史》——51
    《那些年啊,那些事——一个程序员的奋斗史》——51
    《那些年啊,那些事——一个程序员的奋斗史》——52
    《那些年啊,那些事——一个程序员的奋斗史》——49
    《那些年啊,那些事——一个程序员的奋斗史》——51
    《那些年啊,那些事——一个程序员的奋斗史》——52
    《那些年啊,那些事——一个程序员的奋斗史》——50
  • 原文地址:https://www.cnblogs.com/f1194361820/p/5070491.html
Copyright © 2020-2023  润新知