Python之RPC开发讲解第11篇:客户端,Thrift
【摘要】 客户端 安装 1 安装依赖工具和库 2 安装Thrift编译器和程序库 Thrift的接口定义语言IDL 1 基本类型 2 容器类型 协议与传输选择 1 协议 服务器 Thrift 简介 架构 使用方法 gRPC HTTP/2 1 HTTP/1.x gRPC接口类型 1 Unary RPC 2 Server Streaming RPC Protocol Buffers 1 文档
🚀🚀🚀本篇主要内容
客户端
[structlog 文档]
[colorama 文档]
import sys
sys.path.append('gen-py')
from calculate import Calculate
from base.ttypes import InvalidOperation, Operation, Work
from thrift.transport import TSocket
from thrift.transport import TTransport
from thrift.protocol import TCompactProtocol
def main():
transport = TSocket.TSocket('127.0.0.1', 8888)
# 使用缓存传输
transport = TTransport.TBufferedTransport(
# Thrift
* Thrift简介
* Thrift的使用方法和组成结构
* 安装
* Thrift的接口定义语言
* 协议与传输的选择
* 服务端编写
* 客户端编写
# 简介
* gRPC是由Google公司开源的高性能RPC框架。
* gRPC支持多语言
gRPC原生使用C、Java、Go进行了三种实现,而C语言实现的版本进行封装后又支持C++、C#、Node、ObjC、 Python、Ruby、PHP等开发语言
* gRPC支持多平台
支持的平台包括:Linux、Android、iOS、MacOS、Windows
* gRPC的消息协议使用Google自家开源的Protocol Buffers协议机制(proto3)
* gRPC的传输使用HTTP/2标准,支持双向流和连接多路复用

## 架构
C语言实现的gRPC支持多语言,其架构如下
*图片无法加载*
## 使用方法
# gRPC
* 简介
* HTTP/2协议
* gRPC的接口类型
* Protocol Buffers
* 服务器与客户端案例编写
# HTTP/2
gRPC的传输是基于HTTP/2标准协议实现的, 前面提到gRPC支持双向流和多路复用,实际就是HTTP/2的特性。而且gRPC有四种接口类型,也是依赖HTTP/2协议建立起来的,所以 有必要先来了解一下HTTP/2协议。
HTTP/2 是HTTP协议的最新版本, 通过HTTP/1.x与HTTP/2的对比来认识HTTP/2的特性。
## 1 HTTP/1.x
HTTP/1.x 可以说是一个文本协议,可读性很好,但是效率不高。

#### 解析
如果要解析一个完整的 HTTP 请求,首先 需要能正确的读出 HTTP header。HTTP header 各个 fields 使用 \r\n 分隔,然后跟 body 之间使用 \r\n\r\n 分隔。解析完 header 之后, 才能从 header 里面的 content-length 拿到 body 的 size,从而读取 body。
这套流程其实并不高效,因为 需要读取多次,才能将一个完整的 HTTP 请求给解析出来,虽然在代码实现上面,有很多优化方式,譬如:
* 一次将一大块数据读取到 buffer 里面避免多次 IO read
* 读取的时候直接
【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱:
cloudbbs@huaweicloud.com
- 点赞
- 收藏
- 关注作者
评论(0)