rpc远程过程调用

Remote Procedure Call (RPC) is a protocol or architecture which is used to run programmes and code located another system in a computer network. Normally processes can call each other in the same local systems. RPC is used to call other processes on the remote systems like a local system.

远程过程调用(RPC)是一种协议或体系结构,用于运行位于计算机网络中另一个系统上的程序和代码。 通常,进程可以在相同的本地系统中相互调用。 RPC用于调用远程系统(如本地系统)上的其他进程。

分散式 (Distributed)

RPC architecture is distributed where we can run single applications in multiple systems in a synchronized way. We can use all of the system resources of the multiple systems as a single big system.

RPC体系结构是分布式的,我们可以在其中以同步方式在多个系统中运行单个应用程序。 我们可以将多个系统的所有系统资源用作一个大系统。

基于客户端服务器 (Client-Server Based)

RPC uses the client-server model. The requesting program is called a client and service providing program or system is called server. Client and server are interchangeable according to the requesting and responding system.

RPC使用客户端-服务器模型。 请求程序称为客户端,服务提供程序或系统称为服务器。 客户端和服务器可以根据请求和响应系统互换。

封送处理 (Marshaling)

In order to call procedure or function on the remote system program, we need to provide some data like function name, parameters, program data etc. In order to provide these data, a stub is included in compiled code as representative of the remote procedure code. When Stub will interface as a remote procedure call and manage transmission of the data, function, parameters etc to the remote procedure.

为了在远程系统程序上调用过程或函数,我们需要提供一些数据,例如函数名称,参数,程序数据等。为了提供这些数据,已编译的代码中包含存根以代表远程过程代码。 。 当Stub将作为远程过程调用进行接口并管理数据,函数,参数等到远程过程的传输时。

请求-回复 (Request-Reply)

As a client-server architecture RPC is a request and reply protocol which can be named as ping-pong. This is not an obligation for RCP applications but most of the RPC applications send single request/procedure call and waits for the response. Without getting a response they do not send a second request/procedure call.

作为客户端-服务器体系结构,RPC是一种请求和应答协议,可以将其命名为ping-pong 。 这不是RCP应用程序的义务,但是大多数RPC应用程序发送单个请求/过程调用并等待响应。 没有得到回应,他们不会发送第二个请求/过程调用。

UDP和TCP传输 (UDP and TCP Transport)

RPC can operate over UDP or TCP without any restriction. But in general, UDP is preferred by the RCP applications which provide faster and simples implementation. RCP/RCP s slower but provides reliable transmission if we need stability or the network is not stable as expected.

RPC可以不受限制地通过UDP或TCP运行。 但是总的来说,UDP是RCP应用程序首选的,它提供了更快,更简单的实现。 RCP / RCP速度较慢,但​​如果我们需要稳定性或网络不稳定,则可以提供可靠的传输。

.u9bc934f1b47edef397c977947d074dc7 , .u9bc934f1b47edef397c977947d074dc7 .postImageUrl , .u9bc934f1b47edef397c977947d074dc7 .centered-text-area { min-height: 80px; position: relative; } .u9bc934f1b47edef397c977947d074dc7 , .u9bc934f1b47edef397c977947d074dc7:hover , .u9bc934f1b47edef397c977947d074dc7:visited , .u9bc934f1b47edef397c977947d074dc7:active { border:0!important; } .u9bc934f1b47edef397c977947d074dc7 .clearfix:after { content: ""; display: table; clear: both; } .u9bc934f1b47edef397c977947d074dc7 { display: block; transition: background-color 250ms; webkit-transition: background-color 250ms; width: 100%; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #ECF0F1; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); } .u9bc934f1b47edef397c977947d074dc7:active , .u9bc934f1b47edef397c977947d074dc7:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #D35400; } .u9bc934f1b47edef397c977947d074dc7 .centered-text-area { width: 100%; position: relative; } .u9bc934f1b47edef397c977947d074dc7 .ctaText { border-bottom: 0 solid #fff; color: #3498DB; font-size: 16px; font-weight: bold; margin: 0; padding: 0; text-decoration: underline; } .u9bc934f1b47edef397c977947d074dc7 .postTitle { color: #27AE60; font-size: 16px; font-weight: 600; margin: 0; padding: 0; width: 100%; } .u9bc934f1b47edef397c977947d074dc7 .ctaButton { background-color: #e6e6e6!important; color: #3498DB; border: none; border-radius: 3px; box-shadow: none; font-size: 14px; font-weight: bold; line-height: 26px; moz-border-radius: 3px; text-align: center; text-decoration: none; text-shadow: none; width: 80px; min-height: 80px; background: url(https://www.poftut.com/wp-content/plugins/intelly-related-posts/assets/images/simple-arrow.png)no-repeat; position: absolute; right: 0; top: 0; } .u9bc934f1b47edef397c977947d074dc7:hover .ctaButton { background-color: #E67E22!important; } .u9bc934f1b47edef397c977947d074dc7 .centered-text { display: table; height: 80px; padding-left: 18px; top: 0; } .u9bc934f1b47edef397c977947d074dc7 .u9bc934f1b47edef397c977947d074dc7-content { display: table-cell; margin: 0; padding: 0; padding-right: 108px; position: relative; vertical-align: middle; width: 100%; } .u9bc934f1b47edef397c977947d074dc7:after { content: ""; display: block; clear: both; }

LEARN MORE  What Is Computer Domain and Domain Name Definition?

.u9bc934f1b47edef397c977947d074dc7 , .u9bc934f1b47edef397c977947d074dc7 .postImageUrl , .u9bc934f1b47edef397c977947d074dc7 .centered-text-area { min-height: 80px; position: relative; } .u9bc934f1b47edef397c977947d074dc7 , .u9bc934f1b47edef397c977947d074dc7:hover , .u9bc934f1b47edef397c977947d074dc7:visited , .u9bc934f1b47edef397c977947d074dc7:active { border:0!important; } .u9bc934f1b47edef397c977947d074dc7 .clearfix:after { content: ""; display: table; clear: both; } .u9bc934f1b47edef397c977947d074dc7 { display: block; transition: background-color 250ms; webkit-transition: background-color 250ms; width: 100%; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #ECF0F1; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); } .u9bc934f1b47edef397c977947d074dc7:active , .u9bc934f1b47edef397c977947d074dc7:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #D35400; } .u9bc934f1b47edef397c977947d074dc7 .centered-text-area { width: 100%; position: relative; } .u9bc934f1b47edef397c977947d074dc7 .ctaText { border-bottom: 0 solid #fff; color: #3498DB; font-size: 16px; font-weight: bold; margin: 0; padding: 0; text-decoration: underline; } .u9bc934f1b47edef397c977947d074dc7 .postTitle { color: #27AE60; font-size: 16px; font-weight: 600; margin: 0; padding: 0; width: 100%; } .u9bc934f1b47edef397c977947d074dc7 .ctaButton { background-color: #e6e6e6!important; color: #3498DB; border: none; border-radius: 3px; box-shadow: none; font-size: 14px; font-weight: bold; line-height: 26px; moz-border-radius: 3px; text-align: center; text-decoration: none; text-shadow: none; width: 80px; min-height: 80px; background: url(https://www.poftut.com/wp-content/plugins/intelly-related-posts/assets/images/simple-arrow.png)no-repeat; position: absolute; right: 0; top: 0; } .u9bc934f1b47edef397c977947d074dc7:hover .ctaButton { background-color: #E67E22!important; } .u9bc934f1b47edef397c977947d074dc7 .centered-text { display: table; height: 80px; padding-left: 18px; top: 0; } .u9bc934f1b47edef397c977947d074dc7 .u9bc934f1b47edef397c977947d074dc7-content { display: table-cell; margin: 0; padding: 0; padding-right: 108px; position: relative; vertical-align: middle; width: 100%; } .u9bc934f1b47edef397c977947d074dc7:after { content: ""; display: block; clear: both; }

了解更多什么是计算机域和域名定义?

标准化数据表示 (Standardized Data Representation)

RPC marshals the data to make a procedure call with a function name, parameter, and data. The marshaled data will be structured as an eXternal Data Representation (XDR) protocol which is documented in RFC 1832. The XDR format supports data types like integers, floating point numbers, strings, and different types to enhance data transmission seamlessly.

RPC封送数据以使用函数名称,参数和数据进行过程调用。 封送处理后的数据将构造为RFC 1832中记录的外部数据表示(XDR)协议。XDR格式支持整数,浮点数,字符串和不同类型之类的数据类型,以无缝增强数据传输。

认证方式 (Authentication)

RPC also supports authentication the calling applications one system to the target function on the other system. Authentication can run in several models. As an example, NFS operations authentication is done with the Linux user and group IDs for file server permission and authorization.

RPC还支持将一个系统中的调用应用程序验证到另一系统上的目标功能。 身份验证可以在多种模型中运行。 例如,NFS操作身份验证是通过Linux用户和组ID进行的,用于文件服务器的权限和授权。

工作流程 (Work Flow)

In this part, we will examine a standard RPC request for different components on the client and server system.

在这一部分中,我们将检查客户端和服务器系统上不同组件的标准RPC请求。

  • Client program or applications call the client function.客户端程序或应用程序调用客户端功能。
  • Client function call redirected to the Client stab which is responsible to make the remote procedure call.客户端函数调用重定向到Client stab,后者负责进行远程过程调用。
  • Client stub will use ready to use RPC Runtime as an interface to the server客户端存根将准备使用RPC运行时作为服务器的接口
  • Client RPC Runtime will redirect message to the server RPC runtime.客户端RPC运行时会将消息重定向到服务器RPC运行时。
  • Server RPC Runtime will popup the client message to the Server Stub.服务器RPC运行时会将客户端消息弹出到服务器存根。
  • Server Stub will call the Server function in order to execute the given method, parameters, and data requested by the client.服务器存根将调用服务器功能,以执行客户端请求的给定方法,参数和数据。
  • After the Server Function execution ended function result will be returned to the Server Stub服务器功能执行结束后,功能结果将返回到服务器存根
  • Server Stub will redirect to the RPC Runtime as response服务器存根将重定向到RPC运行时作为响应
  • Server RPC Runtime will transmission result  to the Client RPC Runtime服务器RPC运行时会将结果传输到客户端RPC运行时
  • RPC Runtime will popup to the Client StubRPC运行时将弹出到客户端存根
  • Client Stub will push the method call result to the Client Function.Client Stub会将方法调用结果推送到Client Function。
.uffc988f737befab62174909bd825b640 , .uffc988f737befab62174909bd825b640 .postImageUrl , .uffc988f737befab62174909bd825b640 .centered-text-area { min-height: 80px; position: relative; } .uffc988f737befab62174909bd825b640 , .uffc988f737befab62174909bd825b640:hover , .uffc988f737befab62174909bd825b640:visited , .uffc988f737befab62174909bd825b640:active { border:0!important; } .uffc988f737befab62174909bd825b640 .clearfix:after { content: ""; display: table; clear: both; } .uffc988f737befab62174909bd825b640 { display: block; transition: background-color 250ms; webkit-transition: background-color 250ms; width: 100%; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #ECF0F1; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); } .uffc988f737befab62174909bd825b640:active , .uffc988f737befab62174909bd825b640:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #D35400; } .uffc988f737befab62174909bd825b640 .centered-text-area { width: 100%; position: relative; } .uffc988f737befab62174909bd825b640 .ctaText { border-bottom: 0 solid #fff; color: #3498DB; font-size: 16px; font-weight: bold; margin: 0; padding: 0; text-decoration: underline; } .uffc988f737befab62174909bd825b640 .postTitle { color: #27AE60; font-size: 16px; font-weight: 600; margin: 0; padding: 0; width: 100%; } .uffc988f737befab62174909bd825b640 .ctaButton { background-color: #e6e6e6!important; color: #3498DB; border: none; border-radius: 3px; box-shadow: none; font-size: 14px; font-weight: bold; line-height: 26px; moz-border-radius: 3px; text-align: center; text-decoration: none; text-shadow: none; width: 80px; min-height: 80px; background: url(https://www.poftut.com/wp-content/plugins/intelly-related-posts/assets/images/simple-arrow.png)no-repeat; position: absolute; right: 0; top: 0; } .uffc988f737befab62174909bd825b640:hover .ctaButton { background-color: #E67E22!important; } .uffc988f737befab62174909bd825b640 .centered-text { display: table; height: 80px; padding-left: 18px; top: 0; } .uffc988f737befab62174909bd825b640 .uffc988f737befab62174909bd825b640-content { display: table-cell; margin: 0; padding: 0; padding-right: 108px; position: relative; vertical-align: middle; width: 100%; } .uffc988f737befab62174909bd825b640:after { content: ""; display: block; clear: both; }

LEARN MORE  Structure In C Programming

.uffc988f737befab62174909bd825b640 , .uffc988f737befab62174909bd825b640 .postImageUrl , .uffc988f737befab62174909bd825b640 .centered-text-area { min-height: 80px; position: relative; } .uffc988f737befab62174909bd825b640 , .uffc988f737befab62174909bd825b640:hover , .uffc988f737befab62174909bd825b640:visited , .uffc988f737befab62174909bd825b640:active { border:0!important; } .uffc988f737befab62174909bd825b640 .clearfix:after { content: ""; display: table; clear: both; } .uffc988f737befab62174909bd825b640 { display: block; transition: background-color 250ms; webkit-transition: background-color 250ms; width: 100%; opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #ECF0F1; box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -o-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.17); } .uffc988f737befab62174909bd825b640:active , .uffc988f737befab62174909bd825b640:hover { opacity: 1; transition: opacity 250ms; webkit-transition: opacity 250ms; background-color: #D35400; } .uffc988f737befab62174909bd825b640 .centered-text-area { width: 100%; position: relative; } .uffc988f737befab62174909bd825b640 .ctaText { border-bottom: 0 solid #fff; color: #3498DB; font-size: 16px; font-weight: bold; margin: 0; padding: 0; text-decoration: underline; } .uffc988f737befab62174909bd825b640 .postTitle { color: #27AE60; font-size: 16px; font-weight: 600; margin: 0; padding: 0; width: 100%; } .uffc988f737befab62174909bd825b640 .ctaButton { background-color: #e6e6e6!important; color: #3498DB; border: none; border-radius: 3px; box-shadow: none; font-size: 14px; font-weight: bold; line-height: 26px; moz-border-radius: 3px; text-align: center; text-decoration: none; text-shadow: none; width: 80px; min-height: 80px; background: url(https://www.poftut.com/wp-content/plugins/intelly-related-posts/assets/images/simple-arrow.png)no-repeat; position: absolute; right: 0; top: 0; } .uffc988f737befab62174909bd825b640:hover .ctaButton { background-color: #E67E22!important; } .uffc988f737befab62174909bd825b640 .centered-text { display: table; height: 80px; padding-left: 18px; top: 0; } .uffc988f737befab62174909bd825b640 .uffc988f737befab62174909bd825b640-content { display: table-cell; margin: 0; padding: 0; padding-right: 108px; position: relative; vertical-align: middle; width: 100%; } .uffc988f737befab62174909bd825b640:after { content: ""; display: block; clear: both; }

在C编程中了解更多结构

Work Flow
工作流程

RPC的优势(RPC Advantages)

Here we will list some advantages of the RPC.

在这里,我们将列出RPC的一些优点。

  • Remote procedure calls can use process oriented and thread oriented models远程过程调用可以使用面向过程和面向线程的模型
  • RPC provides an abstraction for running remote methods and procedures with simplicityRPC提供了一种简化运行远程方法和过程的抽象方法
  • Code development efforts will be minimum with RPC使用RPC的代码开发工作将最少
  • RPC can be used in a distributed manner as well as local systemsRPC可以以分布式方式以及本地系统使用
  • RPC performance is good according to other alternative protocols根据其他替代协议,RPC性能良好

RPC的缺点(RPC Disadvantages)

Here we will list some disadvantages of the RPC.

在这里,我们将列出RPC的一些缺点。

  • Some RPC implementations are standard一些RPC实现是标准的
  • There is an increase in the cost of a remote procedure call远程过程调用的成本增加了

翻译自: https://www.poftut.com/what-is-remote-procedure-call-rpc/

rpc远程过程调用

rpc远程过程调用_什么是远程过程调用(RPC)?相关推荐

  1. 远程过程调用(Remote Procedure Call,RPC)

    http://zh.wikipedia.org/wiki/%E9%81%A0%E7%A8%8B%E9%81%8E%E7%A8%8B%E8%AA%BF%E7%94%A8 远程过程调用(Remote Pr ...

  2. 远程过程调用失败_Java开发大型互联网RPC远程调用服务实现之问题处理方案

    引言 RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议 ...

  3. zkcli远程连接_高级框架第一天RPC:远程过程调用

    RPC:远程过程调用 主要内容 1.项目结构变化 2.RPC简介 3.RMI实现RPC 4.HttpClient实现RPC 5.Zookeeper安装 6.Zookeeper客户端常用命令 7.向Zo ...

  4. geth 以太坊钱包_以太坊Geth节点RPC API中文文档

    Geth除了支持官方的DApp API开发接口,还支持额外的管理API接口.类似于DApp API,这些管理API也是通过JSON-PRC协议提供,并且遵循同样的规范.Geth内置的控制台支持所有这些 ...

  5. php rpc调用,PHP远程调用, 为什么需要使用RPC

    前言 一个项目,从开始到版本更新,一直到最后的版本维护.功能在不断增多,对应的代码量也在不断增加,也就意味着项目变得更不可维护,这时候,我们需要用拆分的方式将一个项目打散,以便开发团队更好的对项目进行 ...

  6. rpc是什么?php中流行的rpc框架有哪些?

    什么是rpc框架 先回答第一个问题:什么是RPC框架?如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如这 ...

  7. Spark RPC框架源码分析(二)RPC运行时序

    前情提要: Spark RPC框架源码分析(一)简述 一. Spark RPC概述 上一篇我们已经说明了Spark RPC框架的一个简单例子,Spark RPC相关的两个编程模型,Actor模型和Re ...

  8. 误删系统rpc服务器不可用,rpc服务器不可用,小编教你rpc服务器不可用怎么办

    网上介绍关于"RPC服务器不可用"的内容,才知道RPC是一种协议,主要是为组件提供一种相互通信的方式,传递请求的结果,故障原因是因为系统对本地系统禁用RPC,只需要启动RPC就可以解决这一问 ...

  9. w7系统显示rpc服务器不可用,教你win7系统rpc服务器不可用怎么办

    用户在使用电脑进行时间同步,安装打印机或者其它的操作的时候可能会遇到同样一个问题,那就是提示"RPC服务器不可用",很多朋友可能对于RPC并不了解,更不知道如何解决,下面,小编就来 ...

最新文章

  1. mysql 创建用户远程连接
  2. 【翻译】TCP backlog在Linux中的工作原理
  3. 编译Android 4.0 ICS注意事项
  4. 网站首页head区代码规范
  5. java 抛出403_java.io.IOException:服务器返回HTTP响应代码:403 [URL]
  6. 解密ControlRotation与ActorRotation
  7. 图论 —— 带花树算法
  8. 对中小电商卖家来说,找1-2个靠谱的供应链,不需要多
  9. R语言中的数据处理包dplyr、tidyr笔记
  10. java 通过id获取html代码_分享代码技巧:解决 $.(“#id“).val() 获取不到空格之后的值
  11. SketchUp Pro 2021 v21.1.279 x64 Multilingual
  12. win10共享文件夹设置,本地组策略配置全攻略
  13. 华擎J3455-ITX黑群晖6.2.3-25426搭建
  14. 联想小新锁屏壁纸怎么换_联想_ThinkPad|ThinkCentre|ThinkStation服务与驱动下载_常见问题...
  15. 什么软件可以把图片镜像翻转_ios怎么把照片镜面翻转
  16. 2022保研面试经历
  17. css实现渐变色遮罩层(模糊毛边)
  18. 程派高式八卦掌传人——刘树行
  19. Python生物医学专业案例 - 细胞计数
  20. ISCC2022 擂台misc

热门文章

  1. vue开发中出现警告Forced reflow while executing JavaScript took
  2. c/c++找色功能实现
  3. OpenAI 发布 GPT-4 ,功能炸裂!网友:真人工智能更近一步!
  4. HTML5期末大作业:关于旅游景点介绍的HTML网页设计——榆林子州 8页 (含毕设论文9000字) 建议收藏...
  5. EPPlus(Document Manipulation Libraries 二)
  6. 这款 chrome 浏览器插件超级实用
  7. JS 对象 个人小结(1)
  8. 25K 入职腾讯的那天,我直接哭了:功夫不负有心人
  9. 在使用数据库对象管理工具新建数据库时,默认自带的模式有哪些?  A. public   B. sys_catalog   C. exam   D. sysaudit...
  10. 装了win8 之后QQ音乐跟酷狗乐库都显示不出来的问题