rpc

luiweony luiweony     2022-11-21     378

关键词:

1、RPC的含义

  RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网络通信模型中,RPC跨越了传输层和应用层。RPC使得开发包括网络分布式多程序在内的应用程序更加容易。

  RPC采用客户机/服务器模式。请求程序就是一个客户机,而服务提供程序就是一个服务器。首先,客户机调用进程发送一个有进程参数的调用信息到服务进程,然后等待应答信息。在服务器端,进程保持睡眠状态直到调用信息到达为止。当一个调用信息到达,服务器获得进程参数,计算结果,发送答复信息,然后等待下一个调用信息,最后,客户端调用进程接收答复信息,获得进程结果,然后调用执行继续进行。

  有多种 RPC模式和执行。最初由 Sun 公司提出。IETF ONC 宪章重新修订了 Sun 版本,使得 ONC RPC 协议成为 IETF 标准协议。现在使用最普遍的模式和执行是开放式软件基础的分布式计算环境(DCE)。

技术分享图片

2、为什么要用RPC

  当我们的系统访问量增大、业务增多时,我们会发现一台单机运行此系统已经无法承受。此时,我们可以将业务拆分成几个互不关联的应用,分别部署在各自机器上,以划清逻辑并减小压力。此时,我们也可以不需要RPC,因为应用之间是互不关联的。当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。此时,可以将公共业务逻辑抽离出来,将之组成独立的服务Service应用 。而原有的、新增的应用都可以与那些独立的Service应用 交互,以此来完成完整的业务功能。所以此时,我们急需一种高效的应用程序之间的通讯手段来完成这种需求,所以你看,RPC大显身手的时候来了!

3、RPC的原理和框架

  RPC 的程序包括 5 个部分:1. User 2. User-stub 3. RPCRuntime 4. Server-stub 5. Server 下面是这5个部分的关系图:技术分享图片

  这里 user 就是 client 端,当 user 想发起一个远程调用时,它实际是通过本地调用user-stub。user-stub 负责将调用的接口、方法和参数通过约定的协议规范进行编码并通过本地的 RPCRuntime 实例传输到远端的实例。远端 RPCRuntime 实例收到请求后交给 server-stub 进行解码后发起本地端调用,调用结果再返回给 user 端。

技术分享图片

  RPC 服务方通过 RpcServer 去导出(export)远程接口方法,而客户方通过 RpcClient 去引入(import)远程接口方法。客户方像调用本地方法一样去调用远程接口方法,RPC 框架提供接口的代理实现,实际的调用将委托给代理RpcProxy 。代理封装调用信息并将调用转交给RpcInvoker 去实际执行。在客户端的RpcInvoker 通过连接器RpcConnector 去维持与服务端的通道RpcChannel,并使用RpcProtocol 执行协议编码(encode)并将编码后的请求消息通过通道发送给服务方。RPC 服务端接收器 RpcAcceptor 接收客户端的调用请求,同样使用RpcProtocol 执行协议解码(decode)。解码后的调用信息传递给RpcProcessor 去控制处理调用过程,最后再委托调用给RpcInvoker 去实际执行并返回调用结果。

以上知识点参考博客:https://blog.csdn.net/kingcat666/article/details/78577079

 

什么是rpc以及rpc的简单实现

RPC(RemoteProcedureCall):远程过程调用说起RPC,就不能不提到分布式,这个促使RPC诞生的领域。RPC要解决的两个问题:  1.解决分布式系统中,服务之间的调用问题。  2.远程调用时,要能够像本地调用一样方便,让调用者感... 查看详情

rpc模型

RPC模型1.简介2.RPC有理函数模型3.优秀的RPC相关知识博文3.1RPC和RPB文件相关信息3.2Matlab实现RPC正算反算3.3使用Gdal进行批量的影像RPC正射校正3.4(Python)卫星RPC有理多项式模型读取与正反投影坐标计算原理与实现3.5高分影像... 查看详情

rpc----rpc入门了解&最简单的rpc的实现(代码片段)

RPC入门了解一、历史背景二、理论知识1、概念2、为什么要用RPC3、工作原理4、RPC解决了什么问题?5、RPCvsHTTP远程调用方式6、常用RPC框架三、实现1、对象序列化1.1序列化的原因1.2概念1.3解决方案(RPC序列化框架)1.4代码实现2、网络... 查看详情

手写基于http的rpc框架

一、模块划分聚合工程顶级模块:​new_rpc​​父模块:​httpclient_rpc​​子模块:​​httpclient_rpc_server、httpclient_rpc_client​、​httpclient_rpc_pojo​​​使用顶级模块是因为rpc协议自定义了两种方式,现在介绍的是​​httpclient_rpc​... 查看详情

rpc

1、RPC的含义  RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP或UDP,为通信程序之间携带信息数据。在OSI网... 查看详情

一个入门rpc框架的学习

一个入门rpc框架的学习参考huangyong-rpc轻量级分布式RPC框架该程序是一个短连接的rpc实现简介RPC,即RemoteProcedureCall(远程过程调用),说得通俗一点就是:调用远程计算机上的服务,就像调用本地服务一样。RPC可基于HTTP或TCP协议... 查看详情

我收到一个错误:“MetaMask - RPC 错误:错误:错误:[ethjs-rpc] rpc 错误与有效负载”

】我收到一个错误:“MetaMask-RPC错误:错误:错误:[ethjs-rpc]rpc错误与有效负载”【英文标题】:igetanerror:"MetaMask-RPCError:Error:Error:[ethjs-rpc]rpcerrorwithpayload"【发布时间】:2019-10-2403:26:43【问题描述】:我从我的javascript发送... 查看详情

rpc(代码片段)

RPC是什么RPC(RemoteProcedureCall,远程过程调用)容许程序调用另一个地址空间的过程或者函数。RPC的实现方式很多,可以基于常见的HTTP协议,也可以在TCP上层封装自己的协议,由于HTTP报头较为冗长,性能较差,基于TCP协议的RPC可... 查看详情

如何从另一个 rpc 服务调用 rpc 服务方法?

】如何从另一个rpc服务调用rpc服务方法?【英文标题】:Howtocallrpcservicemethodfromanotherrpcservice?【发布时间】:2013-10-1022:53:24【问题描述】:有两种不同的GWT-RPC服务。TaxService包含方法TaxDtogetTax(ProductDtoproduct);ProductService包含方法`Dou... 查看详情

rpc和socket,rmi和rpc之间的关系

远程通信机制RPC与RMI的关系http://blog.csdn.net/zolalad/article/details/25161133   1.RPC    RPC(RemoteProcedureCallProtocol)远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技... 查看详情

rpc原理及rpc实例分析

1、什么是RPC由于各服务部署在不同的机器,服务间的调用免不了网络通信过程,服务消费方没调用一个服务都要写一坨网络通信相关的代码,不仅负责而且容易出错RPC(RemoteProcedureCall)远程过程调用能让我们像调用本地服务一样... 查看详情

rpc簡介

RPC技术原理      RPC(RemoteProcedureCallProtocol,远程过程调用协议):客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。1.RPC要点RPC是协议:既然是... 查看详情

C 代码,RPC 错误“RPC:无法编码参数”

】C代码,RPC错误“RPC:无法编码参数”【英文标题】:CCode,RPCError"RPC:Can\'tencodearguments"【发布时间】:2016-04-2803:25:25【问题描述】:我看到了这个question,但它似乎不适用。这是我在客户端代码中完成大部分繁重工作的函... 查看详情

如何尝试捕获对离线 RPC 服务器的 RPC 调用?

】如何尝试捕获对离线RPC服务器的RPC调用?【英文标题】:Howtotry-catchaRPCcalltoanofflineRPCserver?【发布时间】:2017-08-2116:02:12【问题描述】:如果我们对在线但不运行RPC服务器的服务器进行RPC调用,我正在寻找如何继续。我在我的... 查看详情

Protobuf-Net:实现服务器、rpc 控制器和 rpc 通道

】Protobuf-Net:实现服务器、rpc控制器和rpc通道【英文标题】:Protobuf-Net:implementingserver,rpccontrollerandrpcchannel【发布时间】:2015-06-1704:51:38【问题描述】:我正在尝试实现一组服务,这些服务暂时用tcp实现,但最终会转移到udp。我... 查看详情

实现 RPC 的 C 库

】实现RPC的C库【英文标题】:ClibrarytoimplementRPC【发布时间】:2012-08-0609:58:46【问题描述】:我找不到C提供的用于使用RPC的任何库。我需要在C中使用RPC。如果没有库支持,有没有办法?我正在寻找一个非阻塞的实现。【问题讨... 查看详情

手写rpc-对rpc简单的理解

RPC简单的理解其实RPC也是一种协议或者思想,在网络环境中,他需要基于某种“网络协议”,这种“网络协议”如果在OSI中,需要有支持“传输层”的功能,比如经典的TCP/IP或者是Dubbo新出的Triple协议等这些在网络中具有传输功... 查看详情

一个简单rpc框架是怎样炼成的(ii)——制定rpc消息

开局篇我们说了,RPC框架的四个核心内容RPC数据的传输。RPC消息协议RPC服务注冊RPC消息处理以下,我们先看一个普通的过程调用classClient(object):def__init__(self):self.remote=None###内部是托付给远程remote对象来获取结果。defsayHello(self):ifs... 查看详情