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

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


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调用图解

54ab5fed009be10dad1ab228c16acc35.png


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


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


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


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


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


相关文章
|
11月前
|
编解码 JSON 网络协议
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
Golang 语言使用标准库 net/rpc/jsonrpc 包跨语言远程调用
100 0
|
Dubbo Java 应用服务中间件
由浅入深RPC通信原理实战1
由浅入深RPC通信原理实战1
56 0
|
1月前
|
负载均衡 网络协议 小程序
SpringCloud远程调用为啥要采用HTTP,而不是RPC?
【8月更文挑战第28天】在微服务架构日益盛行的今天,SpringCloud凭借其强大的生态系统和灵活的集成能力,成为了众多企业构建微服务系统的首选框架。在微服务之间的远程调用中,一个常见的问题是选择HTTP还是RPC(远程过程调用)作为通信协议。本文将深入探讨SpringCloud为何更倾向于采用HTTP而非RPC进行远程调用。
178 5
|
1月前
|
编解码 负载均衡 监控
RPC远程调用
RPC远程调用
|
4月前
|
网络协议 Java 程序员
SpringCloud 远程调用为啥要采用HTTP,而不是RPC?
关于SpringCloud远程调用采用HTTP而非RPC。
109 0
|
3月前
|
网络协议 网络架构
RPC原理解析
RPC原理解析
66 0
|
4月前
|
Java fastjson 数据安全/隐私保护
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
【Dubbo3技术专题】「云原生微服务开发实战」 一同探索和分析研究RPC服务的底层原理和实现
141 0
|
4月前
|
Go
Go语言RPC实战:打造自己的远程调用服务
Go语言RPC实战:打造自己的远程调用服务
122 0
|
4月前
|
JSON 负载均衡 网络协议
RPC远程调用协议
RPC远程调用协议
77 0
|
4月前
|
消息中间件 Dubbo Java
Simple RPC - 01 框架原理及总体架构初探
Simple RPC - 01 框架原理及总体架构初探
76 0