Java面试——RPC协议

涉及到分布式方面知识的话,RPC协议是逃不开的,所以在此记录一下RPC协议。

什么是RPC协议

RPC协议(Remote Procedure Call)远程过程调用,简单的来说:RPC协议是一种通过网络从远程计算机程序获取服务的协议

通俗理解:A计算机提供一个服务,B计算机可以像使用本地服务一样去调用(或使用)A计算机的服务。

具体来说RPC协议可以分成4个角色Client、Client stub、Server、Server Stub。

Client是调用方、Server是服务的提供方

Client调用Server中的服务。

Client Stub表示客户端存根,专门用来存储服务端服务的地方

Server Stub表示服务端存根,专门用来接收客户端发送过来的消息,然后解析消息内容(反序列化)。

RPC协议与HTTP协议的区别?

功能特性上

HTTP:是属于应用层的超文本传输协议,是万维网数据通信的基础,主要在网页端和服务端的数据传输

RPC:是远程过程调用协议,他的定位是实现不同计算机应用的数据通信,屏蔽通信层的复杂性。

原理实现上

HTTP:是一个已经实现并成熟的应用层协议,其有完善的报文格式(即请求行、请求头、请求体)

RPC:只是一种协议规范,他没有具体的实现,只要按照RPC规范实现,都可以。

最后这俩其实都是应用层协议,并且基本上都是基于TCP协议(HTTP3.0不是TCP),同时RPC是一种标准协议,所以实现方式比较多样化,有RPC也可以用HTTP来实现(例如:gRPC、OpenFegin)。

相关推荐
小王不爱笑1322 分钟前
SpringBoot 自动装配深度解析:从底层原理到自定义 starter 实战(含源码断点调试)
java·spring boot·mybatis
森林里的程序猿猿5 分钟前
Spring Aop底层源码实现(一)
java·后端·spring
xlp666hub7 分钟前
【Linux驱动实战】:字符设备驱动之内核态与用户态数据交互
linux·面试
weixin_4563216435 分钟前
Java架构设计:Redis持久化方案整合实战
java·开发语言·redis
攒了一袋星辰1 小时前
SequenceGenerator高并发有序顺序号生成中间件 - 架构设计文档
java·后端·spring·中间件·架构·kafka·maven
lzp07911 小时前
SpringBoot3.3.0集成Knife4j4.5.0实战
java
Mr_Carl1 小时前
我用 Trae 花了一周,从零打造了一个 AI 面试官🚀
面试·trae·vibecoding
茶杯梦轩1 小时前
面试常问:DNS,CDN,Cookie,Session和Token详解及实战避坑指南
后端·网络协议·面试
张元清1 小时前
React Hooks 性能优化:如何避免不必要的重新渲染
前端·javascript·面试
Memory_荒年1 小时前
TiDB:当 MySQL 遇上分布式,生了个“超级混血儿”
java·数据库·后端