thriftpy2使用与流程

首先,最近公司对原来的项目重构,用thriftpy框架(饿了么对thrift的python实现),原来的thriftpy废弃了,现在基本都用的是thriftpy2。刚刚接触到RPC方面的东西,网上关于thriftpy2的资料也比较少,就想写自己的第一篇博客吧。

python搞微服务,是最近的趋势,但相关的资料很少。我会大概梳理下大概的流程,具体的百度下就ok了。

先讲RPC,这是远程功能调用,就是我们原来是一个整体的项目,现在需要拆分为一个个服务。RPC框架就是编程人员在同一台机器的不同进程之间,或者同的机器之间,进行远程调用代码的工具。这样我们就不用去管底层的具体实现,只需要搞好我们原来的业务逻辑处理。

然后就是我们的thrift框架,主要用于各个服务之间的RPC通信。支持跨语言,比如客户端用python写,服务端可以用java来写,这都取决于开发者。

thrift的实现步骤

通过IDL(接口定义语言) ==> 来定义 RPC(远程过程调用)的接口和数据类型 ==> thrift编译器生成不同语言的代码 ==> 负责RPC协议层和传输层的实现

thrift框架通过定义IDL文件,来来关联客户端和服务端

IDL文件中定义的内容,定义我们要运行的服务,需要的变量等

指定目标语言
namespace language xxx(文件夹目录)定义变量
const 定义结构体
struct xxx{}定义服务
service xxx{}

在thrift框架中,我们需要执行 thrift --gen <language> <Thrift filename>,帮我们生成相应的thrift 服务需要的依赖文件

构建服务端代码,客户端代码,具体的我就不说了,官方也有给出例子。

thrift框架的github地址

https://github.com/apache/thrift

 

thriftpy2框架是以pythonic方式实现的,不需要通过thrift文件,生成SDK,只需要动态导入thrift文件即可

https://github.com/Thriftpy/thriftpy2

安装也很简单,不过微服务基本都是用docker容器来运行服务,通过Dockerfile安装在容器内即可

pip install thriftpy2

thriftpy2的基本流程

我们需要定义thrift文件,来描述服务接口

定义客户端代码

定义服务端代码

先开启服务,就可以执行客户端
如果需要同时提供多个服务,就需要建立多个.thrift文件来实现

 

thriftpy2中服务端和客户端都需要调用thriftpy2.load方法,对thrift文件进行解析,会在内存中构建相应的module

1.thriftpy2构建服务端

调用thriftpy.load方法对thrift文件进行解析,在内存中构建对应的module
调用make_server将构建的module和完成具体业务功能的class绑定,同时完成传输层和协议层的设置,生成thrift服务器端
调用server.serve方法启动服务器

2.thriftpy2构建客户端接口

调用thriftpy.load方法对thrift文件进行解析,在内存中构建对应的module
调用make_client绑定上一步构建的module,同时完成传输层和协议层的设置,生成Thirft客户端
根据生成的客户端调用响应的接口

 

由于微服务基本都会用docker来运行,用docker来搭建python微服务,大家可以参考下https://blog.csdn.net/qq_35394891/article/details/84144936

简单说下吧,通过Dockerfile,来帮我们快速生成容器,使用的python版本,运行的命令以及我们需要安装的包等,生成对应的容器

这样我们就构建好容器了

通过gunicorn来帮助我们,运行服务

 

文笔方面,还有布局应该都比较差,将就看吧,有什么错误,还望指出,谢谢。

参考文档

https://blog.csdn.net/yzj225/article/details/76855991

https://blog.csdn.net/qq_35394891/article/details/84144936

https://blog.csdn.net/zkp_java/article/details/81879577

转载于:https://www.cnblogs.com/hongtrands/p/11148840.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/482911.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从城市大脑到世界数字大脑 构建人类协同发展的超级智能平台

作者&#xff1a;远望智库数字大脑研究院院长&#xff0c;中国科学院虚拟经济与数据科学研究中心研究组成员&#xff0c;南京财经大学教授 刘锋&#xff08;本文2021年12月发表于中国建设信息化&#xff09;一&#xff0e;世界数字大脑产生的背景世界数字大脑与城市大脑的产生…

计算机网络学习笔记-1.2.3第一章总结

计算机网络-2019 王道考研 计算机网络-1.3第一章总结 文章目录3第一章总结3第一章总结

Science长文综述:通过空间斑图形成避免复杂系统崩溃

来源&#xff1a; 集智俱乐部作者&#xff1a;Max Rietkerk et al.译者&#xff1a;吕丽莎、胡一冰、李明章、郭瑞东、张澳审校&#xff1a;张澳、梁金编辑&#xff1a;邓一雪导语今天的地球处于人类世&#xff0c;人类活动对整个地球生态系统具有深刻影响。由于干旱和过度放牧…

K8s遇到问题解决思路

问题排查一 从describe去查找相应的deploy/pod/rs/svc [rootk8s-master ~]# kubectl describe po/nginx-f95d765f9-8b6bp [rootk8s-master ~]# kubectl describe deploy/nginx [rootk8s-master ~]# kubectl describe svc 问题排查二 从pod的logs日志排查 [rootk8s-master ~]# k…

计算机网络学习笔记-目录(更新日期:2020.4.8)

导语&#xff1a;文章合为时而著,歌诗合为事而作&#xff0c;我们学习&#xff0c;也自然需要知道我们为什么学这玩意儿~ 对于计算机网络这门课呢&#xff0c;大家如果是计算机专业的学生&#xff0c;那就是必上的一门科目啦&#xff0c;但是为什么要上呢&#xff1f;对于不同的…

达摩院发布:2022年十大科技趋势

来源&#xff1a;达摩院刚刚&#xff0c;阿里巴巴达摩院发布2022十大科技趋势&#xff0c;这是达摩院连续第四年发布前沿科技趋势预测。达摩院分析了近三年来的770万篇公开论文、8.5万份专利&#xff0c;覆盖159个领域&#xff0c;深度访谈近100位科学家&#xff0c;提出了2022…

基于python的性能测试工具–locust

基于python的性能测试工具–locust https://www.cnblogs.com/chunyanxu/p/8732720.html 性能测试工具Locust https://www.cnblogs.com/fnng/p/6081798.html 全栈测试笔记 https://www.cnblogs.com/uncleyong/p/10836607.html 转载于:https://www.cnblogs.com/highpointenginee…

Nature癌症“牵线木偶”理论:科学家找到了不易误伤健康细胞的“剪刀”

来源&#xff1a;生物通密歇根大学健康罗格尔癌症中心的研究人员证明&#xff0c;SWI/SNF复合物有助于获取癌基因可以结合的增强子&#xff0c;并驱动癌症中的下游基因表达。降解这个复合体的亚基会阻断癌基因。这一发现揭示了一种治疗由不同基因驱动的前列腺癌的新方法&#x…

JavaSE进阶学习笔记-目录汇总(待完成)

声明&#xff1a;此博客来自于黑马程序员学习笔记&#xff0c;并非商用&#xff0c;仅仅是为了博主个人日后学习复习用&#xff0c;如有冒犯&#xff0c;请联系qq208820388立即删除博文&#xff0c;最后&#xff0c;来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 JavaSE进阶学习笔记-…

Java基础:数组的声明,循环,赋值,拷贝。

数组的声明 一般有两种形式的声明&#xff1a; int[] a; int a[]; 这两种声明都没错&#xff0c;但是大多数都使用第一种声明&#xff0c;因为变量名是独立的&#xff0c;不带任何符号。 声明一个数组&#xff0c;并没有将a正在的初始化为一个数组。 下面&#xff0c;语句就是声…

IEEE 发布年终总结,AI 奇迹不再是故事

来源&#xff1a;AI科技大本营&#xff08;ID:rgznai100&#xff09;编译&#xff1a;禾木木2021 年&#xff0c;人工智能奇迹不再只是故事&#xff01;人工智能正在迅速融入各行各业&#xff0c;IEEE Spectrum 总结了 2021 年 10 篇最受读者欢迎的 AI 文章&#xff0c;按时间排…

JavaWeb学习笔记-目录(待完成)

JavaWeb学习笔记-目录&#xff08;待完成&#xff09; 01-基础加强&#xff08;注解反射&#xff09; 02-mysql基础 03-mysql约束 04-mysql多表事务 05-jdbc 06-jdbc连接池JDBCTemplate 07-html 08-css 09-js基础 10-js高级 11-bootstrap 12-xml 13-toncat-servel…

我们正处于新科学革命的起点 | 学界热议AI for Science

来源&#xff1a;科学网编辑&#xff1a;宗华排版&#xff1a;李言作者&#xff1a;赵广立我们正处于新科学革命的起点▲ 北京大学、普林斯顿大学教授 鄂维南数百年来&#xff0c;以数据驱动的开普勒范式和以第一性原理驱动的牛顿范式是科学研究的两大基本范式。当下正在蓬勃兴…

01-object类,常用API

声明&#xff1a;此博客来自于黑马程序员学习笔记&#xff0c;并非商用&#xff0c;仅仅是为了博主个人日后学习复习用&#xff0c;如有冒犯&#xff0c;请联系qq208820388立即删除博文&#xff0c;最后&#xff0c;来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 01【Object类、常用A…

新型人工突触可用于高度扩展的类脑计算

来源&#xff1a;科技日报作者&#xff1a;张梦然科技日报北京12月28日电 &#xff08;记者张梦然&#xff09;据最新一期美国化学会期刊《应用材料与界面》报道&#xff0c;新加坡科技与设计大学&#xff08;SUTD&#xff09;研究团队开发出一种基于二维&#xff08;2D&#x…

03-list,set,数据结构,Collections

声明&#xff1a;此博客来自于黑马程序员学习笔记&#xff0c;并非商用&#xff0c;仅仅是为了博主个人日后学习复习用&#xff0c;如有冒犯&#xff0c;请联系qq208820388立即删除博文&#xff0c;最后&#xff0c;来跟我一起喊黑马牛逼黑马牛逼黑马牛逼 【List、Set、数据结…

NodeJs(一)

NodeJs简介 Node.js 是一个基于 Chrome V8 引擎的 JavaScript 运行环境。node.js 使用了一个事件驱动、非阻塞式 I/O 的模型&#xff0c;使其轻量又高效。 中文文档&#xff1a;http://nodejs.cn/api/ 环境变量 当我们在命令行窗口打开一个文件&#xff0c;或调用一个程序时&a…

O'Reilly创始人谈Web 3.0:我们将再次经历1999年互联网泡沫时期

来源&#xff1a;巴比特资讯原文作者&#xff1a;OReilly创始人Tim O’Reilly最近有很多关于 Web3 的讨论&#xff0c;作为在17年前定义“Web 2.0”的人&#xff0c;我经常被要求发表关于Web3的评论。但我通常会避免去这样做&#xff0c;因为大多数对未来的预测都被证明是错误的…

Liunx之nginx代理

一、代理 正向代理 正向代理&#xff0c;也就是传说中的代理,他的工作原理就像一个跳板&#xff08;VPN&#xff09;&#xff0c;简单的说&#xff1a; 我是一个用户&#xff0c;我访问不了某网站&#xff0c;但是我能访问一个代理服务器&#xff0c;这个代理服务器呢&#xff…

23-redis

23-redis 文章目录23-redis今日内容Redis1. 概念1.1.什么是NOSQL1.1.1. NOSQL和关系型数据库比较1.1.2. 非关系型数据库的优势&#xff1a;1.1.3. 关系型数据库的优势&#xff1a;1.1.4. 总结1.2.主流的NOSQL产品1.3 什么是Redis1.3.1 redis的应用场景2. 下载安装3. 命令操作1.…