Thrift科普

原文链接 https://zh.wikipedia.org/wiki/Thrift

是什么

Thrift是一種接口描述語言和二進制通訊協議,[1]它被用來定義和創建跨語言的服務。[2]它被當作一個遠程過程調用(RPC)框架來使用,是由Facebook為「大規模跨語言服務開發」而開發的。它通過一個代碼生成引擎聯合了一個軟件棧,來創建不同程度的、無縫的跨平台高效服務,可以使用C#、C++(基於POSIX兼容系統[3])、Cappuccino、[4]Cocoa、Delphi、Erlang、Go、Haskell、Java、Node.js、OCaml、Perl、PHP、Python、Ruby和Smalltalk。

RPC是什么

RPC
进程间通信(IPC,Inter-Process Communication),指至少两个进程或线程间传送数据或信号的一些技术或方法。进程是计算机系统分配资源的最小单位。每个进程都有自己的一部分独立的系统资源,彼此是隔离的。为了能使不同的进程互相访问资源并进行协调工作,才有了进程间通信。这些进程可以运行在同一计算机上或网络连接的不同计算机上。 进程间通信技术包括消息传递、同步、共享内存和远程过程调用。 IPC是一种标准的Unix通信机制。

有两种类型的进程间通信(IPC)。

本地过程调用(LPC)LPC用在多任务操作系统中,使得同时运行的任务能互相会话。这些任务共享内存空间使任务同步和互相发送信息。
远程过程调用(RPC)RPC类似于LPC,只是在网上工作。RPC开始是出现在Sun微系统公司和HP公司的运行UNIX操作系统的计算机中。
为什么RPC呢?就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需求,比如比如不同的系统间的通讯,甚至不同的组织间的通讯。由于计算能力需要横向扩展,需要在多台机器组成的集群上部署应用

RPC的核心并不在于使用什么协议。RPC的目的是让你在本地调用远程的方法,而对你来说这个调用是透明的,你并不知道这个调用的方法是部署哪里。通过RPC能解耦服务,这才是使用RPC的真正目的。RPC的原理主要用到了动态代理模式,至于http协议,只是传输协议而已。简单的实现可以参考spring remoting,复杂的实现可以参考dubbo。

简单的说,

RPC就是从一台机器(客户端)上通过参数传递的方式调用另一台机器(服务器)上的一个函数或方法(可以统称为服务)并得到返回的结果。
RPC 会隐藏底层的通讯细节(不需要直接处理Socket通讯或Http通讯) RPC 是一个请求响应模型。
客户端发起请求,服务器返回响应(类似于Http的工作方式) RPC 在使用形式上像调用本地函数(或方法)一样去调用远程的函数(或方法)。

为什么

Thrift包含一套完整的棧來創建客戶端和服務端程序。[7]頂層部分是由Thrift定義生成的代碼。而服務則由這個文件客戶端和處理器代碼生成。在生成的代碼里會創建不同於內建類型的數據結構,並將其作為結果發送。協議和傳輸層是運行時庫的一部分。有了Thrift,就可以定義一個服務或改變通訊和傳輸協議,而無需重新編譯代碼

竞品

其他RPC框架,比如
在这里插入图片描述

优点

Thrift一些已經明確的優點包括:[來源請求]

跟一些替代選擇,比如SOAP相比,跨語言序列化的代價更低,因為它使用二進制格式。
它有一個又瘦又乾淨的庫,沒有編碼框架,沒有XML配置文件。
綁定感覺很自然。例如,Java使用java.util.ArrayList;C++使用std::vectorstd::string。
應用層通訊格式與序列化層通訊格式是完全分離的。它們都可以獨立修改。
預定義的序列化格式包括:二進制格式、對HTTP友好的格式,以及緊湊的二進制格式。
兼作跨語言文件序列化。
協議使用軟版本號機制軟件版本管理[需要解釋]。Thrift不要求一個中心化的和顯式的版本號機制,例如主版本號/次版本號。鬆耦合的團隊可以輕鬆地控制RPC調用的演進。
沒有構建依賴也不含非標準化的軟件。不存在不兼容的軟件許可證混用的情況。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值