美文网首页
从零开始学习Thrift之一——了解Thrift

从零开始学习Thrift之一——了解Thrift

作者: 程序员进阶之路 | 来源:发表于2019-06-14 17:32 被阅读0次

    从零开始学习Thrift之一——了解Thrift

    1. What is Thrift

    Thrift is a lightweight, language-independent software stack for point-to-point RPC implementation. 
    Thrift provides clean abstractions and implementations for data transport, data serialization, and 
    application level processing. The code generation system takes a simple definition language as input 
    and generates code across programming languages that uses the abstracted stack to build interoperable RPC clients and servers.
    

    上面是官方给出的介绍,简单的说就是:
    Thrift是一种轻量级、独立于语言的点对点的RPC实现框架,且其为数据传输,数据序列化和应用程序级处理提供了干净的抽象和实现,生成的代码可以跨语言跨平台的调用。

    那什么是RPC框架呢?

    一般的HTTP接口请求是在应用层完成的,而RPC可以不依赖于应用层协议,可以直接基于TCP进行远程调用,在传输层中即可完成通信,因此更适于某些对效率要求更高的场景。由于RPC调用方式依赖于客户端与服务端之间建立Socket连接来实现二进制数据通信,底层会比较复杂,所以一些RPC框架应运而生来封装这种复杂性,让开发者将精力聚焦于业务之上。常见的RPC框架包括:Thrift、gRPC、Finagle、Dubbo等等。

    2. Thrift文件的定义与编写

    使用IDL对接口进行描述的thrift文件命名一般都是以“.thrift”作为后缀:XXX.thrift,可以在该文件的开头为该文件加上命名空间限制,格式为:namespace语言 命名空间的名字;

    编写IDL文件时需要注意的问题

    1. 函数的参数要用数字依序标好,序号从1开始,形式为:“序号:参数名”;

    2. 每个函数的最后要加上“,”,最后一个函数不加;

    3. 在IDL中可以使用/……/添加注释

    4. 变量名不可以数字开头

    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:未知编码文本或二进制字符串,对应 Java 的 String
    

    结构体类型:

    struct:定义公共的对象,类似于 C 语言中的结构体定义,在 Java 中是一个 JavaBean
    

    容器类型:

    list:对应 Java 的 ArrayList
    set:对应 Java 的 HashSet
    map:对应 Java 的 HashMap
    

    异常类型:

    exception:对应 Java 的 Exception
    

    服务类型:

    service:对应服务的类
    

    3. 生成接口文件

    搭建Thrift编译环境之后,使用下面命令即可将IDL文件编译成对应语言的接口文件:

    thrift --gen <language> <Thrift filename>
    

    生成接口文件之后就可以继续接下来的服务端和客服端代码开发了,下次继续学习。

    4. Thrift的相关网址和资料:

    1. Thrift的官方网站:http://thrift.apache.org/
    1. Thrift官方下载地址:http://thrift.apache.org/download
    1. Thrift官方的IDL示例文件(自己写IDL文件时可以此为参考):
      https://git-wip-us.apache.org/repos/asf?p=thrift.git;a=blob_plain;f=test/ThriftTest.thrift;hb=HEAD
    1. 各种环境下搭建Thrift的方法:http://thrift.apache.org/docs/install/
      该页面中共提供了CentOS\Ubuntu\OS X\Windows几种环境下的搭建Thrift环境的方法。

    参考:
    https://blog.csdn.net/houjixin/article/details/42778335
    https://www.ibm.com/developerworks/cn/java/j-lo-apachethrift/index.html

    相关文章

      网友评论

          本文标题:从零开始学习Thrift之一——了解Thrift

          本文链接:https://www.haomeiwen.com/subject/gvgpfctx.html