一、前言RPC,整个过程就是RemoteProcedureCall,是一种进程间的通信方式。它采用“服务器/客户端”模式,是一种请求-响应模型。服务器负责提供服务程序和响应请求。实现逻辑,客户端负责请求调用主流RPC框架,包括:阿里的Dubbo、Facebook的Thrift、Google的gRpc、新浪微博的MotanGolang生态rpcx,其中gRpc和Thrift是跨语言的RPC服务框架,Thrift性能更高本文以Thrift为例,讲讲在Python中使用RPC的过程。2、Thriftpy2引入Thrift作为接口描述语言和二进制通信协议。它可用于定义和创建跨语言服务,使不同语言的客户端能够在客户端和服务器之间进行高效透明的通信。thriftpy2是基于Thrift的二次包。用它写RPC更方便快捷。项目地址:https://github.com/Thriftpy/t...首先,我们在虚拟环境下安装依赖包#安装依赖pip3installthriftpy2然后,如果是Windows,建议安装thrift插件-inPSinPycharm:这个插件可以方便我们编写Thrift通信文件。下载地址:https://plugins.jetbrains.com。..3。实战首先,根据需求编写Thrift通信文件。例如文件中定义了两个没有参数的方法functionpingloginlogin包含两个参数:username,password#foo.thriftservicePingPong{stringping(),stringlogin(1:stringusername,2:stringpassword)}然后,写server代码根据Thrift通信文件中定义的方法,编写具体的实现逻辑创建服务对象,指定绑定的ip地址和端口号,启动服务并监听Message#rcp_server.pyimportthriftpy2fromthriftpy2.rpcimportmake_server#Read通信配置文件pingpong_thrift=thriftpy2.load("foo.thrift",module_name="pingpong_thrift")classDispatcher(object):"""根据通信配置文件中定义的方法,重写实现方法"""defping(self):"""Ping:return:"""return"pong"deflogin(self,username,password):"""Login:paramusername:username:parampassword:password:return:"""print('获取client传递的参数,username:',username,",password:",password)return'登录成功!'#创建服务,指定本地ip地址和监听端口号server=make_server(pingpong_thrift.PingPong,Dispatcher(),'192.168.40.217',9000)#启动服务并监听server.serve()然后,写入这里的客户端代码,根据服务端提供的ip地址和端口号,创建一个客户端连接对象,调用通信文件中定义的方法PS:如果客户端是远程执行,需要把Thrift通信文件放在在同一目录下执行#rcp_client。pyimportthriftpy2fromthriftpy2.rpcimportmake_client#读取通信配置文件pingpong_thrift=thriftpy2.load("foo.thrift",module_name="pingpong_thrift")#创建客户端client=make_client(pingpong_thrift.PingPong,'192.168.40.217',9000)#调用通信文件中定义的方法(实际是调用服务端的方法)print(client.ping())print(client.login('root','pwd'))最后,分别运行服务端和客户端的代码,使用WireShark对数据包进行分析,找出服务端和客户端之间的通信方式和数据传输过程。4.在最终的企业项目中,常用的HTTP具有简单、易开发、易上手等特点,是主流的数据传输协议。与HTTP或H2相比,RPC的主要优势体现在安全性高、性能消耗低、传输效率高、服务管理方便。因此,我们可以根据实际项目需要选择合理的数据通信方式。近期整理了数百G的Python学习资料,包括入门电子书、教程、源码等,免费分享给大家!想上“Python编程学习圈”,发“J”免费领取
