Thirft学习

thrift

Thrift架构:
thrift允许你定义一个简单的定义文件中的数据类型和服务接口。以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言
1.Thrift是一个跨语言的服务部署架构,它通过IDL(接口定义语言)来定义RPC(远程过程调用)的接口和数据类型,然后通过thrift编译器生成不同语言的代码,并由生成的代码负责RPC协议层和传输层的实现。
2.Thrift的RPC调用过程:
1)
3.Thrift的TProtocol协议层,定义数据传输格式
4.TTransport传输层,定义数据传输方式
5.Thrift支持的服务类型:TSimpleServer单线程服务模型;TThreadPoolServer多线程服务模型使用标准的阻塞式IO;TNonblockingServer多线程服务模型,使用非阻塞式IO
6.Thrift语法
7.数据类型
1)基本类型
2)容器
3)结构体:整数ID,数据类型,字段名,可选的默认值。
4)异常:异常在语法和功能上类似于结构体,只不过异常使用关键字exception而不是struct关键字声明。但它在语义上不同于结构体,当定义一个RPC服务时,开发者可能需要声明一个远程方法抛出一个异常。
8.服务service:thrift编译器会根据选择的目标语言为server产生服务接口代码,为client产生桩代码。service中的函数,其参数列表的定义方式与struct完全一样;
service支持继承,一个service可使用extends关键字继承另一个service,struct不支持继承;
9.枚举类型:最后声明的末尾没有逗号
10.常量const:thrift允许用户定义常量,复杂的类型和结构体可用JSON形式表示。
const i32 INT_CONST = 1234; // 分号是可选的
const map<string,string> MAP_CONST = {“hello”: “world”, “goodnight”: “moon”}
11.命名空间:
namespace cpp com.example.project
namespace java com.example.project
12.thrift网络栈
Processor的工作流程:
从连接中读取数据(使用输入protocol),将处理授权给handler(由用户实现),最后将结果写到连接上(使用输出protocol)。
Server的工作流程:
(1) 创建一个transport对象
(2) 为transport对象创建输入输出protocol
(3) 基于输入输出protocol创建processor
(4) 等待连接请求并将之交给processor处理
Thrift网络服务模型

一种角度划分:单线程、多线程、事件驱动;
另一种角度:阻塞服务模型、非阻塞服务模型。

  • 阻塞服务

    1.TSimpleServer:简单的单线程服务模型。主要用于测试
    2.TThreadPoolServer:多线程服务模型,使用标准的阻塞式IO,预先创建一组线程处理请求。

  • 非阻塞服务

1.TNonblockingServer:多线程服务模型,使用非阻塞式IO,只有一个线程来处理消息。
2.THsHaServer:半同步半异步的服务模型,一个单独的线程用来处理网络IO,一个worker线程池用来进行消息的处理
3.TThreadedSelectorServer:允许你用多个线程来处理网络IO,他维护了两个线程池,一个用来处理网络IO,另一个用来进行请求的处理。

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值