Thrift是由Facebook为“大规模跨语言服务开发”而开发的,现在是Apache软件基金会的开源项目。

Thrift实现了一种接口描述语言和二进制通讯协议,用来定义和创建跨语言的服务。它被当作一个RPC框架来使用。

Thrift支持的语言和特性

如果现在要实现一个除法divide的RPC接口服务:

float divide(1:int num1, 2:int num2=1) => InvalidOperation

如何使用Thrift来进行实现呢?

Thrift的基础库程序中已经提供了用于RPC通讯的底层基本消息协议和传输工具,也就是调用双方如何传输str、int、float等不同基本类型的数据无需我们自己再实现了。

但是对于不同的RPC接口是由不同个数不同类型的参数构成的,如上述divide服务就是有两个int类型的调用参数和float类型或InvalidOperation异常的返回值构成,也就是说发起调用时我们需要传递两个int类型的数据,调用完成返回值的时候,我们需要传递float类型或InvalidOperation异常,这些就需要我们利用Thrift提供的基础库自己写代码来实现。每个RPC接口服务都要定义出来,才能完成整个RPC调用。

若想调用双方使用不同的编程语言开发,即在不同的语言程序间完成RPC调用,那每个RPC接口服务都需要在调用方和被调用方使用不同的语言来定义。

上面的过程实际上是简单的重复工作。Thrift允许我们使用一种独立于任何编程语言的新的语言来定义接口服务,通常把这种语言成为接口定义语言(IDL,Interface Definition Language),我们使用Thrift的IDL将接口定义在一个文本文件中(通常使用.thrift后缀名,成为接口定义文件),然后使用Thrift提供的编译器(compiler)根据这个文件生成所需要的语言的程序源代码。\

生成得到不同接口的程序代码后,我们再编写客户端的调用代码和服务端的接口功能实现代码及启动代码,就可完成Thrift RPC的调用实现。

总结使用方法如下:

  1. 使用Thrift的IDL编写接口定义文件
  2. 使用Thrift的编译器生成特定语言的接口程序源代码
  3. 编写客户端和服务端程序

Thrift的架构

  • TProtocol 提供了对基础类型数据进行不同方式编码的消息协议工具
  • TTransport 提供了对编码后的消息数据进行不同方式网路传输的传输工具

Thrift架构与使用方法相关推荐

  1. Thrift架构~从图中理解thrift,它事实上是一种远程过程调用

    thrift为我们简化了tcp通讯,它可以使用我们方便的建立各种语言的服务端与客户端,并实现客户端对服务器的远程过程调用,简单的说就是服务器通过thrift架构对外开放一些接口,并自己实现这些接口,如 ...

  2. Thrift架构~thrift中间语言的认识(只有它什么都不是,它才有可能什么都是)

    中间语言是我为thrift语言起的名字,呵呵,为什么叫它中间语言呢,其实意思很简单,就是说,它只是一个过程,而不是一个最终的结果,而结果需要这个中间过程的影响,没有中间语言,结果语言也不能产生,在th ...

  3. 安装thrift错误的处理方法

    安装thrift错误的处理方法 输入安装thrift命令:brew install thrift 错误1: Error: Checksum mismatch. Expected: ab81211a20 ...

  4. 数据仓库架构和建设方法

    1.数据仓库概要 1.1.数据仓库起因 在建设数据仓库之前,数据散落在企业各部门应用的数据存储中,它们之间有着复杂的业务连接关系,从整体上看就如一张巨大的蜘蛛网:结构上错综复杂,却又四通八达.在企业级 ...

  5. python cs开发框架_用Python编写一个简单的CS架构后门的方法

    用Python编写一个简单的CS架构后门的方法 来源:中文源码网    浏览: 次    日期:2019年11月5日 [下载文档:  用Python编写一个简单的CS架构后门的方法.txt ] (友情 ...

  6. 企业架构 - ADM方法概要介绍

    在<企业架构 - 开篇:TOGAF介绍>中介绍了ADM是TOGAF的核心,本篇概要的介绍一下ADM方法的每个阶段的工作内容. 预备阶段 确定实现过程涉众,并且让它们面对企业架构工作的内容. ...

  7. 大数据架构的典型方法和方式

    版权声明:本文为半吊子子全栈工匠(wireless_com,同公众号)原创文章,未经允许不得转载. https://blog.csdn.net/wireless_com/article/details ...

  8. 旷视孙剑团队提出AutoML神经架构搜索新方法:单路径One-Shot,更精确更省时

    本文转载自旷视研究院 一步法(One-Shot)是一个强大的神经网络模型搜索(Neural Architecture Search/NAS)框架,但是它的训练相对复杂,并且很难在大型数据集(比如 Im ...

  9. 谷歌大脑发布神经架构搜索新方法:提速1000倍

    岳排槐 发自 LZYY 量子位 出品 | 公众号 QbitAI 去年,谷歌大脑团队发布神经网络自动架构搜索(NAS).这个方法理论上能够更好地.自动化地设计神经网络的架构. 尽管NAS表现出色,但却要 ...

最新文章

  1. OpenAI开放GPT-3微调功能,一行命令就能实现!正确率最高提升4倍
  2. 女朋友让我给她讲讲什么是比特币,她想买两个。
  3. jquery正则匹配URL地址
  4. 妙用Telnet快速收发电子邮件(转载)
  5. 原生js实现简单的焦点图效果
  6. 17pk扎金花基于层次的技术
  7. 后台解析数据--form表单get、post方法的使用(如何上传图片到服务器)
  8. 【js】querySelectorAll和getElemensByTagName的区别
  9. LLppdd likes strings
  10. 全国各地车牌号码查询表
  11. 游戏一般用什么编程语言开发?
  12. 如何在WPS中加入图表清单(类似生成自动目录)
  13. HTML+CSS综合实训(二) 仿制视频网
  14. 以下选项属于python哲学内容的是_[南开大学]18秋学期(清考)《哲学与人生》在线作业...
  15. Unity3D 页游测评报告
  16. 同事写了一个责任链模式,bug无数...
  17. python运维自动化老男孩_老男孩第十四期 python 自动化运维第二周
  18. 曾李青:早期创业公司九种死法
  19. PV操作经典例题——银行业务办理问题
  20. Java语言中,finally一定会执行吗?

热门文章

  1. Strutsw2与Spring整合流程-简述
  2. Ubuntu 16.04中安装VMware Tools
  3. Pytorch: 命名实体识别: BertForTokenClassification/pytorch-crf
  4. k8s核心组件详细介绍教程(配超详细实例演示)
  5. 如何写新的C++ OP
  6. 全卷积目标检测:FCOS
  7. 电商商品模块数据设计与关系图
  8. Error:(17, 0) SDK location not found. Define location with sdk.dir in the local.properties file or w
  9. window 10 桌面显示计算机的操作
  10. window 10系统更改默认下载的位置