rpc的通信流程

rpc能实现调用远程方法就跟调用本地(同一个项目中的方法)一样,发起调用请求的那一方叫做服务调用方 ,被调用的一方叫做服务提供方

接下来就和大家分享一下调用过程的流程和细节。

传输协议

既然是远程调用那肯定就需要通过网络来传输数据,并且 rpc 常用于业务系统之间的数据交互,需要保证其可靠性,所以 rpc 一般默认采用 TCP 来传输。事实上,我们常用的 HTTP 协议也是建立在 TCP 之上的。

封装一个可用的协议

选择了合适的传输层协议之后,我们需要基于此建立一个我们自己的通用协议,和http一样需要封装自己的应用层协议。

序列化

网络传输的数据必须是二进制数据,但调用方请求的出入参数都是对象。对象是肯定没法直接在网络中传输的,需要提前把它转成可传输的二进制,并且要求转换算法是可逆的,这个过程我们一般叫做"序列化"。

压缩

如果我们觉得序列化后的字节数组体积比较大,我们还可以对他进行压缩,压缩后的字节数组体积更小,能在传输的过程中更加节省带宽和内存。

上图就是整个rpc的调用过程。

那上述几个流程就组成了一个完整的 rpc 吗?

还不太算一个完整的rpc,因为我们一般都是面向对象编程,所以我们要使用面向对象的思想,使用封装,让调用者不去关注底层细节,只需要关注业务就可以,所以最终还需要通过动态代理将这些API封装并进行功能增强,这就成为了一个rpc。

相关推荐
AlexMercer10123 分钟前
【Python】列表
开发语言·网络·windows·笔记·python
会讲英语的码农5 分钟前
【计算机网络】第一章 概要
运维·服务器·网络协议
w_t_y_y6 分钟前
Websocket
网络·websocket·网络协议
小黑子不会打篮球8 分钟前
CTF之unseping
网络·web安全·网络安全
故事讲予风听9 分钟前
iptables与firewalld
linux·服务器·网络·网络安全
kinlon.liu3 小时前
Web应用安全实用建议
前端·网络·网络协议·安全·centos
威斯盾科技4 小时前
电力设备巡检管理系统
运维·网络·信息可视化
念晚9174 小时前
Linux——测网速例子,在网站查看生成的图片
linux·运维·服务器·网络·数据库
yaoxin5211235 小时前
第四十七章 解决 IRIS 中的 SOAP 问题 - Web 网关中的 HTTP 跟踪
网络·网络协议·http
大众生活5 小时前
边界无限陈佩文:红蓝对抗安全演练常态化的各方分析
网络·安全·web安全