学习了--Thrift的入门与基本使用

Cassandra 入门三-使用Thrift +java和进行数据操作 Thrift是一个驱动车API,比较低级, cassandra官方文档一直在推荐高级点的去开发应用,但是我个人认为,还是先把Thrift原理搞明白,有利于进一步学习. 代码取自the definitive guide cassandra,有改动,因为书里面代码太老了,不适应1.2.1 使用Thrift需要的包就在安装cassandra里面的lib文件夹里面,放在java里 这里我假设 阅读详情

Thrift的入门及使用场景

在这里插入图片描述

1. 前言

概述 : Thrift是Apache下的子项目,为的是实现多语言之间的通信和传输

  1. Thrift有自己的跨语言的通信框架,并提供一套库
  2. Thrift也是一个代码生成器,按照它的规则,生成多种编程语言的通讯过程代码

一般情况下跨机器的通信框架都是跨软件平台的(Linux,Windows),而Thrift的特点在于跨语言,例如C++,Java,Python,PHP,Ruby,Erlang,Perl,Haskell,C#,Cocoa,JavaScript等

上述的编程语言都可以通过Thrift实现通讯
带来的好处 : 不需要为编程语言发愁,如果服务端和客户端都要写,直接选择你最拿手的语言开发项目,然后Thrift会生成一个通讯框架

2. Thrift应用场景

Thrift主要分为三个部分,一个是Thrift代码生成器,一个是Thrift应用框架(库),一个是生成的代码,流程如图 :
在这里插入图片描述
如图所示,生成一个thrift应用,执行过程是 :

  1. 一个.thrift文件 : 这个文件是通信接口的定义,主要的是信息流的格式
  2. 编程语言 : 指定是哪个语言的(支持多语言,但开发者肯定是要在.thrift文件中指定语言的)
  3. Thrift代码生成器 : 在安装thrift过程中生成的,产生一定量的符合你的通信的格式代码
  4. Thrift应用框架库 : 也在安装过程中产生
  5. 其他第三方支持库

3.Thrift的类型

  1. 结构类型 : struct

    这是c语言中的struct,将基本类型组合起来

  2. 容器类型 : container

    这是集合类型(set/list/map),其中元素是任何thrift可识别的基本,结果,容器类型

  3. 异常类型 : exception

    从数据结构就是结构类型,可认为是便于处理异常的处理而单独拿出来,预定义的,有特殊意义的结构类型

  4. 服务定义类型 : service

    这个类型实际用来定义接口,Thrift代码生成器根据这个定义生成代码

Thrift的协议

这是对传输协议的封装,也就是传输采用二进制,XML或者text表示信息,它的功能有两个 :

  1. 双向的消息队列
  2. 信息的编码和解码

Thrift的版本

如果一个项目分开开发,那么版本是一定会遇到的问题,Thrift的版本是通过"fieldidentifiers"实现,每个结构由标识,结构中的每个域有其标识,这两个标识唯一决定了一个数据域,在解码时数据域的标识被检查,如果不能识别,数据域被抛弃,Thrift也可以通过"lsset"机制明确某些域的设置

四种情况 :
1. 添加数据域,旧客户端,新服务器端 : 客户端发送的数据中没有该域,服务器端能检测,可按缺省处理
2. 删除数据域,旧客户端,新服务器端 : 客户端发送的数据中有该域,服务器端忽略该域
3. 添加数据域,新客户端,旧服务器端 : 客户端发送数据中有该域,服务器忽略该域
4. 删除数据域,新客户端,旧服务器端 : 客户端发送得数据没有该域,服务器端可能不知道如何处理

Thrift得处理器(processor)

如何将各部分协调起来,形成代码(或用户代码的框架)。它有两个重要的类:TProcessor和TServer。TProcessor用来实现RPC调用,TServer是所有Server类的基类,TServer类主要处理连接和线程,而不管诸如传输、编码等。用户代码主要关注的一是.thrift文件,二就是这个接口。Thrift为此实现了TSimpleServer(单线程), TThreadedServer(每连接一个线程)和 TThreadPoolServer(线程池)等类。

Thrift的基本使用与学习

Thrift的数据类型

基本数据类型 :
bool : 布尔型 true或者false
byte : 8位有符号整数
i16 : 16位有符号整数(类似于Java的short)
i32 : 32位有符号整数(类似于Java的int)
i64 : 64位有符号整数(类似于Java的long)
double : 64位有符号整数(类似于Java的double)
string : utf-8的字符串(类似于Java的String)

这里注意Thrift的string的s是小写,与Java中的不同,如果在.thrift文件中写成String编译会报错

结果体类型 :

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

容器类型 :

list : 与Java中的ArrayList类似
set : 与Java中的HashSet类似
map : 与Java中的HashMap类似

异常类型

exception

服务类型

service

Thrift的服务端使用步骤

实现服务处理的接口impl
创建TProcessor
创建TServerTransport
创建TProtocol
创建TServer
启动Server

Thrift的客户端使用步骤

创建Transport
创建TProtocol
基于TTransport和TProtocol创建 Client
调用Client的相应方法

在这里插入图片描述

Thrift框架入门使用及原理(学习之路) Thrift框架入门使用及原理 下载thrift.exe文件 下载地址:http://archive.apache.org/dist/thrift/0.9.3/ 下载完成后,把文件名改成thrift.exe(切记) 增加环境变量 在path中增加以下环境变量: 测试安装thrift是否成功 在cmd中输入以下,测试成功! 编写.thrift文件 service HelloService { ... 阅读详情

相关推荐

Apache Thrift系列详解(一) - 概述与入门

前言 Thrift是一个轻量级、跨语言的远程服务调用框架,最初由Facebook开发,后面进入Apache开源项目。它通过自身的IDL中间语言, 并借助代码生成引擎生成各种主流语言的RPC服务端/客户端模板代码。 Thrift支持多种不同的编程语言,包括C++、Java、Python、PHP、Ruby等,本系列主要讲述基于Java语言的Thrift的配置方式和具体使用。 正文 Thrift的技术...

陌上轩客 9796

thrift 介绍及其使用

Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。例如,我想开发一个快速计算的RPC服务,它主要通过接口函数getInt对外提供服务,这个RPC服务的getInt函数使用用户传入的参数,经过复杂的计算,计算出一个整形值返回给用户;

daemon365的博客 2036

thrift系列 - 快速入门

1.简介            Thrift是当前流行的RPC框架之一,它有强大的代码生成引擎,可以跨语言,轻松解决程序间的通信问题。 本文旨在帮助大家快速入门,若想深入原理,请参见thrift官网:http://thrift.apache.org/。(大家都很忙,少说废话) 2.下载windows版的IDL compiler      访问地址:http://www.apac

hrn1216的博客 2万+

Thrift使用

https://lizongwu.github.io/2017/02/13/Thrift%E4%BD%BF%E7%94%A8/ 1. thrift基本使用 很多PRC解决方案都是采用一种中间的IDL语言来描述接口,通过该接口服务端知道应该提供哪些服务,客户端知道可以使用哪些服务。Java RMI,CORBA,Android AIDL(AIDL为IPC,不过思路是一样的)都是采用的这种思想,th...

yb223731的博客 839

Thrift 入门

1.Thrift 是什么 Apache Thrift 是 Facebook 实现的一种高效的、支持多种编程语言的远程服务调用的框架 2. 为什么是Thrift ,相比rest, soap等远程调用方式 目前流行的服务调用方式有很多种,例如基于 SOAP 消息格式的 Web Service,基于 JSON 消息格式的 RESTful 服务等。其中所用到的数据传输方式

Just Do It! 2773

Thrift介绍以及Java中使用Thrift实现RPC示例

场景 Thrift Thrift最初由Facebook研发,主要用于各个服务之间的RPC通信,支持跨语言,常用的语言比如C++, Java, Python,PHP, Ruby, Erlang,Perl,Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml都支持。 Thrift是一个典型的CS(客户端/服务端)结构,客户端和服务端可以使用不同的语言开发。既然客户端和服务端能使用不同的语言开发,那么一定就要有一种中间语言来关联客户端和服

BADAO_LIUMANG_QIZHI的博客 5025

由浅入深了解Thrift(一)——Thrift介绍与用法

相关示例代码见:http://download.youkuaiyun.com/detail/hjx_1000/8374829 一、Thrift简单介绍 1.1、Thrift是什么?能做什么? Thrift是Facebook于2007年开发的跨语言的rpc服框架,提供多语言的编译功能,并提供多种服务器工作模式;用户通过Thrift的IDL(接口定义语言)来描述接口函数及数据类型,然后通过Thrift的编译环境生成各种语言类型的接口文件,用户可以根据自己的需要采用不同的语言开发客户端代码和服务器端代码。 例...

大叶子不小的博客 1854

Linux V4L2驱动开发实战:手把手教你用I2C摄像头Sensor注册一个v4l2_subdev

本文详细解析了Linux V4L2驱动开发中I2C摄像头Sensor注册v4l2_subdev的全流程,包括初始化、操作集填充、异步匹配等关键环节。通过实战案例和代码示例,帮助开发者掌握V4L2子系统下的摄像头驱动开发技巧,提升嵌入式Linux系统开发能力。

weixin_30328063的博客 418

Thrift使用指南及语法介绍

Thrift使用指南及语法介绍   本文介绍了RPC框架Thrift的语法以及使用指南,本文是Thrift The Missing Guide的中文翻译版。  Reference thrift-missing-guide Thrift使用指南及语法介绍 语法参考 类型(Types) Thrift类型系统包括预定义的基本类型,用户自定义结构体,容器类型,异常和服务定义。 基本类型(...

Jaylon Wang的专栏 6035

别再模拟IIC了!用STM32F103C8T6的硬件IIC驱动AT24C64,CubeMX配置+避坑指南

本文详细介绍了如何使用STM32F103C8T6的硬件IIC驱动AT24C64 EEPROM,通过CubeMX配置和HAL库函数解析,提供从模拟IIC到硬件IIC的完整解决方案。内容包括硬件IIC与模拟IIC的核心差异、CubeMX工程配置详解、HAL库驱动实战以及典型问题诊断与优化,帮助开发者构建更稳定高效的存储系统。

weixin_27038245的博客 188

ArcGIS Pro 3.4 二次开发 - 布局

本文介绍了在ArcGIS Pro SDK 3.4和.NET 8环境下操作布局工程项的相关方法。主要内容包括:引用布局工程项和关联布局,在新视图中打开或激活已有布局视图,引用活动布局视图,导入/移除布局工程项,创建基本布局或带参考线的自定义布局,修改布局页面尺寸,以及创建圆形图形元素等操作。重点演示了如何通过CIM(Core Infrastructure Model)进行高级布局配置,并详细说明了圆形图形元素的创建过程,包括几何构建、符号设置和图形生成。所有涉及UI线程的操作都遵循ArcGIS Pro SDK

Winemonk 795

【分布式系统学习】一次简单的thrift RPC调用

为了使生成的代码能够正常工作,你需要在你的 Java 项目中引入 Apache Thrift 库。假设我们要定义一个简单的用户服务,包含获取用户信息和添加用户的功能。首先,我们需要安装 Thrift 编译器。Thrift 通过协议栈来处理数据序列化和传输。下载适用于 Windows 的安装包,并按照说明进行安装。如果你使用 Gradle 构建项目,在。如果你使用 Maven 构建项目,在。

浅墨の技术空间 1018

【系统架构设计师】二十六、论文写作要点

论文写作概述:时间所需120分钟;题目可四选一,必有一题考察软件架构,总有一款适合你;考察形式是机试(开心,再也不用担心字丑了),约2500字。

帅次的博客 4596

[thrift] thrift基本原理及使用

Thrift架构 thrift主要用于各个服务之间的RPC通信,支持跨语言。thrift是一个典型的CS结构,客户端和服务端可以使用不同的语言开发,thrift通过IDL(Interface Description Language)来关联客户端和服务端。thrift的整体架构图如下图所示 如下图所示为thrift的网络栈结构 thirft使用socket进行数据传输,数据以特定的格...

zkp_java的专栏 7万+

YOLO11检测中的内存占用分析与优化:讲解如何分析并优化推理时的内存使用

YOLOv11模型内存分析与优化摘要:本文系统分析了YOLOv11目标检测模型的内存使用模式,重点探讨了显存(VRAM)、系统内存(RAM)和共享内存的特性差异。通过PyTorch内置工具和自定义分析器,详细剖析了骨干网络、颈部网络和检测头各组件内存占用规律,指出激活值内存与输入尺寸呈平方级增长关系。文章提供了卷积层内存计算公式,并强调合理规划"工作台"(显存)与"仓库"(内存)间的数据流动是优化关键。最后通过流程图直观展示了YOLOv11推理过程的三类内存使用模式,

本博客聚焦 YOLOv11 全流程落地,涵盖架构优化、数据集处理、训练技巧与多场景部署,兼及国产数据库、Java 开发与 AI 模型应用,内容兼顾理论与工程实践,为开发者提供系统干货,助力高效提升技术能力。 343

数据处理和分析之数据聚类:层次聚类(Hierarchical Clustering):单链接层次聚类方法

单链接层次聚类(Single-Linkage Hierarchical Clustering)是凝聚型层次聚类的一种,它基于数据点之间的最小距离来定义聚类间的相似性。在单链接层次聚类中,两个聚类之间的距离定义为这两个聚类中任意两个数据点之间的最短距离。这种聚类方法倾向于形成链状或线性的聚类,因为聚类的边界是由最远的数据点决定的,而不是聚类的平均或中心位置。单链接层次聚类通过计算簇间最近点的距离来决定簇的合并,这种方法简单直观,但可能导致簇的形状不规则,尤其是在数据点分布不均匀的情况下。

2401_87715305的博客 1441

Thrift入门学习

Thrift 一、简介 Apache Thrift 是由 Facebook 开发的一种远程服务调用(RPC Remote Procedure Call)的框架。下面应用官网的一句话对其进行介绍: 简而言之,Thrift是一种支持多语言的软件框架,在各个服务之间的RPC通信领域应用非常广泛。RPC(远程过程调用)是一个计算机通信协议,该协议允许运行于一台计算机的程序调用另一台计算机的子程序,而程序员无需额外地为这个交互作用编程。(参考远程过程调用)。 Thrift通过一个中间语言(IDL, 接口定义语言)来

Zsj的博客 1386

把 SAP Fiori Launchpad 配置文件放进 MIME Repository:从上传、缓存控制到可访问路径的完整实践

文章摘要: 在 SAP Fiori 项目中,Launchpad 配置文件的部署是关键挑战,核心在于通过 MIME Repository 而非直接修改标准文件来实现稳定配置。与 BSP Repository 相比,MIME Repository 支持显式设置客户端缓存时间(如 SAP 推荐的 7 天),适合生产环境治理。配置文件需为 JSON 格式,部署时需确保路径可访问(通过 ICF node 和 external alias),并注意语法错误会导致静默失效。实操步骤包括:在 SE80 中创建专用目录、设置

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 91

记录我的Thrift 入门学习

Thrift 入门学习记录参照着官网以及各位大神的文档总算了解了些thrift的入门知识,记录了我第一次学习thrift的历程,不是什么经验心得,只是分享记录下自己的学习过程

大肥猫的窝 984

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

thrift介绍与学习

1.trhfit基本介绍 Thrift是 一个跨平台,支持多语言的,通过定义IDL文件,自动生成RPC客户端与服务端通信代码的工具集合,也可以说是框架。 与之相类似的还有google的protocolbuffer. 2.thrift官网 Thrift是由facebook开

haier_jiang的专栏 3802

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

Thrift学习笔记—IDL基本类型

thrift 采用IDL(Interface Definition Language)来定义通用的服务接口,并通过生成不同的语言代理实现来达到跨语言、平台的功能。在thrift的IDL中可以定义以下一些类型:基本数据类型,结构体,容器,异常、服务 1基本类型 bool: 布尔值 (true or false), one bytebyte: 有符号字节i16: 16位有符号整型i32

专注于互联网架构技术,努力成为一名架构师 8603

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Apache Thrift学习(2):Thrift使用入门

安装Thrift 在官网下载编译器:https://thrift.apache.org/download 我本机是windows,下载后的文件解压出 thrift-0.13.0.exe,重命名为:thrift.exe,随便放在一个路径下即可。 配置系统变量Path: 测试安装是否成功: .thrift 文件编写 《Apache Thrift学习(1):Thrift详细介绍》中介绍了 .thrift 文件的构成,这里不在赘述,详细的文档请大家查阅官网。 //java的包名 name

保暖透气大裤衩LeoLee的博客 729

【thrift】 thrift入门

【thrift】 thrift入门 thrift 是Facebook开源的跨语言的RPC通信框架,支持的语言比较多,如java、c++、Python等 thrift提供的跨语言的编译工具,可以基于thrift idl语言编译出所支持语言的源代码文件 利用thrift,可以方便的开发出服务间的RPC通信框架,促进服务间的解耦 第一部分:thrift 入门 1.idl 文件,下面的说明均基于j

Runtime.class 1156

Apache Thrift基本使用介绍

基本介绍 Thrift 是用于点对点 RPC 实现的轻量级、独立于语言的软件堆栈。 Thrift 为数据传输、数据序列化和应用程序级处理提供了清晰的抽象和实现。 代码生成系统将简单的定义语言作为输入,并生成跨编程语言的代码,这些编程语言使用抽象堆栈来构建可互操作的 RPC 客户端和服务器。 Thrift 使以不同编程语言编写的程序可以轻松共享数据和调用远程过程。 Thrift 支持 28 种编程语言,很有可能支持您当前使用的语言。 Thrift 专门设计用于支持跨客户端和服务器代码的非原子版本更改。 这使

从大数据到人工智能的博客 1298

Thrift简介与IDL基本语法

thrift是Facebook公布的一款开源跨语言的RPC(远程过程调用)框架。 thrift的协议栈结构 自底向上有Transport、Protocol、Processor、Service四个层级。 一个例子来看服务端如何定义前三个层级: // 服务端 // 定义Transport TServerTransport serverTransport = new TServerSocket(1111); // 定义Protocol TBinaryProtocol.Factory factory = new

zhongzhh8的博客 4040
上一篇: 前端最火Vue从新手村到老师傅(二)
下一篇: Git分布式版本控制工具和如何用IDEA提交代码至Git总结
瓦坎达forever
博客等级 码龄7年 143粉丝 57原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值