资讯专栏INFORMATION COLUMN

Thrift架构

wall2flower / 1162人阅读

摘要:服务器端使用它来做顶层接口,编写实现类。会自动生成同步调用和异步调用的两个接口。方法参数的封装类,以方法名命名方法返回值的封装类,以方法名命名参考个人博客

基本概念

轻量级、跨语言的RPC框架

功能特点

基于IDL(接口描述语言)生成跨语言的RPC clients and servers,支持超过20种语言

支持二进制的高性能的编解码框架

支持NIO的底层通信

相对简单的服务调用模型

Thrift架构

在介绍Thrift架构前,先了解下一般RPC框架的组成结构

RPC组成结构


包括服务器端发布和调用处理组件,网络IO组件,协议编解码组件,客户端调用组件,客户端代理组件等等

Thrift架构



各部分解释可看图中英文,释义补充:
1、用户自定义类型序列化方式将在通过IDL生成的代码中实现,实际也是根据struct中的各个field调用TProtocol的基础类型序列化实现
2、RPC stub中已经提供了Service Client,其作用是构造Thrift调用参数,发起调用,解析结果;而白色部分需用户自己写的Client是实例化TProtocol、TTransport组件,设置业务参数,通过调用Service Client发起请求

Thrift组件

TProtocol 协议和编解码组件
TTransport IO传输组件
TProcessor 服务调用处理组件
TServer,服务器网络IO
IDL 服务描述组件,负责生产跨平台客户端

IDL 服务描述语言 IDL语法

namespace 定义包名
struct 定义服务接口的参数,返回值使用到的类结构。如果接口的参数都是基本类型,则不需要定义struct
service 定义接口

支持的数据类型
bool 布尔型
byte 8位整数
i16  16位整数
i32  32位整数
i64  64位整数
double 双精度浮点数
string 字符串
binary 字节数组
list List集合,必须指明泛型
map Map类型,必须指明泛型
set Set集合,必须指明泛型

生成的类包括5部分

接口类型,默认名称都是Iface。这个接口类型被服务器和客户端共同使用。服务器端使用它来做顶层接口,编写实现类。客户端代码使用它作为生成代理的服务接口。会自动生成同步调用和异步调用的两个接口。
客户端类型,一个同步调用的客户端Client,一个异步调用的客户端AsyncClient
Processor,用来支持方法调用,每个服务的实现类都要使用Processor来注册,这样最后服务器端调用接口实现时能定位到具体的实现类。
方法参数的封装类,以"方法名_args"命名
方法返回值的封装类,以"方法名_result"命名

参考

http://blog.csdn.net/iter_zc/...

个人博客:https://my.oschina.net/hebaod...

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/71166.html

相关文章

  • Thrift

    摘要:远程调用服务调用远端的服务的就像直接在本地调用本质上来说是一种服务的是一种服务但它只限于与语言之间的调用提供了跨语言的服务调用服务的组成部件服务本质上是一种架构服务所以在编写一个组件时需要编写端端还要编写传输的协议框架主要是实现这三种部件的 thrift rpc(远程调用)服务:调用远端的服务的就像直接在本地调用.本质上来说是一种c/s服务. Java的RMI是一种rpc服务,但它只限...

    JerryC 评论0 收藏0
  • 架构小试之IDL

    摘要:不合理的选型在后续维护上会带来不小的麻烦。因此一般公司会将所有服务的文件统一维护。生成的数据结构一般均支持序列化和反序列化,并且跨端跨语言。只支持,和数值三种结构,和支持相互嵌套,标准的的数值仅有这三种。只有大约的大小。本文转载自我自己的博客,感兴趣的老爷们可以关注~:https://www.miaoerduo.com/2021/11/16/arch-idl/为什么IDL的介绍也放在这里呢?...

    番茄西红柿 评论0 收藏2637
  • php+nodeJs+thrift协议,实现zookeeper节点数据自动发现

    摘要:可以在主进程中抛出一个子进程,子进程中实现的自动发现,子进程侦察到节点数据变化时,主动通知主进程。架构的整体思路是子进程实现的自动发现,主进程维护一个节点数据的共享变量,其他服务要想使用节点数据时,从主进程中获取。 php是当下最流行的web服务器端语言,zookeeper是大型分布式协同工具,本文在这里介绍一种架构实现php服务器对于zookeeper数据变化的自动监听 一.问题背景...

    MingjunYang 评论0 收藏0
  • 微服务实战:从架构到发布(一)

    摘要:微服务集成服务间通信微服务架构下,应用的服务直接相互独立。微服务架构倾向于降低中心消息总线类似于的依赖,将业务逻辑分布在每个具体的服务终端。 引言:微服务是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义、准则,以及如何从微服务中获益的文章,在企业的实践中去应用微服务的资源却很少。本篇文章中,会介绍微服务架构(Microservices Architecture)的基础概念,...

    libin19890520 评论0 收藏0
  • 微服务实战:从架构到发布(一)

    摘要:微服务集成服务间通信微服务架构下,应用的服务直接相互独立。微服务架构倾向于降低中心消息总线类似于的依赖,将业务逻辑分布在每个具体的服务终端。 引言:微服务是当前软件架构领域非常热门的词汇,能找到很多关于微服务的定义、准则,以及如何从微服务中获益的文章,在企业的实践中去应用微服务的资源却很少。本篇文章中,会介绍微服务架构(Microservices Architecture)的基础概念,...

    HtmlCssJs 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<