对Thrift的一点点理解

对Thrift的一点点理解


这是一篇学习Thrift的笔记,包含了这样几点内容:

  • 简单介绍Thrift
  • 怎样使用Thrift
  • Thrift整体架构
  • Thrift中的知识点 
      struct可以设置默认值 
      thrift中的序列化机制 
      thrift中的版本控制

简单介绍Thrift

  它是一款RPC通信框架,采用C/S架构,且拥有高效的序列化机制。要使用Thrift,首先我们需要在远端服务器上开启Thrift服务,之后,服务器端进程保持睡眠状态,直到客户端代码的调用。 
  Thrift应用广泛的一个主要原因是它支持多种主流的语言,且使用它的用户不需要关注服务器和客户端是怎样实现通信,怎样实现序列化的,只需要去考虑怎样实现自己需要的业务逻辑。 
  Thrift使用接口语言定义数据结构和服务,包含了最常用的数据类型,并一一对应各种语言的基本类型,还可以定义枚举和异常等等。


怎样使用Thrift

  Thrift把它定义的相当简洁,以致于我们的使用过程也是异常的方便,简单来说,使用Thrift的过程只是需要以下的四个步骤: 
  1. 设计需要交互的数据格式(struct、enum等等)和具体的服务(service),定义thrift接口描述文件,也就是后缀名是 .thrift 
  2. 利用thrift工具(我使用的是比较老的版本0.5.0),根据之前定义的接口文件生成目标语言文件(在这次的笔记中客户端代码和服务器代码都是使用java语言) 
  3. 实现服务(service)代码,并把实现的业务逻辑设定为thrift服务器的处理层,选择端口,服务器启动监听,等待客户端的连接请求 
  4. 客户端使用相同的端口连接服务器请求服务

下面简单的介绍下thrift接口描述语言(IDL)的类型: 
IDL包含基础类型、结构、容器、异常和服务这样几种类型: 
  基础类型 : 包括了 bool,byte、i16,i32,i64,double,string,每一种都对应各种语言的基础类型 
  结构 : 在thrift中定义为struct,它类似于C语言中的结构体,是基础类型的集合体,每一个结构都会生成一个单独的类,在java中类似于pojo 
  容器 : thrift中定义了常用的三种容器 – list,set,map,在Java中各自的对应实现是 ArrayList、HashSet、HashMap,其中模板类型可以是基础类型或者结构类型 
  异常 : 异常的定义类似于struct,只是换成了exception 
  服务 : 服务类似于java中的接口,需要对服务中的每一个方法签名定义返回类型、参数声明、抛出的异常,对于方法抛出的异常,除了自己声明的之外,每个方法还都会抛出TException,对于返回值是void类型的方法,我们可以在方法签名的前面加上oneway标识符,将这个方法标记为异步的模式,即调用之后会立即返回

  下面,为了更好的理解怎样使用thrift,以及怎样使用IDL中的类型,我将举一个例子,当然,这个例子只是为了演示过程,并没有过多的设计,可能会存在一些并不实用的逻辑。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值