rpc原理与实践----thrift分层模型

奋斗中的屌丝 奋斗中的屌丝     2022-08-13     521

关键词:

   这一节我们从一下几个方面来讲一下Thrift的分层架构,按照官方的定义这是Thrift的网络栈,其中网络栈中分为一下几个部分,(由栈顶到栈底)server,processor,protocol,transport。下面我们按照这种结构来了解一下thrift。

  1. Transport层: 由于涉及到网络之间的数据传输,所以Thrift支持多种网络传输协议,比如TCP,HTTP等。Thrift Transport都是基于TCP/IP的,而底层都是通过socket来实现的。Transport层的作用是封装了网络中读写的过程,使之与系统底层实现解耦。Transport层提供的主要操作有:
      • open
      • close
      • read
      • write
      • flush

除了Transport提供的以上接口外,Thrift还提供serverTransport接口来接受或者新建原始的Transport类,serverTransport主要用于在服务器端创建Transport对象来接受服务。主要的接口有:

      • open
      • listen
      • accept
      • close

    至于上述方法更加具体的作用我们会在后面的源码分析中进行讲解。

  2.protocol层: 协议的主要作用是用于制定数据类型进行编码和解码,这是传输的第一步,然后我们就按照一定的规则将经过编码的数据封装到报文中进行传输,而上层只需要按照固定的解析格式来解析数据就行了。下面列举thrift支持的解析格式:

      • json
      • xml
      • 纯文本
      • 二进制

  3.processor: 上面的两个步骤已经实现了数据的编码,数据的传输,而数据传递到protocol层就是由processor来完成的,这一层的主要任务就是封装从输入流读取数据,输出到输出流的操作。    

  4. server: 在thrift中server就是真正执行过程的一方,就个人理解而言,服务器端真正进行业务流程通常最需要注意的问题就是线程,下面我们就按照线程将server进行分类:

      • TSimpleServer: 一种简单的server模式,是单线程的,也就是说一个rpc请求就占用了整个业务流程,无法再接受其他请求。
      • TThreadServer: 是一种多线程模型,每个请求对应一个线程,并且这个线程必须等到连接关闭才会被释放。存在很严重的弊端,当线程过多时会出现严重的内存占用。
      • TThreadPoolServer: 也是一种多线程模型,但是与上面的情况不同的是这个server模式是通过线程池来完成的,同样,也必须等到连接关闭才释放线程。
      • TNonblockingServer:  异步服务模型(非阻塞),必须依赖libevent来实现,具体我们后面针对源码进行分析。

  这样Thrift的基本知识我们就了解的差不多的,至于怎么实践我们会在后面章节学习,从下一节开始我们开始从源码的角度来学习Thrift。       

    

thrift---支持双向通信

【问题】 Thrift采用了C/S模型,不支持双向通信:client只能远程调用server端的RPC接口,但client端则没有RPC供server端调用,这意味着,client端能够主动与server端通信,但server端不能主动与client端通信而只能被动地对client端的请求... 查看详情

apachethrift-使用,内部实现及构建一个可扩展的rpc框架

...一个简单的RPC应用,并简单的探究了一下Thrift的内部实现原理,最后给出一个基于Thrift的可扩展的分布式RPC调用框架,在中小型项目中是一个常见的SOA实践。Thrift介绍ApacheThrift是Facebook开发的远程服务调用框架,它采用接口描述... 查看详情

rpc远程协议之thrift入门

RPC远程协议之Thrift入门 在上一篇文章《RPC远程协议之原理分析》中,我介绍了RPC的工作原理及欲实现RPC框架功能应该做哪些事情,因为要做的事情太多,完全由开发人员研发实现,不是很现实,所以市面上出... 查看详情

分层自动化测试模型变与不变

...章进行阐述的,他说“测试金字塔是分层测试的一种最佳实践“。金字塔自动化测试模型如上图A所示,从下往上分为单元测试、接口测试、界面测试(其实我更习惯于叫UI自动化)。那么他为什么 查看详情

分层自动化测试模型变与不变

...章进行阐述的,他说“测试金字塔是分层测试的一种最佳实践“。金字塔自动化测试模型如上图A所示,从下往上分为单元测试、接口测试、界面测试(其实我更习惯于叫UI自动化)。那么他为什么 查看详情

rpc模型

...thon)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现3.5高分影像批处理第三回——RPC文件与几何校正4.参考1.简介有理多项式系数(rationalpolynom 查看详情

rpc简介与thrift框架

RPC,全称是remoteprocesscall,远程过程调用,简单来讲就是调用部署在另一台服务器上的服务或者被部署在另一台服务器上的服务调用。由于各服务部署在不同机器,服务间的调用免不了网络通信过程,服务消费方每调用一个服务... 查看详情

消息总线扩展之集成thrift-rpc(代码片段)

本文主要探讨了消息总线支持ThriftRPC的实现过程。鉴于RabbitMQ官方的JavaClient提供了基于RabbitMQ的JSON-RPC,消息总线也顺道提供了JSON-RPC的API。然后也尝试了为消息总线增加对Thrift-RPC的扩展支持,希望此举能让消息总线同时... 查看详情

rpc-thrift

Client  Thrift客户端有两种:同步客户端和异步客户端。  同步客户端    同步客户端比较简单,以RPC-Thrift(一)中的的例子为基础进行研究源码,先看一下类图。        TServiceClient:用于以同步方式与TService... 查看详情

flink内核原理学习组件通信rpc(代码片段)

Flink内核原理学习之RPC文章目录Flink内核原理学习之RPC一、Akka与Actor模型二、RPC消息类型三、Flink通信组件3.1RpcGateway3.2RpcEndpoint3.3RpcService与RpcServer3.4AkkaRpcActor四、PRC交互过程Java、大数据开发学习要点(持续更新中…)一、... 查看详情

vip_osp--基于thrift的rpc框架的基本原理

...负担,使其只需要关注业务部分。下面是对该框架的基本原理的简单介绍。参考文献:1.ApacheThrift-可伸缩的跨语言服务开发框架2.公司内部的Venux文档(内网文档,无法分享)一、Thrift简介Thrift采用接口描述语言定义并创建服务,支... 查看详情

openpplppq量化:原理与实践(代码片段)

目录量化原理为什么需要量化?量化粒度框架综述算子划分量化中的图融合操作量化实践:以pytorch mobilenetv2模型为例源码阅读 torch模型和onnx量化过程中的区别后记量化原理为什么需要量化?1、减少内存带宽和存储... 查看详情

thrift在windows7下的安装与实践

本文借鉴自http://www.jianshu.com/p/0f4113d6ec4b(下面称简书教程)首先上官网下载代码https://thrift.apache.org/download下载源码thrift-0.9.3.tar.gz 解压之后放在路径C: hrift-0.9.3 hrift-0.9.3并下载windows执行版thrift-0.9.3.exe放在路径C: hrif 查看详情

ddd实践_如何使用ddd设计代码模型

...千个哈姆雷特,下面代码模型是欧创新老师的思考和实践而来。我们可以作为学习的参考。一、DDD分层架构与微服务代码模型我们参考DDD分层架构模型来设计微服务代码模型。没错!微服务代码模型就是依据DDD分层架构... 查看详情

rpc原理及实现

一、什么是RPCRPC的全称是RemoteProcedureCall是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即无论是调用本地接口/服务的还... 查看详情

trueimpostor技术原理总结与实践(代码片段)

TrueImpostor技术基本介绍Impostor,原意“伪装者”,是一种使用极简单的mesh来模拟真实mesh模型的一种优化技术,可以高效的在场景中绘制大量同类的模型而不需要绘制大量的多边形。Impostor技术是介于Billboard和mesh之间... 查看详情

thrift设计与实现

文章简介从Thrift的C++源代码中看,thrift的设计思想,讨论跨语言优质RPC解决方案。 Thrift的诞生背景Thrift的诞生时间大概断定为2007年左右,随着Facebook网站流量的增加和站点功能的日益丰富,已经远远超出了原有LAMP架构的处... 查看详情

基于thrift的跨语言高可用高性能轻量级的rpc框架

...过服务管理系统可以方便查看服务状态和统计信息与原生thrift通信支持与原生thrift服务进行通信与业内方案的对比与thrift、avro、hessian相比,harpc支持了高可用 查看详情