没有合适的资源?快使用搜索试试~ 我知道了~
thrift服务集成spring及连接池
4星 · 超过85%的资源 需积分: 14 173 下载量 117 浏览量
2012-04-01
14:19:12
上传
评论 4
收藏 143KB DOCX 举报
温馨提示
试读
21页
thrift是为了解决facebook系统中各系统间大数据量的传输通信以及系统之间语言环境不同需要跨平台的特性。thrift服务支持多种程序语言。比webservice简单方便。thrift集成spring。thrift集成连接池。使通信服务更简单。
资源推荐
资源详情
资源评论
Thrift-java 学习小结
Thri 是什么?什么情况下使用 thri
源于大名鼎鼎的 之手,在 年 提交 基金会将 作为一个开源
项目,对于当时的 来说创造 是为了解决 系统中各系统间大数据量的传输通信以及
系统之间语言环境不同需要跨平台的特性。所以 可以支持多种程序语言,例如
!"####$%&$'"(在多种不同的语言之间通信 可以作为二
进制的高性能的通讯中间件,支持数据 )对象*序列化和多种类型的 %# 服务。 是 +,-)
./0&*描述性语言的一个具体实现, 适用于程序对程序静态的数据交换,需要先确定好
他的数据结构,他是完全静态化的,当数据结构发生变化时,必须重新编辑 +,- 文件,代码生成,再编译
载入的流程,跟其他 +,- 工具相比较可以视为是 的弱项, 适用于搭建大型数据交换及存储的通
用工具,对于大型系统中的子系统间数据传输相对于 '!1 和 2" 无论在性能、传输大小上有明显的优势。
Thrift 基础架构
是一个服务端和客户端的架构体系,就是 传输,具有自己内部定义的传输协议规范
)#*和传输数据标准)*,通过 +,- 脚本对传输数据的数据结构)&*和传输数据的业务逻
辑) *根据不同的运行环境快速的构建相应的代码,并且通过自己内部的序列化机制对传输的数据进
行简化和压缩提高高并发、 大型系统中数据交互的成本,下图描绘了 的整体架构,分为 3 个部分:
4(你的业务逻辑实现)5&.*(客户端和服务端对应的 ' 6(执行读写操作的计算结果 7(#
8(3(底层 +9! 通信
Thrift 脚本的数据类型
* Base Types:基本类型
bool Boolean, one byte
byte Signed byte
i16 Signed 16-bit integer
i32 Signed 32-bit integer
i64 Signed 64-bit integer
double 64-bit oating point value
string String
binary Blob (byte array)
* Struct:结构体类型
* Container:容器类型,即 List、Set、Map
map<t1,t2> Map from one type to another
list<t1> Ordered list of one type
set<t1> Set of unique elements of one type
* Exception:异常类型
* Service: 定义对象的接口,和一系列方法
协议
Thrift 可以让你选择客户端与服务端之间传输通信协议的类别,在传输协议上总体上划分为文本(text)和二进制(binary)传
输协议, 为节约带宽,提供传输效率,一般情况下使用二进制类型的传输协议为多数,但有时会还是会使用基于文本类型
的协议,这需要根据项目/产品中的实际需求:
* TBinaryProtocol – 二进制编码格式进行数据传输。
* TCompactProtocol – 这种协议非常有效的,使用 Variable-Length Quantity (VLQ) 编码对数据进行压缩。
* TJSONProtocol – 使用 JSON 的数据编码协议进行数据传输。
* TSimpleJSONProtocol – 这种节约只提供 JSON 只写的协议,适用于通过脚本语言解析
* TDebugProtocol – 在开发的过程中帮助开发人员调试用的,以文本的形式展现方便阅读。
传输层
* TSocket- 使用堵塞式 I/O 进行传输,也是最常见的模式。
* TFramedTransport- 使用非阻塞方式,按块的大小,进行传输,类似于 Java 中的 NIO。
* TFileTransport- 顾名思义按照文件的方式进程传输,虽然这种方式不提供 Java 的实现,但是实现起来非常简单。
* TMemoryTransport- 使用内存 I/O,就好比 Java 中的 ByteArrayOutputStream 实现。
* TZlibTransport- 使用执行 zlib 压缩,不提供 Java 的实现。
服务端类型
* TSimpleServer - 单线程服务器端使用标准的堵塞式 I/O。
* TThreadPoolServer - 多线程服务器端使用标准的堵塞式 I/O。
* TNonblockingServer – 多线程服务器端使用非堵塞式 I/O,并且实现了 Java 中的 NIO 通道。
Thri 运用实例
4、 业务逻辑描述:0"' 授权服务引擎)授权、是否重复计费、计费、购买信息、当前购
买列表*
、 首先编写脚本文件 (:
命名空间:
namespace java com.test
namespace 是关键字表示命名空间,也就是 java 的包,java 表示脚本转换成 java 类
namespace java com.test
struct UserRequest
{
1:string identitycard
}
struct UserResponse
{
1:string code
2:map<string,string> params
}
service ThriftCase
{
UserResponse integralService(1:UserRequest request)
}
请求:.0$. 是身份证号
&:%;&
<
4.0$.
=
返回:. 是成功标识 表示成功; 是用户拥有的积分
#" 是返回的参数集合这里只用一个字段积分()做例子;
&:%
<
4.
">?"
=
服务:
<
:%' )4:%;&;&*
=
6、 到 官网下载
@99((9
下载:thrift-0.8.0.tar.gz 和 Thrift compiler for Windows (thrift-0.8.0.exe)
4、用 eclips 里面的 ant 工具把 thrift-0.8.0 编译出 jar 包
解压:thrift-0.8.0.tar.gz
把解压后的文件夹放到 的某个工程下如图:
如上图 A(B( 文件夹放在名字是 的 C 工程的 下,有红叉不必管他,然后进入到 A
(B(99C 中,右键点击 &.(2"
如图点击 D&.。在 &.(2" 同路径下会产生一个 &. 文件夹里面有生成的 A(B((C 包。把
这个包放到所做的工程的 里就行了。
8、 把 脚本编译成 C 类
把 thrift-0.8.0.exe 和 .thrift 文件放在同一个目录下并把路径写进环境变量 Path 中,如:E:/
soft/ccc/路径下放入上述两个文件并把路径写进环境变量 Path 中。
在运行中键入 cmd 打开 dos 界面,进到 E:/soft/ccc/路径下,执行 thrift-0.8.0.exe 文件,命令如
下:
E:\soft\ccc\>Thrift-0.8.0 –gen java .thrift
在这个目录下会产生一个 gen-java 文件夹,文件夹中会产生相应的 java 类,
(C
:%;&(C
:%(C
将三个文件拷贝到 工程的 9"99路径下。
项目归放:
接口实现类 com.test.service.ThriftCaseImpl
服务端:com.test.thrift.PushRPCServer
连接池接口 com.test.thrift.pool.ConnectionProvider
连接池管理 com.test.thrift.pool.impl.ConnectionManager
连接池接口实现
com.test.thrift.pool.impl.ConnectionProviderImpl
连接池工厂
com.test.thrift.pool.impl.ThriftPoolableObjectFactory
剩余20页未读,继续阅读
yangll
- 粉丝: 335
- 资源: 11
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
- 4
- 5
前往页