Thrift学习笔记

来源:互联网 发布:java cad 编辑:程序博客网 时间:2024/06/02 07:09

参考文章 IBMDeveloper works网址:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/

文章标题:

Apache Thrift - 可伸缩的跨语言服务开发框架


Thrift定义:Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架。
可知是与Webservice 【基于SOAP消息格式】和 RESTful【基于JSON】并列,是一种远程服务调用框架,传输数据采用二进制格式,相对 XML 和 JSON 体积更小,对于高并发、大数据量和多语言的环境更有优势。
另外, Thrift 是对 IDL(Interface Definition Language) 描述性语言的一种具体实现。

Thrift实例的组成
1、一个Hello.thrift脚本文件,这是一个服务描述文件,使用 IDL 语法编写;内容如下:
清单 1. Hello.thrift
 namespace java service.demo  service Hello{   string helloString(1:string para)   i32 helloInt(1:i32 para)   bool helloBoolean(1:bool para)   void helloVoid()   string helloNull()  }
使用Thrift工具编译后,会生成一个Hello.java文件,这是根据脚本生成的接口文件

2、Hello.java接口的实现类
清单 2. HelloServiceImpl.java
 package service.demo;  import org.apache.thrift.TException;  public class HelloServiceImpl implements Hello.Iface {     @Override     public boolean helloBoolean(boolean para) throws TException {         return para;     }     @Override     public int helloInt(int para) throws TException {         try {             Thread.sleep(20000);         } catch (InterruptedException e) {             e.printStackTrace();         }         return para;     }     @Override     public String helloNull() throws TException {         return null;     }     @Override     public String helloString(String para) throws TException {         return para;     }     @Override     public void helloVoid() throws TException {         System.out.println("Hello World");     }  }

3、服务端server代码

4、客户端代码

Thrift架构:




0 0