一文就读懂rpc远程调用核心原理

author author     2022-12-06     661

关键词:


rpc核心原理

什么是rpc?

rpc的全称是Remote Procedure Call,即远程过程调用,是分布式系统的常用通信方法。 Remote,简单来说的话就是两个不同的服务之间,两个服务肯定是两个不同的进程。因此,我们就从跨进程进行访问的角度去理解就行了。 Procedure,意思是一串可执行的代码,我们写Java的方法,就是一段课程行的代码。 Call,即调用,调用的就是跨了进程的方法。

综上,rpc就是跨进程去调用一个方法代码。举一个例子,你从QQ打开QQ空间,会弹出浏览器,自动访问你的QQ空间。这就是跨进程访问打开浏览器的方法,也属于rpc。

跨进程访问技术可不仅仅是我们现在知道的那些rpc框架,就连微软的COM组件本身也是一个RPC技术,在早期的文档中,COM组件的调用就被称为RPC。

因此,RPC只是属于进程交互形式的一种。

跨进程交互形式

没了解rpc之前,我们还有很多跨进程交互形式。

1.写一个controller,方法返回Resultful风格的json数据。这是利用http协议实施的跨进程交互。

2.创建一个WebService接口,用soap协议进行xml传输。

3.基于DB做数据交换,这个就不用多说了吧。(异步交互)

4.基于MQ做消息队列,MQ就是一个消息中间件,也可以实现跨进程交互。

看吧,这些交互形式你肯定不陌生。而rpc的底层也是用tcp或者http协议进行数据传输,我们用socket就能实现。

rpc调用图解

一文就读懂RPC远程调用核心原理_跨进程

服务集成 RPC 后,服务(这里的服务就是图中的 Provider,服务提供者)启动后会通过 Register(注册)模块,把服务的唯一 ID 和 IP 地址,端口信息等注册到 RPC 框架注册中心(图中的 Registry 部分)。

当调用者(Consumer)想要调用服务的时候,通过 Provider 注册时的的服务唯一 ID 去注册中心查找在线可供调用的服务,返回一个 IP 列表(3.notify 部分)。

第三步 Consumer 根据一定的策略,比如随机 or 轮训从 Registry 返回的可用 IP 列表真正调用服务(4.invoke)。

最后是统计功能,RPC 框架都提供监控功能,监控服务健康状况,控制服务线上扩展和上下线(5.count)

rpc与其他几种多跨进程交互形式不一样的点在于,rpc可以像调用本地方法那样调用其他进程的方法,这一点是其他调用形式不具备的。

 

rpc核心原理

了解RPCRPC全称RemoteProcedureCall,即远程过程调用.其中远程需要跨机器,跨机器需要可靠的网络编程技术实现,无论是Java原生的网络编程模型还是Netty都会让代码中出现大量与业务无关的网络编程代码,RPC技术则是为了解决这个问题的.... 查看详情

分布式架构核心rpc原理

...向面向服务的分布式架构转变。RPC(RemoteProcedureCallProtocol远程过程调用)是分布式架构的核心,按响应方式分如下两种:同步调用:客户端调用服务方方法,等待直到服务方返回结果或者超时,再继续自己的操作异步调用:客户... 查看详情

动态代理-rpc实现核心原理(代码片段)

...拦截,以便于在方法调用前后,增加处理逻辑。1远程调用的魔法使用RPC,一般先找服务提供方要接口,通过Maven或其他工具把接口依赖到我们项目。编写业务逻辑时,若要调用提供方的接口,只需通过依赖... 查看详情

一文读懂线程池的工作原理(故事白话文)(代码片段)

前言本文以程序员做需求的例子,比喻线程池的工作过程。以故事白话的方式展开,跟大家阐述线程池工作原理,以方便大家更好理解线程池,谢谢阅读哈~什么是线程池?什么是核心线程?什么是阻塞队列?什么是非核心线程... 查看详情

一文看懂网卡驱动原理及移植方法

1、网卡设备驱动原理1.1层次结构Linux系统对网络设备驱动定义了4个层次,这4个层次有到下分为:1、网络协议接口层:实现统一的数据包收发的协议。该层主要负责调用​​dev_queue_xmit()​​​函数发送数据,​​netif_rx()​​​函... 查看详情

rpc的实现与远程调用的实现机制

本文主要是RPC的实现代码总结:1、RPC的Server端实现2、RPC的Client端实现3、RPC原理分析注意:核心jar包使用的是Hadoop中的RPCjar包;1、RPC的Server实现1)创建RPCServer工程:LoginServiceInterface.javapackagecn.rpc.demo;public 查看详情

手写简易版rpc框架,理解远程过程调用原理(代码片段)

一、RPC基础知识1.1、RPC是什么RPC【RemoteProcedureCall】是指远程过程调用,是一种进程间通信方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(网络的另一台机器上)的过程或函数,而... 查看详情

手写简易版rpc框架,理解远程过程调用原理(代码片段)

一、RPC基础知识1.1、RPC是什么RPC【RemoteProcedureCall】是指远程过程调用,是一种进程间通信方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(网络的另一台机器上)的过程或函数,而... 查看详情

一文弄懂什么是rpc

本文来说下rpc相关的知识与概念文章目录概述什么是rpcRPC架构设计RPC调用流程流行的RPC框架gRPCThriftDubborpc调用与http调用本文小结概述远程过程调用似乎是一种有用的范式,用于在以高级语言编写的程序之间提供跨网络的通信... 查看详情

dubbo分布式服务框架-study1

本文参考“如何给老婆解释RPC”一文进行的。。。1.首先了解下dubbo:  dubbo是一款高性能、轻量级的开源javaRPC服务框架(RPC即远程过程调用,具体解释见:https://www.jianshu.com/p/2accc2840a1b)。它提供了三大核心能力:面向... 查看详情

rpc的实现与远程调用的实现机制

本文主要是RPC的实现代码总结:1、RPC的Server端实现2、RPC的Client端实现3、RPC原理分析注意:核心jar包使用的是Hadoop中的RPCjar包;1、RPC的Server实现1)创建RPCServer工程:LoginServiceInterface.javapackagecn.rpc.demo;publicinterf... 查看详情

夯实java基础系列23:一文读懂继承封装多态的底层实现原理(代码片段)

本系列文章将整理到我在GitHub上的《Java面试指南》仓库,更多精彩内容请到我的仓库里查看https://github.com/h2pl/Java-Tutorial喜欢的话麻烦点下Star哈文章首发于我的个人博客:www.how2playlife.com从JVM结构开始谈多态Java对于方法调用动态... 查看详情

xxl-rpc原理分析

背景RPC(RemoteProcedureCallProtocol,远程过程调用),调用远程服务就像调用本地服务,在提供远程调用能力时不损失本地调用的语义简洁性;一般公司,尤其是大型互联网公司内部系统由上千上万个服务组成,不同的服务部署在不... 查看详情

rpc原理及实现

...目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC框架需提供一种透明调用机制让使用者不必显式的区分本地调用和远程调用。2调用分类RPC调用分以下两... 查看详情

rpc通信原理

什么是RPCRPC(RemoteProcedureCallProtocol)远程过程调用协议。通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算上的某个过程或函数,就像调用本地应用程序中的一样。正式的描述是:一种通过网络从远程计算... 查看详情

rpc原理及rpc实例分析

...信相关的代码,不仅负责而且容易出错RPC(RemoteProcedureCall)远程过程调用能让我们像调用本地服务一样调用远程服务,而让调用方对网络通信这些细节透明常见的RPC框架:阿里巴巴的hsf、dubboFacebook的thriftGoogle的grpcTwitter的fi 查看详情

thrift原理浅析

RPC原理RPC(RemoteProcedureCall )远程调用过程。1.定义了一个接口文件,描述了对象,对象成员,接口方法等一系列信息。2.通过RPC框架提供的编译器,将接口说明文件编译成对应的语言文件。2.在客户端和服务端分别引用RPC编译器生... 查看详情

rpc原理解析

1.RPC原理解析1.1什么是RPCRPC(RemoteProcedureCallProtocol)——远程过程调用协议,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。RPC协议假定某些传输协议的存在,如TCP/IP或UDP,为通信程序之间携... 查看详情