学习了--Thrift的入门与基本使用

Thrift是Apache的跨语言通信框架,用于实现多语言间的高效通信。本文详细介绍了Thrift的入门知识,包括其应用场景、基本类型、协议、版本管理和处理器机制。此外,还涵盖了Thrift服务端和客户端的使用步骤,帮助开发者快速上手Thrift。

Thrift的入门及使用场景

在这里插入图片描述

1. 前言

概述 : Thrift是Apache下的子项目,为的是实现多语言之间的通信和传输

  1. Thrift有自己的跨语言的通信框架,并提供一套库
  2. Thrift也是一个代码生成器,按照它的规则,生成多种编程语言的通讯过程代码

一般情况下跨机器的通信框架都是跨软件平台的(Linux,Windows),而Thrift的特点在于跨语言,例如C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript等

上述的编程语言都可以通过Thrift实现通讯
带来的好处 : 不需要为编程语言发愁,如果服务端和客户端都要写,直接选择你最拿手的语言开发项目,然后Thrift会生成一个通讯框架

2. Thrift应用场景

Thrift主要分为三个部分,一个是Thrift代码生成器,一个是Thrift应用框架(库),一个是生成的代码,流程如图 :
在这里插入图片描述
如图所示,生成一个thrift应用,执行过程是 :

  1. 一个.thrift文件 : 这个文件是通信接口的定义,主要的是信息流的格式
  2. 编程语言 : 指定是哪个语言的(支持多语言,但开发者肯定是要在.thrift文件中指定语言的)
  3. Thrift代码生成器 : 在安装thrift过程中生成的,产生一定量的符合你的通信的格式代码
  4. Thrift应用框架库 : 也在安装过程中产生
  5. 其他第三方支持库

3.Thrift的类型

  1. 结构类型 : struct

    这是c语言中的struct,将基本类型组合起来

  2. 容器类型 : container

    这是集合类型(set/list/map),其中元素是任何thrift可识别的基本,结果,容器类型

  3. 异常类型 : exception

    从数据结构就是结构类型,可认为是便于处理异常的处理而单独拿出来,预定义的,有特殊意义的结构类型

  4. 服务定义类型 : service

    这个类型实际用来定义接口,Thrift代码生成器根据这个定义生成代码

Thrift的协议

这是对传输协议的封装,也就是传输采用二进制,XML或者text表示信息,它的功能有两个 :

  1. 双向的消息队列
  2. 信息的编码和解码

Thrift的版本

如果一个项目分开开发,那么版本是一定会遇到的问题,Thrift的版本是通过"fieldidentifiers"实现,每个结构由标识,结构中的每个域有其标识,这两个标识唯一决定了一个数据域,在解码时数据域的标识被检查,如果不能识别,数据域被抛弃,Thrift也可以通过"lsset"机制明确某些域的设置

四种情况 :
1. 添加数据域,旧客户端,新服务器端 : 客户端发送的数据中没有该域,服务器端能检测,可按缺省处理
2. 删除数据域,旧客户端,新服务器端 : 客户端发送的数据中有该域,服务器端忽略该域
3. 添加数据域,新客户端,旧服务器端 : 客户端发送数据中有该域,服务器忽略该域
4. 删除数据域,新客户端,旧服务器端 : 客户端发送得数据没有该域,服务器端可能不知道如何处理

Thrift得处理器(processor)

如何将各部分协调起来,形成代码(或用户代码的框架)。它有两个重要的类:TProcessor和TServer。TProcessor用来实现RPC调用,TServer是所有Server类的基类,TServer类主要处理连接和线程,而不管诸如传输、编码等。用户代码主要关注的一是.thrift文件,二就是这个接口。Thrift为此实现了TSimpleServer(单线程), TThreadedServer(每连接一个线程)和 TThreadPoolServer(线程池)等类。

Thrift的基本使用与学习

Thrift的数据类型

基本数据类型 :
bool : 布尔型 true或者false
byte : 8位有符号整数
i16 : 16位有符号整数(类似于Java的short)
i32 : 32位有符号整数(类似于Java的int)
i64 : 64位有符号整数(类似于Java的long)
double : 64位有符号整数(类似于Java的double)
string : utf-8的字符串(类似于Java的String)

这里注意Thrift的string的s是小写,与Java中的不同,如果在.thrift文件中写成String编译会报错

结果体类型 :

struct : 定义公共对象,类似于C语言中的结构体定义,在Java中是一个JavaBean

容器类型 :

list : 与Java中的ArrayList类似
set : 与Java中的HashSet类似
map : 与Java中的HashMap类似

异常类型

exception

服务类型

service

Thrift的服务端使用步骤

实现服务处理的接口impl
创建TProcessor
创建TServerTransport
创建TProtocol
创建TServer
启动Server

Thrift的客户端使用步骤

创建Transport
创建TProtocol
基于TTransport和TProtocol创建 Client
调用Client的相应方法

在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值