RPC介绍(翻译)

RPC

原文链接:https://www.techtarget.com/searchapparchitecture/definition/Remote-Procedure-Call-RPC

什么是RPC?

rpc 是一个软件通信协议,用来 请求 在不同的计算机或网络上的服务,并且不需要担心中间的网络细节

具体而言 RPC 可以像调用本地进程一样调用远程系统上的进程.

rpc 类似一个低层传输协议,用于在通信程序之间传输数据包

rpc 是 client-server 模型,请求程序是client,提供服务的程序是 server.

rpc 和 本地调用程序一样,是一个同步操作,要求 发送请求方必须暂停,直到远程程序的结果返回.不过,共享同一地址空间的轻量级进程或线程可以同时运行多个rpc

IDL 被用于 RPC,IDL可以连接两个不同的操作系统的机器

RPC做了什么?

rpc常用于分布式系统.它可以让程序像调用本地的程序一样去调用远程的子程序.虽然说 rpc 类似于传输协议,但它实际上是一个进程间的通信程序

当使用 rpc 框架的程序语句或指令被编译成可执行文件,一个 stub(存根) 也在这个文件内.

存根是一段代码,用来转变 在 client 和 server 之间传递的参数,stub就好像远程程序代码的一个代表

当 client 程序运行,发出调用,这个 stub 收到这个请求并把它发送到 一个 client runtime program. 当第一次 client 方的 stub 被调用时,他会去接触一个 name server 来判断 server 所在的传输地址

这个client runtime program 知道怎么去定位 远程的计算机和 server 应用程序,然后发送消息,请求远程程序. 同样的,server 这边也有一个 远程程序自己的 runtime program 和 stub

响应请求协议和上面的步骤相同

RPC怎么工作的?

当发起远程程序调用时,发起调用的环境被阻塞.程序参数通过网络被发往到应该执行程序的设备上.随后,程序在那个环境开始执行

当程序完成后,数据将被返回至调用环境,然后程序接着执行,就好像是收到了一个正常调用的返回

以下是 一个 rpc 的执行步骤

  1. client 调用 client stub,这是一个本地调用,把参数压入栈
  2. client stub 把这些参数打包进一个message,然后发起系统调用.这个打包过程称之为编组
  3. client的本地操作系统把message从本地发送到远程设备
  4. server的操作系统传输层将传入的包发送给 server stub
  5. stub 从这些包里面取出参数,这一步称之为解组
  6. 当server的程序执行完毕后,把结果传给 server stub,stub再把返回值编组成message,然后把这个message 返回给传输层
  7. server 传输层发送message给client传输层,然后client传输层会将message发给 client stub
  8. client 通过解组,拿到返回的参数和调用执行结果

RPC 的种类

  • Synchronous 同步
    client 发送请求并且等待 server 回复

  • Nonblocking 非阻塞
    client 发送请求,但不等待回复,而是继续向下执行

  • Batch-Mode 批处理模式
    client 在一组中发送多个 nonblocking 调用

  • Broadcast 广播
    client 向多个 server 发送 message,并且接受所有的回复

  • Callback 回调

    client 发送一个 nonblocking client-server 的调用

client-server通信方式有:消息队列、 IBM’s Advanced Program-to-Program Communication、REST

RPC的优缺点

优点:

  • 帮助client 使用传统的程序调用和 server 通信
  • 可以在本地或者分布式环境运行
  • 支持面向进程和面向线程的模型
  • 对用户隐藏了内部的消息传递机制,提供抽象
  • 忽略了一些协议层来提升性能

缺点:

  • client 和 server 为他们的例程使用了不同的运行环境,然后资源的使用更加复杂. 所以RPC不总是适合于海量数据的传输
  • rpc 很容易失败,因为它包含了一个交流系统,另一台机器,另一个进程
  • rpc 不如其他 API 灵活,比如 REST
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值