thrift文件编写

文章目录

thrift 背景

由 Facebook 研发,主要用于各个服务之间的 RPC 通信,支持跨语言(c++,java,go,python,php,c#,js,Node.js)

thrift 是一个典型的 cs 架构,客户端和服务端可以采用不同的语言来开发,使用了一种中间语言 idl 来解决客户端和服务端电通信问题

客户端发起请求,服务器返回响应(类似于Http的工作方式) RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)

工作原理:定义thrift文件,由thrift文件(idl)生成双方语言的接口,model。这个 thrift 文件可以 RPC 的数据类型和接口,使用特殊的编译器来生成不同语言的代码,比如说对于 java 开发者,可以生成 java 代码

thrift 数据类型与结构

thrift 不支持无符号类型,java 不存在无符号类型

变量可选与必选

  • required 表示必选
  • optional 表示可选
struct People{  
    1: required string name;
    2: optional i32 age;
}

typedef 类型定义

typedef i32 int
typedef i64 long

const 常量定义

const i32 MAX_RETRIES_TIME=10
const string MY_WEBSITE="https://blog.csdn.net/BADAO_LIUMANG_QIZHI'

基本数据类型

byte:有符号字节
i16:16位2字节有符号整数
i32:32位4字节有符号整数
i64:64位8字节有符号整数
double:64位8字节浮点数
string:字符串类型

容器类型

list:一系列由T类型的数据组成的有序列表,元素可以重复

set:一系列由T类型的数据组成的无序集合,元素不可重复

map:一个字典结构,key为K类型,value为V类型,相当于Java中的HashMap

枚举

enum Gender{MALE,FEMALE}

结构体

struct People{  
    1: required string name;
    2: optional i32 age;
}

service 服务

thrift 中定义服务和 java 中创建 interface 一样,创建的 service 通过代码生成命令之后就会生成客户端和服务端的框架代码

service HelloWordService {
    // service中定义的函数,相当于Java interface中定义的方法
    string doAction(1:string name,2: i32 age);
    
}

命名空间

类似于 java 中的包名

namespace java com.bdao.thrift

文件包含

include "global.thrift"

异常

exception RequestException{
    1: i32 code;
    2: string reason;
}

注释

注释方式

  • #
  • //
  • /**/
上一篇:Thrift-服务端异步请求


下一篇:构建 thrift 简单项目, 使用 jmeter 去压测