thrift文件编写

文章目录

  • thrift 背景
  • thrift 数据类型与结构
    • 变量可选与必选
    • typedef 类型定义
    • const 常量定义
    • https://www.fons.com.cn/tag/%e5%9f%ba%e6%9c%ac%e6%95%b0%e6%8d%ae%e7%b1%bb%e5%9e%8b" target="_blank">基本数据类型
    • 容器类型
    • 枚举
    • 结构体
    • service 服务
    • 命名空间
    • 文件包含
    • 异常
    • 注释

thrift 背景

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

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

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

工作原理:定义thrift文件,由thrift文件(idl)生成双方语言的接口,model。这个 thrift 文件可以 RPC 的数据类型和接口,使用特殊的编译器来生成不同语言的代码,比如说对于 javarpc服务器不可用 开发者,多语言的英文怎么写可以生成 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 一样,thrifty名词创建的 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;
}

注释

注释方式

  • #
  • //idle是什么意思中文
  • /**/