php laravel thrift      2017-04-17

前言

最近在项目中遇到需要跨系统调用的需求,找了很多rpc框架对比,因为其他部分项目使用了golang语言,为了考虑日后系统间调用更加灵活,所以决定使用thrift框架。

Thrif简介

Thrift是一个支持跨语言(支持但不限于php,golang,java,c++,Ruby,Node.js等)支持远程调用rpc的软件框架.

Thrift定义了一个简单的数据类型和服务接口标准,在使用时只需要实现定义好需要用的数据类型与服务(近似理解成调用函数)到.thrfit文件,使用thrfit指令生成对应版本的语言即刻,在下面会说如何编写.thrfit文件

Thrift在osx下的安装

需要注意的是,thrift并不需要安装到服务器,只需要安装到你自己的开发机上,使用指令生成对应对应开发语言的代码就可以了。
我使用的系统是osx10.10,用的最简单的homebrew安装方式,只需要一行指令即刻

  1. brew install thrift

在等待片刻后,键入thrift命令看到thrift帮助指令即安装成功.

.thrift文件定义

接下来我们需要根据项目需求来定义thrift文件,thrift支持的数据类型如下:

  • 基本类型:
    • bool:布尔值,true 或 false,对应 Java 的 boolean
    • byte:8 位有符号整数,对应 Java 的 byte
    • i16:16 位有符号整数,对应 Java 的 short
    • i32:32 位有符号整数,对应 Java 的 int
    • i64:64 位有符号整数,对应 Java 的 long
    • double:64 位浮点数,对应 Java 的 double
    • string:utf-8编码的字符串,对应 Java 的 String
  • 结构体类型:
    • struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean
  • 容器类型:

    • list:对应 Java 的 ArrayList
    • set:对应 Java 的 HashSet
    • map:对应 Java 的 HashMap
  • 异常类型:

    • exception:对应 Java 的 Exception
  • 服务类型: