Thrift基本原理以及使用介绍

Thrift

初识Thrift

Thrift是一个跨语言通信的RPC软件,最初是由FaceBook开发的,现在是Apache的一个顶级项目。

Thrift概念:

Thrift 最初是由 Facebook 开发用做系统内各语言之间的 RPC 通信的一个可扩展且跨语言的软件框架,它结合了功能强大的软件堆栈和代码生成引擎,允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。Thrift 是 IDL 描述性语言的一个具体实现,适用于程序对程序静态的数据交换,需要先确定好数据结构。Thrift 是完全静态化的,当数据结构发生变化时,必须重新编辑IDL文件、代码生成再编译载入的流程,跟其他IDL工具相比较可以视为是 Thrift 的弱项。Thrift 适用于搭建大型数据交换及存储的通用工具,在大型系统中的内部数据传输上相对于 JSON 和 XML 无论在性能、传输大小上有明显的优势。

什么是RPC

Remote Procedure Call Protocol 远程过程调用协议,我们 举个例子说明:

本地调用

public void invoke() {
  String param1="string1";
  String param2="string2";
  String res = getStr(param1,param2);
  System.out.println("res = " + res);
}

private String getStr(String str1, String str2) {
  return str1 + str2;
}

调用方和被调用方都在一个程序内部,属于进程内调用。CPU 在执行调用时切换去执行被调用函数,执行完后再切换回来执行后续的代码。对调用方而言,执行被调用函数时会阻塞(非异步情况下)直到调用函数执行完毕。

RPC调用

public void test() {
TestQry.Client client = getClient("192.168.4.222", 7800, 5000);
  String param1="string1";
  String param2="string2";
  String res = client.getStr(param1,param2);
  System.out.println("res = " + res);
}

这里进程间调用,但是调用方和被调用方不再同一个进程,甚至不同的服务器和机房。进程间调用需要通过网络来传输数据,调用方在执行 RPC 调用时会阻塞(非异步情况下)直到调用结果返回才继续执行后续代码。

小结

现在应该知道什么是RPC了,概括一下就是:RPC是一种通过网络从远程计算机程序上请求服务的方式,它使得开发包括网络分布式多程序在内的应用程序更加容易。

Thrift结构

  • 代码框架层

Thrift 定义的服务接口描述文件生成的客户端和服务器端代码框架。

  • 数据读写操作层

是根据Thrift 文件生成代码实现数据的读写操作。Thrift允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

Thrift通信

一张图说明服务端启动

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值