Reference:http://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/

http://jacksongblack.blog.51cto.com/6378693/1175661

第一点

首先,说明一下windows环境下配置到运行的简单例子。

1. 官方下载thrift的exe文件;

2. 配置电脑的环境变量path,把thrift.exe所在的文件夹位置加入进去;

3. 如果配置成功,在cmd,命令thrift会有所提示。

到目前为止,电脑的环境配置完毕。

4. 在thrift文件所在的路径下执行thrift -r --gen rb hello.thrift。其中hello.thrift为项目的thrift文件。执行的结果就是:生成一个叫做gen-java的文件夹,里面就是你定义的接口。

此时,thrift文件转换完成。

第二点

Iface  eg. implements Hello.Iface

Client  eg. Hello.Client

Processor  eg. Hello.Processor

1. 用户实现的业务逻辑

2. 根据thrift定义的服务接口描述文件生成的客户端和服务器端代码框架

3. 根据thrift文件生成代码实现数据的读写操作

4. Thrift的传输体系、协议以及底层I/O通信

第三点(详细讲解:使用Thrift可以很方便的定义一个服务并且选择不同的传输协议传输层而不用重新生成代码)

1. 协议:Thrift可以让用户选择客户端和服务器端之间传输通信协议的类型,在传输协议上总体上划分为文本和二进制传输协议,为节约带宽,提高传输效率,一般情况下使用二进制类型的传输协议为多数,有时还会使用基于文本类型的协议,这需要根据项目/产品中的实际需求。常用的协议有以下几种:

  TBinaryProtocol - 二进制编码格式进行数据传输

  TCompactProtocol - 高效率的、密集的二进制编码格式进行数据传输

     TCompactProtocol.Factory proFactory = new TCompactProtocol.Factory();(Server)

     TCompactProtocol protocol = new TCompactProtocol(transport); (client)

  TJSONProtocol -使用JSON的数据编码协议进行数据传输

  TJSONProtocol =只提供JSON只写的协议,适用于通过脚本语言解析

2. 传输层:常用的传输层有以下几种

  TSocket -使用阻塞式I/O进行传输,是最常见的模式

  TFramedTransport - 使用非阻塞方式,按块的大小进行传输,类似于Java中NIO

  TNonblocingTransport - 使用非阻塞方式,用于构建异步客户端

3. 服务器端类型

  TSimpleServer - 单线程服务器端使用标准的阻塞式I/O

  TThreadPoolExecutor - 多线程服务器端使用标准的阻塞式I/O

  TNonblockingServer - 多线程服务器使用非阻塞式的I/O

4. 部署结构

HelloServiceClient->Hello.java(Hello.thrift, common libs: libthrift.jar, slf4j-api.jar)->HelloServiceServer.java(ServiceImplementation, helloServiceImpl.java)

客户端和服务器端部署时,需要用到公共的jar包和java文件

【thrift】初识thrift的更多相关文章

  1. 【thrift】thrift详解

    转载:http://zheming.wang/thrift-rpcxiang-jie.html Thrift Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年 ...

  2. Thrift架构~thrift中间语言的认识(只有它什么都不是,它才有可能什么都是)

    中间语言是我为thrift语言起的名字,呵呵,为什么叫它中间语言呢,其实意思很简单,就是说,它只是一个过程,而不是一个最终的结果,而结果需要这个中间过程的影响,没有中间语言,结果语言也不能产生,在th ...

  3. 【thrift】thrift入门初探--thrift安装及java入门实例

    转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...

  4. Java使用Thrift,Thrift结构体定义

    1.Thrift定义文件,Thrift常见的数据类型 1.基本类型(括号内为对应的Java类型): bool(boolean): 布尔类型(TRUE or FALSE) byte(byte): 8位带 ...

  5. 使用Vue和thrift建立前后端交互的demo

    初识thrift thrift 是 facebook 于2007年开发的一款跨平台 RPC(Remote Procedure Call) 软件框架, 它可以在多种平台上进行无缝交互,数据传输使用二进制 ...

  6. Thrift架构~目录

    回到占占推荐博客索引 概念相关 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ru ...

  7. Thrift简单实践

    0.什么是RPC RPC(Remote Procedure Call - 远程过程调用),是通过网络从远程计算机上请求服务,而不需要了解底层网路技术的细节.简单点说,就是像调用本地服务(方法)一样调用 ...

  8. Thrift:Quick Start

    Thrift 快速开始 1 Thrift 介绍 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的 ...

  9. thrift的lua实现

    最近要进行系统升级,后台的数据是根据城市区分的.担心新系统的稳定性及新数据的准确性,计划部分城市采用新接口.接口的入参里没有城市信息,只有经纬度坐标,需要调用一个thrift接口来根据坐标获取城市信息 ...

随机推荐

  1. 高速排序java语言实现

    本博客不再更新,很多其它精彩内容请訪问我的独立博客 高速排序是非常重要的排序算法,可是我在学的时候发现网上没有特别好的样例所以自己动手写了一个. 自己动手丰衣足食. package sort; imp ...

  2. android推断手机是否root

    关于推断手机是否已经root的方法.假设app有一些特殊功能须要root权限,则须要推断是否root. 比方一些市场下载完app后自己主动安装. /** * @author Kevin Kowalew ...

  3. Android中关于cursor类介绍

    使用过 SQLite 数据库的童鞋对 Cursor 应该不陌生,如果你是搞.net 开发你大可以把Cursor理解成 Ado.net 中的数据集合相当于dataReader.今天特地将它单独拿出来谈, ...

  4. .net core 2.0小白笔记(一):开发运行环境搭建

    小白一枚,有任何不妥之处敬请指教 这里不讨论什么设计模式,什么架构,什么什么,就是入门,简单的入门,虽然能跨平台,但是这里还是在win的环境下进行,不扯的那么远 其实官网文档写的挺不错的了,就是偶尔有 ...

  5. mariadb在线热备份做主从

    yum install http://www.percona.com/downloads/percona-release/redhat/0.1-3/percona-release-0.1-3.noar ...

  6. Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面

    Atitit.跨语言 java c#.net php js常用的codec encode算法api 兼容性  应该内置到语言里面 1. 常用算法1 1.1. 目录2 1.2. 定义和用法编辑2 1.3 ...

  7. Heterogeneity Wins

     Heterogeneity Wins Edward Garson THE nATuRAl EvoluTion oF CoMpuTER TECHnology has brought about im ...

  8. JavaScript的split()

    JavaScript split() 方法 JavaScript String 对象 定义和用法 split() 方法用于把一个字符串分割成字符串数组. 语法 stringObject.split(s ...

  9. spring boot 集成mybatis报错

    Caused by: org.springframework.beans.factory.NoUniqueBeanDefinitionException: No qualifying bean of ...

  10. (二)spark算子 分为3大类

     transgormation的算子对key-value类型的数据有三种: (1)输入 与 输出为一对一关系 mapValue();针对key-value类型的数据并只对其中的value进行操作,不对 ...