博客
关于我
RPC入门了解
阅读量:667 次
发布时间:2019-03-15

本文共 901 字,大约阅读时间需要 3 分钟。

远程过程调用(RPC)概述

远程过程调用(RPC)是一种技术协议,允许一个程序在不了解网络细节的情况下,将请求发送到网络上的另一台计算机上的程序。这种机制使得客户端能够轻松调用远程系统上的其他进程。

RPC是什么?

RPC一种将本地程序的操作扩展到远程系统的方式,其工作模式基于客户端-服务器模型。与传统本地过程调用不同,RPC需要客户端暂停并等待远程程序的返回值。这一点使得它更适合处理同步操作,但当涉及到对多个RPC请求的并发处理时,使用轻量级的进程或线程会更高效。

RPC的工作原理

RPC过程可以分为几个阶段:

  • 客户端调用存根程序:客户端将本地存根程序激活,并将请求参数推送至堆栈。
  • 数据打包与传递:存根程序将参数打包成消息,并通过本地OS发送到远程服务器。
  • 远程处理:服务器侧的存根程序接收消息,解组参数,并系统调用对应的远程程序进行处理。
  • 结果返回:处理完成后,服务器存根程序将结果封装并通过网络返回客户端。
  • RPC的五种类型

    RPC可操作的方式有多种:

  • 阻塞调用:客户端在发送请求后会被阻塞,直到接收到远程程序的返回结果。
  • 非阻塞调用:客户端可以继续处理其他操作,只需等待远程完成后进行处理。
  • 批处理:客户端可以对多个远程调用进行批量操作,提高效率。
  • 广播调用:客户端可以将同一消息发送至多个服务器,接收所有结果进行处理。
  • 关联调用:通过指定机制确保客户端能够跟踪特定的远程调用并接收相关返回值。
  • RPC的优点

  • 简化接口定义:利用IDL明确接口规范,便于跨平台兼容性,隐藏复杂性的消息传递。
  • 高效通信:通过省略传输层协议,提升性能。
  • 灵活性:支持流程和线程模型的切换。
  • 易用性:用户无需深入了解网络细节。
  • 可扩展性:适合分布式环境和本地使用。
  • RPC的缺点

  • 资源管理复杂性:跨机器的资源访问可能导致问题。
  • 通信错误敏感:因依赖网络传输,易受环境影响。
  • 实现多样性:由于无统一标准,实现方式各不相同。
  • 性能瓶颈:传输大量数据可能导致效率下降。
  • RPC技术通过简化远程调用流程,使得开发者能够方便地在分布式环境中对多种系统进行操作,同时它的客户端存根机制能够有效地桥梁不同操作系统之间的差异。

    转载地址:http://hqsmz.baihongyu.com/

    你可能感兴趣的文章
    npm报错fatal: Could not read from remote repository
    查看>>
    npm报错File to import not found or unreadable: @/assets/styles/global.scss.
    查看>>
    npm报错TypeError: this.getOptions is not a function
    查看>>
    npm报错unable to access ‘https://github.com/sohee-lee7/Squire.git/‘
    查看>>
    npm淘宝镜像过期npm ERR! request to https://registry.npm.taobao.org/vuex failed, reason: certificate has ex
    查看>>
    npm版本过高问题
    查看>>
    npm的“--force“和“--legacy-peer-deps“参数
    查看>>
    npm的安装和更新---npm工作笔记002
    查看>>
    npm的常用操作---npm工作笔记003
    查看>>
    npm的常用配置项---npm工作笔记004
    查看>>
    npm的问题:config global `--global`, `--local` are deprecated. Use `--location=global` instead 的解决办法
    查看>>
    npm编译报错You may need an additional loader to handle the result of these loaders
    查看>>
    npm设置淘宝镜像、升级等
    查看>>
    npm设置源地址,npm官方地址
    查看>>
    npm设置镜像如淘宝:http://npm.taobao.org/
    查看>>
    npm配置安装最新淘宝镜像,旧镜像会errror
    查看>>
    NPM酷库052:sax,按流解析XML
    查看>>
    npm错误 gyp错误 vs版本不对 msvs_version不兼容
    查看>>
    npm错误Error: Cannot find module ‘postcss-loader‘
    查看>>
    npm,yarn,cnpm 的区别
    查看>>