Thrfit 中的核心概念

2024-09-05 09:48
文章标签 概念 核心 thrfit

本文主要是介绍Thrfit 中的核心概念,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

Thrfit 中的核心概念

服务端

  +-------------------------------------------+| Server                                    || (single-threaded, event-driven etc)       |+-------------------------------------------+| Processor                                 || (compiler generated)                      |+-------------------------------------------+| Protocol                                  || (JSON, compact etc)                       |+-------------------------------------------+| Transport                                 || (raw TCP, HTTP etc)                       |+-------------------------------------------+

Thrift Server 设计大致可以分为四层,分别是:

  • Server:负责连接调度、服务的生命周期,定义接口是TServer
    - TSimpleServer:简单的阻塞服务端
    - TThreadPoolServer:使用线程池的处理请求的阻塞服务端
    - THsHaServer:使用线程池处理请求的基于 NIO 的非阻塞服务端
    - TThreadedSelectorServer:使用多种线程池的基于 NIO 的非阻塞服务端

  • Processor:处理请求,具体的实现由生成的代码处理,定义接口是 TProcessor

    • TBaseProcessor:同步处理的 Processor
    • TBaseAsyncProcessor:异步处理的 Processor
    • TMultiplexedProcessor:支持多个服务的同步 Processor
  • Protocol:请求协议,数据的编解码实现,定义接口是 TProtocol

    • TBinaryProtocol:二进制协议
    • TCompactProtocol:压缩协议
    • TJSONProtocol:JSON 格式协议
    • TMultiplexedProtocol:支持多个 Processor 的封装协议,依赖于其他协议
  • Transport:底层的连接,提供了读写的抽象实现;服务端定义是 TServerTransport

    • TServerSocket: 基于 ServerSocket 的服务端 Transport
    • TNonblockingServerSocket:基于 ServerSocketChannel 的服务端 Transport
    • TSaslTransport:支持 SSL 加密的 Transport

客户端

  +-------------------------------------------+| Client                                    || (sync or async generated)                 |+-------------------------------------------+| Protocol                                  || (JSON, compact etc)                       |+-------------------------------------------+| Transport                                 || (raw TCP, HTTP etc)                       |+-------------------------------------------+

Thrift Client 设计分为三层,分别是:

  • Client:客户端,用于发起请求,接收响应
    - TServiceClient:同步调用的客户端
    - TAsyncClient:异步调用的客户端

  • Protocol:请求协议,数据的编解码实现,定义接口是 TProtocol

    • TBinaryProtocol:二进制协议
    • TCompactProtocol:压缩协议
    • TJSONProtocol:JSON 格式协议
    • TMultiplexedProtocol:支持多个 Processor 的封装协议,依赖于其他协议
  • Transport:底层的连接,提供了读写的抽象实现;客户端的定义是 TTransport

    • TFileTransport: 读写文件的 Tranport
    • THttpClient:基于 HttpClient 的 Transport
    • TNonblockingSocket:基于 SocketChannel的 Transport
    • TSocket: 基于 Socket 的 Tranport
    • TSaslClientTransport: 支持 SASL 鉴权认证的 Tranport
    • TZlibTransport:支持压缩的 Transport
    • TSaslTransport:支持 SSL 加密的 Transport

参考文档

  • Concepts

这篇关于Thrfit 中的核心概念的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/1138621

相关文章

详解MySQL中DISTINCT去重的核心注意事项

《详解MySQL中DISTINCT去重的核心注意事项》为了实现查询不重复的数据,MySQL提供了DISTINCT关键字,它的主要作用就是对数据表中一个或多个字段重复的数据进行过滤,只返回其中的一条数据... 目录DISTINCT 六大注意事项1. 作用范围:所有 SELECT 字段2. NULL 值的特殊处

Python包管理工具核心指令uvx举例详细解析

《Python包管理工具核心指令uvx举例详细解析》:本文主要介绍Python包管理工具核心指令uvx的相关资料,uvx是uv工具链中用于临时运行Python命令行工具的高效执行器,依托Rust实... 目录一、uvx 的定位与核心功能二、uvx 的典型应用场景三、uvx 与传统工具对比四、uvx 的技术实

java中Optional的核心用法和最佳实践

《java中Optional的核心用法和最佳实践》Java8中Optional用于处理可能为null的值,减少空指针异常,:本文主要介绍java中Optional核心用法和最佳实践的相关资料,文中... 目录前言1. 创建 Optional 对象1.1 常规创建方式2. 访问 Optional 中的值2.1

MySQL 事务的概念及ACID属性和使用详解

《MySQL事务的概念及ACID属性和使用详解》MySQL通过多线程实现存储工作,因此在并发访问场景中,事务确保了数据操作的一致性和可靠性,下面通过本文给大家介绍MySQL事务的概念及ACID属性和... 目录一、什么是事务二、事务的属性及使用2.1 事务的 ACID 属性2.2 为什么存在事务2.3 事务

Java Jackson核心注解使用详解

《JavaJackson核心注解使用详解》:本文主要介绍JavaJackson核心注解的使用,​​Jackson核心注解​​用于控制Java对象与JSON之间的序列化、反序列化行为,简化字段映射... 目录前言一、@jsonProperty-指定JSON字段名二、@JsonIgnore-忽略字段三、@Jso

Python列表去重的4种核心方法与实战指南详解

《Python列表去重的4种核心方法与实战指南详解》在Python开发中,处理列表数据时经常需要去除重复元素,本文将详细介绍4种最实用的列表去重方法,有需要的小伙伴可以根据自己的需要进行选择... 目录方法1:集合(set)去重法(最快速)方法2:顺序遍历法(保持顺序)方法3:副本删除法(原地修改)方法4:

SpringQuartz定时任务核心组件JobDetail与Trigger配置

《SpringQuartz定时任务核心组件JobDetail与Trigger配置》Spring框架与Quartz调度器的集成提供了强大而灵活的定时任务解决方案,本文主要介绍了SpringQuartz定... 目录引言一、Spring Quartz基础架构1.1 核心组件概述1.2 Spring集成优势二、J

Python 迭代器和生成器概念及场景分析

《Python迭代器和生成器概念及场景分析》yield是Python中实现惰性计算和协程的核心工具,结合send()、throw()、close()等方法,能够构建高效、灵活的数据流和控制流模型,这... 目录迭代器的介绍自定义迭代器省略的迭代器生产器的介绍yield的普通用法yield的高级用法yidle

Linux find 命令完全指南及核心用法

《Linuxfind命令完全指南及核心用法》find是Linux系统最强大的文件搜索工具,支持嵌套遍历、条件筛选、执行动作,下面给大家介绍Linuxfind命令完全指南,感兴趣的朋友一起看看吧... 目录一、基础搜索模式1. 按文件名搜索(精确/模糊匹配)2. 排除指定目录/文件二、根据文件类型筛选三、时间

Andrej Karpathy最新采访:认知核心模型10亿参数就够了,AI会打破教育不公的僵局

夕小瑶科技说 原创  作者 | 海野 AI圈子的红人,AI大神Andrej Karpathy,曾是OpenAI联合创始人之一,特斯拉AI总监。上一次的动态是官宣创办一家名为 Eureka Labs 的人工智能+教育公司 ,宣布将长期致力于AI原生教育。 近日,Andrej Karpathy接受了No Priors(投资博客)的采访,与硅谷知名投资人 Sara Guo 和 Elad G