Thrift & RPC介绍

在学习thrift之前,先来看一下什么是rpc

rpc远程过程调用,通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

Thrift 最初是由 Facebook 开发用做系统内各语言之间的 RPC 通信的一个可扩展且跨语言的软件框架,它结合了功能强大的软件堆栈和代码生成引擎,允许定义一个简单的定义文件中的数据类型和服务接口,以作为输入文件,编译器生成代码用来方便地生成RPC客户端和服务器通信的无缝跨编程语言。

Thrift 是 IDL 描述性语言的一个具体实现,适用于程序对程序静态的数据交换,需要先确定好数据结构。

Thrift 是完全静态化的,当数据结构发生变化时,必须重新编辑IDL文件、代码生成再编译载入的流程,跟其他IDL工具相比较可以视为是 Thrift 的弱项。Thrift 适用于搭建大型数据交换及存储的通用工具,在大型系统中的内部数据传输上相对于 JSON 和 XML 无论在性能、传输大小上有明显的优势。

转载于:https://www.cnblogs.com/robinunix/p/8487381.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
PyQt5 是一个 Python 的 GUI 库,Thrift 是一个跨语言的服务框架。在 PyQt5 中实现 Thrift RPC 连接主要需要以下步骤: 1. 安装 thrift 库 在终端中执行以下命令安装 thrift 库: ``` pip install thrift ``` 2. 编写 thrift 文件 定义 Thrift 服务的接口和数据类型,将其保存为 .thrift 文件。 例如,定义一个简单的服务接口: ``` service Calculator { i32 add(1:i32 num1, 2:i32 num2), i32 sub(1:i32 num1, 2:i32 num2), } ``` 3. 生成 Python 代码 使用 thrift 工具生成 Python 代码。在终端中执行以下命令: ``` thrift -r --gen py calculator.thrift ``` 4. 编写 PyQt5 界面 使用 PyQt5 设计界面,添加按钮等控件。 5. 编写 Thrift 客户端 在 PyQt5 代码中编写 Thrift 客户端,调用 Thrift 服务。 例如,实现 Thrift 客户端代码: ```python from thrift.transport import TSocket from thrift.transport import TTransport from thrift.protocol import TBinaryProtocol from thrift.protocol import TMultiplexedProtocol from calculator import Calculator class ThriftClient(object): def __init__(self, host, port): self.transport = TSocket.TSocket(host, port) self.transport = TTransport.TBufferedTransport(self.transport) protocol = TBinaryProtocol.TBinaryProtocol(self.transport) self.client = Calculator.Client(TMultiplexedProtocol(protocol, "Calculator")) def open(self): self.transport.open() def close(self): self.transport.close() def add(self, num1, num2): return self.client.add(num1, num2) def sub(self, num1, num2): return self.client.sub(num1, num2) ``` 6. 连接 Thrift 服务 在 PyQt5 代码中连接 Thrift 服务,调用 Thrift 客户端。 例如,连接 Thrift 服务: ```python client = ThriftClient("localhost", 9090) client.open() result = client.add(1, 2) client.close() ``` 这样就可以在 PyQt5 界面中实现 Thrift RPC 连接了。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值