【thrift】初识thrift
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的更多相关文章
- 【thrift】thrift详解
转载:http://zheming.wang/thrift-rpcxiang-jie.html Thrift Thrift是一个跨语言的服务部署框架,最初由Facebook于2007年开发,2008年 ...
- Thrift架构~thrift中间语言的认识(只有它什么都不是,它才有可能什么都是)
中间语言是我为thrift语言起的名字,呵呵,为什么叫它中间语言呢,其实意思很简单,就是说,它只是一个过程,而不是一个最终的结果,而结果需要这个中间过程的影响,没有中间语言,结果语言也不能产生,在th ...
- 【thrift】thrift入门初探--thrift安装及java入门实例
转载:https://www.cnblogs.com/fingerboy/p/6424248.html 公司的一些平台服务框架底层封装了thrift提供服务,最近项目不是很紧,于是研究了一下,刚刚入门 ...
- Java使用Thrift,Thrift结构体定义
1.Thrift定义文件,Thrift常见的数据类型 1.基本类型(括号内为对应的Java类型): bool(boolean): 布尔类型(TRUE or FALSE) byte(byte): 8位带 ...
- 使用Vue和thrift建立前后端交互的demo
初识thrift thrift 是 facebook 于2007年开发的一款跨平台 RPC(Remote Procedure Call) 软件框架, 它可以在多种平台上进行无缝交互,数据传输使用二进制 ...
- Thrift架构~目录
回到占占推荐博客索引 概念相关 thrift是一个软件框架,用来进行可扩展且跨语言的服务的开发.它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ru ...
- Thrift简单实践
0.什么是RPC RPC(Remote Procedure Call - 远程过程调用),是通过网络从远程计算机上请求服务,而不需要了解底层网路技术的细节.简单点说,就是像调用本地服务(方法)一样调用 ...
- Thrift:Quick Start
Thrift 快速开始 1 Thrift 介绍 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等.其中所用到的 ...
- thrift的lua实现
最近要进行系统升级,后台的数据是根据城市区分的.担心新系统的稳定性及新数据的准确性,计划部分城市采用新接口.接口的入参里没有城市信息,只有经纬度坐标,需要调用一个thrift接口来根据坐标获取城市信息 ...
随机推荐
- SpringMVC传值(对象或字符串)给前台js
java对象到js对象 1.先使用Jackson把对象转换成json串 ObjectMapper objectMapper = new ObjectMapper(); String json = ob ...
- Jmeter3.0-多维度的图形化HTML报告
本文转载于推酷:http://www.tuicool.com/articles/BNvuEzr 在JMeter3.0之前,官方只提供在工具的UI上对测试结果部分维度的图形化展示,这对我带来了两方面的困 ...
- Android文章收藏
Android集 1.Himi李华明的<Android游戏开发专栏>http://blog.csdn.net/column/details/androidgame.html2.老罗的&l ...
- hdu3336解读KMP算法的next数组
查看原题 题意大致是:给你一个字符串算这里面全部前缀出现的次数和.比方字符串abab,a出现2次.ab出现2次,aba出现1次.abab出现1次.总计6次. 而且结果太大.要求对1007进行模运算. ...
- 利用python 掌握机器学习的过程
转载:http://python.jobbole.com/84326/ 偶然看到的这篇文章,觉得对我挺有引导作用的.特此跟大家分享一下. 为了理解和应用机器学习技术,你需要学习 Python 或者 R ...
- Thread 常搞混的几个概念sleep、wait、yield、interrupt
sleep:在指定的毫秒数内让当前正在执行的线程休眠(暂停执行),此操作受到系统计时器和调度程序精度和准确性的影响.该线程不丢失任何监视器的所属权. 通过调用sleep使任务进入休眠状态,在这种情况下 ...
- hdu 4454 Stealing a Cake(计算几何:最短距离、枚举/三分)
题意:已知起点.圆.矩形,要求计算从起点开始,经过圆(和圆上任一点接触即可),到达矩形的路径的最短距离.(可以穿过园). 分析:没什么好的方法,凭感觉圆上的每个点对应最短距离,应该是一个凸函数,用三分 ...
- md5加密--32位16进制小写
public class ttgameMd5 { public final static String MD5(String str) { char hexDigits[] = { // 用来将字节转 ...
- iOS 解决TableView reloadData时cell中图片会闪的问题
tableView调用reloaddata的时候发现有个小问题,每次刷新图片都会抖动闪烁一下,看着很难受,也影响体验.造成这个问题的主要原因是因为刷新时候切换图片导致.要解决这个问题也很好解决,使用S ...
- 【JMeter4.0学习(十一)】之JMeter对(Mysql、Oracle)数据库性能测试脚本开发
一.MySQL数据库链接: 注:下面所产生的问题一律参考详见:<[JMeter4.0]之遇到的问题总结(持续更新)>(包括Mysql.Orcale) 准备:引包,包路径一定要放对位置,参考 ...