365报价官网

一文搞定理解RPC

发布时间 2025-07-27 04:18:06 作者 admin 阅读 1200

前言RPC概念RPC协议RPC组成RPC协议RPC框架RPC的优点RPC与HTTP的区别

前言

RPC的概念相信很多软件从业人员或多或少都接触过,从开发到测试都可能需要跟它打交道。 但是对于为什么要用RPC?RPC的优点是什么?RPC是什么原理?它跟HTTP有什么不同?相信并不是每个人都比较熟悉。 那么今天我们就来了解下到底什么是RPC?

RPC概念

如果你百度过RPC,那么你一定看过RPC的百科介绍。RPC(Remote Procedure Call)即远程过程调用。 说真的百科里讲的也只有概念,没有一点可以帮助你理解RPC的细节内容。所以关于概念这里要多讲讲其它的辅助内容。

RPC协议

通常我们所说的RPC其实是说的RPC协议,即一种专门为服务间远程调用而设计的一种通用协议。 该协议基于其它已有的传输协议,规定通信方式为C/S架构;并且在代码开发过程中要屏蔽掉底层通信细节, 让开发者像调用本地方法一样,调用远程服务。

RPC组成

基于RPC协议内容的说明,再来看看RPC的主要组成内容:

确定一个已有的传输协议(TCP\UDP\HTTP\Websocket等)

一个客户端通信实现模块(即客户端stub)

一个服务端通信实现模块(即服务端stub)

选择一个RPC内容协议(如:json、xml、protobuf等)

这是网络上的一张RPC架构组成图,正好包含了上述列举的几项内容。

RPC

这张图中的client就是我们要开发的功能代码。如果我们想调用远程服务的话,可以直接编写类似本地方法的代码;如:

代码语言:javascript

复制

Calculator.add(1, 2)

然鹅,这里并不是真的调用了本地的add实现方法,而是调用了客户端stub模块; 而剩下的事情就交给客户端stub,它会负责与服务端的stub进行通信,使用约定的传输协议,内容协议等; 最后完成远程调用并返回结果给client模块。

RPC协议

RPC协议是一个开放的协议,不像TCP和HTTP一样规定了统一的标准,任意的使用方都只能使用相同的规则。 RPC协议可以有很多种实现,只要通信双方约定好就行了。目前市面上的RPC协议实现就有很多种:

dubbo

rmi

hessian

webserivice

http

thrift

memcached

redis

rest

jsonrpc

motan

yar

grpc

restful

这些协议可以适用于不同的业务场景,比如:dubbo协议适合高频的小数据量调用,hessian则适合文件传输, 而jsonrpc、grpc则适合跨语言的应用。这些协议也与TCP等协议类似,都规定了自己的头信息和body部分, 用于约定通信的规则。

RPC框架

不使用RPC框架能不能进行RPC的调用呢?答案当然是可以的!那为什么还需要RPC框架呢?因为有了RPC框架 我们在使用RPC调用时,就会更加的方便了。比如:RPC框架会帮助我们做这些事情:

客户端stub、服务端stub的实现

通信内容的序列化与反序列化实现(json、xml、protobuf)

服务的注册与发现

服务方负载均衡

并发性能调优

有了RPC框架之后,就不需要再单独的为项目开发这些基础功能了,这样开发具有RPC功能的客户端、 服务端都跟开发普通本地模块一样方便。

RPC的优点

说了这么多,那么RPC到底有什么优点呢?其实讲RPC的优点要结合RPC的使用场景,否则RPC可能就无法体现它的优势。 通常而言RPC的特点如下:

调用远程服务像调用本地方法一样方便

多种传输协议可以选择

为系统提供较强可扩展性、高可用性、维护性

RPC与HTTP的区别

在上面的RPC协议中,也许你已经发现了有HTTP协议。是的没错!就是HTTP协议。 所以RPC和HTTP本质上是面向不同场景的产物。而RPC也可以基于HTTP协议来实现信息内容的传输。 除此之外,RPC和HTTP还有如下典型的区别:

RPC可以基于TCP、HTTP、WebStock等作为基础传输协议,而HTTP只能是http协议

RPC使用二进制来传输信息内容(体积更小),HTTP则使用文本格式

RPC的二进制序列化效率高,HTTP的文本序列化(如json)则耗时多

RPC基于TCP时可以网络IO多路复用,HTTP不能很好的支持

RPC可以很方便支持服务治理,而HTTP则需要单独实现支持

简而言之,就是RPC在远程调用的场景下,比HTTP更高效,更简洁、附加特性更强大,更适合分布式和微服务的场景。

相关推荐

飔的部首“飔”字的偏旁部首

飔的部首“飔”字的偏旁部首“飔”的偏旁部首飔字的偏旁部首是:风 风字旁。 繁体偏旁:(颸)偏旁部首“風部”。 造字方法:形声 结构类

07-06 分类 365bet提款规则

雅思口语丨“包邮”用英语怎么说?

可以这么说,现在咱们国家的网上购物基本上 不存在还要运费的情况吧, 当然还有及其个别地方, 大部分地区“包邮”是必须的! 今天的知识

07-04 分类 365报价官网

擿抉的解释及意思

1.亦作“擿觖”。 2.挑剔。 擿觖: 见“擿抉”。 挑剔: ①在细节上过分严格地指摘:你这人怎么那样挑剔?! ②(tiǎo-)拨弄剔除:他照例抽

07-07 分类 beat365手机版客户端ios

7号干电池电压容量(7号电池电压范围)

本文目录一览: 1、7号电池是几伏 2、7号电池是多少伏 3、7号电池多少v算没电 7号电池是几伏 1、号电池通常是5伏。7号电池,也被称为AAA电池,

06-29 分类 365报价官网

足球14场分析推荐 深度解析与精准预测

在足球界,每一场赛事都充满了不可预知性,但通过对历史数据、球队状态以及关键球员表现等因素的综合考量,我们可以对即将进行的比赛做

07-12 分类 beat365手机版客户端ios