Thrift 开源多语言服务开发框架
基础教程

Thrift是什么?

RPC服务框架,为了跨语言的服务开发。 它是一个生成代码的工具。只需要依照IDL(Interface Description Language)定义一次接口,Thrift工具就能自动生成 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml等语言的代码。 其实很多公司都有自己的类似Thrift的基础代码架构,服务构建、事件处理、传输协议的代码都让架构来根据接口定义自动生成,码农只写跟具体业务相关的逻辑代码就行。

Thrift怎么用?

$ thrift --gen `language` `thirft filename`

Thrift接口描述语言 IDL

IDL是用来表述Thrift类型定义的特定描述语言。Thrift代码生成器根据IDL来生成各种不同的目标语言。 因此IDL的类型会特别注意通用性质。

Thrift IDL 基本类型

基本类型是所有语言都会有的最基础数据类型,包括

基本类型中并没有无符号整型,这是因为许多编程语言中并没有这一类型。

Thrift IDL 特殊类型

Thrift IDL 结构体类型

这是一种不带继承性质的类类型。

Thrift IDL 容器类型

很多语言中都有的强类型容器。容器元素的类型可以任意的thrift类型。但同一个容器中的类型必须都一样。

Thrift IDL 异常类型

它是结构体类型的一种,可以继承目标语言的原生异常基类。

Thrift IDL 服务类型

Thrift接口描述语言IDL的描述结构

上面说了IDL是干什么用的,说了IDL中可以使用什么数据类型,现在要说Thrift描述文件该怎么写。

Thrift目前不支持的特性

参考资料

官网教程 相关介绍

RPC框架合集

    rpcx: 基于Go的服务治理的rpc框架、客户端支持跨语言
    grpc: Google 出品的跨语言rpc框架,很弱的(实验性的)负载均衡, 测试使用的是grpc-go
    go std rpc: Go标准库的rpc, 不支持跨语言(jsonrpc支持json rpc 1.0)
    thrift: 跨语言的rpc框架,facebook贡献
    dubbo: 国内较早开源的服务治理的Java rpc框架,虽然在阿里巴巴内部竞争中落败于HSF,沉寂了几年,但是在国内得到了广泛的应用,目前dubbo项目又获得了支持,并且dubbo 3.0也开始开发
    motan: 微博内部使用的rpc框架,底层支持java,生态圈往service mesh发展以支持多语言
    hprose: 国内开发人员开发的一个跨语言的rpc框架,非服务治理但是性能高效
    twirp: twitch.tv刚刚开源的一个restful风格的rpc框架
    go-micro: Go语言的一个服务治理rpc框架, 在测试中发现性能不太好,所以没有继续测试,相关的测试代码已在github库中
    go kit:
    腾讯 Tars:腾讯公司的rpc框架
    百度 brpc: 百度公司的rpc框架
    spring cloud:
*****
Written by Lu.dev on 01 December 2015