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远程过程调用
远程过程调用(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 ...
远程过程调用失败_Java开发大型互联网RPC远程调用服务实现之问题处理方案
引言 RPC(Remote Procedure Call Protocol)--远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议.RPC协议假定某些传输协议 ...
zkcli远程连接_高级框架第一天RPC:远程过程调用
RPC:远程过程调用 主要内容 1.项目结构变化 2.RPC简介 3.RMI实现RPC 4.HttpClient实现RPC 5.Zookeeper安装 6.Zookeeper客户端常用命令 7.向Zo ...
geth 以太坊钱包_以太坊Geth节点RPC API中文文档
Geth除了支持官方的DApp API开发接口,还支持额外的管理API接口.类似于DApp API,这些管理API也是通过JSON-PRC协议提供,并且遵循同样的规范.Geth内置的控制台支持所有这些 ...
php rpc调用,PHP远程调用, 为什么需要使用RPC
前言 一个项目,从开始到版本更新,一直到最后的版本维护.功能在不断增多,对应的代码量也在不断增加,也就意味着项目变得更不可维护,这时候,我们需要用拆分的方式将一个项目打散,以便开发团队更好的对项目进行 ...
rpc是什么?php中流行的rpc框架有哪些?
什么是rpc框架 先回答第一个问题:什么是RPC框架?如果用一句话概括RPC就是:远程调用框架(Remote Procedure Call) 那什么是远程调用? 通常我们调用一个php中的方法,比如这 ...
Spark RPC框架源码分析(二)RPC运行时序
前情提要: Spark RPC框架源码分析(一)简述 一. Spark RPC概述 上一篇我们已经说明了Spark RPC框架的一个简单例子,Spark RPC相关的两个编程模型,Actor模型和Re ...
误删系统rpc服务器不可用,rpc服务器不可用,小编教你rpc服务器不可用怎么办
网上介绍关于"RPC服务器不可用"的内容,才知道RPC是一种协议,主要是为组件提供一种相互通信的方式,传递请求的结果,故障原因是因为系统对本地系统禁用RPC,只需要启动RPC就可以解决这一问 ...
w7系统显示rpc服务器不可用,教你win7系统rpc服务器不可用怎么办
用户在使用电脑进行时间同步,安装打印机或者其它的操作的时候可能会遇到同样一个问题,那就是提示"RPC服务器不可用",很多朋友可能对于RPC并不了解,更不知道如何解决,下面,小编就来 ...