资讯

精准传达 • 有效沟通

从品牌网站建设到网络营销策划,从策略到执行的一站式服务

Python中RPC是什么

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

创新互联公司是少有的成都网站制作、网站设计、营销型企业网站、微信平台小程序开发、手机APP,开发、制作、设计、友情链接、推广优化一站式服务网络公司,于2013年开始,坚持透明化,价格低,无套路经营理念。让网页惊喜每一位访客多年来深受用户好评

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

####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是什么”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注创新互联网站,小编会继续努力为大家带来更多实用的文章!


网页标题:Python中RPC是什么
文章地址:http://cdkjz.cn/article/pgchic.html
多年建站经验

多一份参考,总有益处

联系快上网,免费获得专属《策划方案》及报价

咨询相关问题或预约面谈,可以通过以下方式与我们联系

大客户专线   成都:13518219792   座机:028-86922220