C语言学习网

Python中RPC是什么

发表于:2022-11-28 作者:安全数据网编辑
编辑最后更新 2022年11月28日,这篇文章主要介绍"Python中RPC是什么",在日常操作中,相信很多人在Python中RPC是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python中RPC是

这篇文章主要介绍"Python中RPC是什么",在日常操作中,相信很多人在Python中RPC是什么问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python中RPC是什么"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

如今的计算机应用中,单机性能上很难承受住产品的压力,需要不断扩充多台机器来提升整体的性能。同时为了充分利用这些集群里的计算机,需要对其从架构上进行划分,以提供不同的服务,服务间相互调用完成整个产品的功能。

####RPC 就是为解决服务之间信息交互而发明和存在的

RPC(Remote Procedure Call)--远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议(RPC的设计思想是力图使远程调用中的通讯细节对于使用者透明,调用双方无需关心网络通讯的具体实现。因而实现RPC要进行一定的封装)

流程:
  1. 调用者(Caller, 也叫客户端、Client)以本地调用的方式发起调用;

  2. Client stub(客户端存根,可理解为辅助助手)收到调用后,负责将被调用的方法名、参数等打包编码成特定格式的能进行网络传输的消息体;

  3. Client stub将消息体通过网络发送给对端(服务端)

  4. Server stub(服务端存根,同样可理解为辅助助手)收到通过网络接收到消息后按照相应格式进行拆包解码,获取方法名和参数;

  5. Server stub根据方法名和参数进行本地调用;

  6. 被调用者(Callee,也叫Server)本地调用执行后将结果返回给server stub;

  7. Server stub将返回值打包编码成消息,并通过网络发送给对端(客户端);

  8. Client stub收到消息后,进行拆包解码,返回给Client;

  9. Client得到本次RPC调用的最终结果。

使用RPC方法

  1. 声明RPC调用的接口形式 ret = recommend_article(channel_id, user_id) 接口的名字 recommend_article 调用时传递的参数 int channel_id , int user_id 接口返回数据 int list [article_id, article_id, ....]

  2. 生成 调用的代码 (包含了 参数转换为二进制传输的方法、网络传输收发的方法) rpc框架会提供生成代码的工具 (编译器) 使用编译器生成不同语言的代码 调用方 python -> 使用编译器 根据上面的接口描述 ,生成python代码 被调用方 java -> 使用编译器 根据上面的接口,生成java代码

  3. 需要补充代码 在被调用的一端 服务端 补充被调用时执行的逻辑函数 在调用的一方,需要在 调用的代码地方 补充上调用的代码

常用框架

  • gRPC(Google)

  1. gRPC是由Google公司开源的高性能RPC框架。

  2. gRPC支持多语言 gRPC原生使用C、Java、Go进行了三种实现,而C语言实现的版本进行封装后又支持C++、C#、Node、ObjC、 Python、Ruby、PHP等开发语言

  3. gRPC支持多平台 支持的平台包括:Linux、Android、iOS、MacOS、Windows

  4. gRPC的消息协议使用Google自家开源的Protocol Buffers协议机制(proto3) 序列化

  5. gRPC的传输使用HTTP/2标准,支持双向流和连接多路复用

到此,关于"Python中RPC是什么"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

0