为什么需要RPC

写在前面

在工作中经常会用到RPC的框架,比如dubbo,grpc等。但不知道你想过没有,为什么我们需要rpc,有socket不就够了嘛?这其实也是我一直以来的一个疑惑,带着这个疑问一起来看下本文吧!

1:正文

正常,两个独立的应用程序想要通信,只能通过socket编程的方式,但是socket编程其实是有门槛的,而且如果是要考虑到性能问题,容错等情况的话,程序将会更加复杂,门槛将会更高,所以可以说socket编程的门槛就是我们需要RPC的原因之一了。还有其他原因嘛?有的,交互协议的设计就是其中之一,什么意思呢?比如服务端提供了加法和乘法功能,则我们就需要定义一种数据格式,比如如下吧:

复制代码
{
    "type": "1", // 1加法,2乘法
    "param1": "333",
    "param2": "222" 
}

不管是服务端开发还是客户端开发都需要严格按照这个规范来开发,会明显增加编码的复杂度(潜在的问题更多),和测试的复杂度,当然如果功能更加复杂的话协议设计本身也不简单😀😀😀。

为了解决以上这些问题,大牛Bruce Jay Nelson 写了一篇论文Implementing Remote Procedure Calls,为以上的问题给出了一个完美的解决方案,这就是RPC了(所以,RPC也是有规范的),整个通信的过程如下图:

有了这个规范之后,我们就能能够像调用本地的方法一样,调用远端服务的功能了。

写在后面

参考文章列表

相关推荐
福大大架构师每日一题26 分钟前
mediamtx v1.21.2发布:UDP、JWT、RTSP、RTMP、HLS、WebRTC全面修复,稳定性与安全性再提升
网络协议·udp·webrtc
我送炭你添花29 分钟前
ASA原理与电子维修实战:前言 一路修来,一路学习
运维·网络·学习
张小姐的猫40 分钟前
【Linux】网络编程 —— 多路转接:epoll
linux·运维·网络
曹小强wxx1 小时前
Flutter 局域网设备发现:UDP 广播 + mDNS 双路合并,以及靠谱的在线判定与断线重连
物联网·网络协议·flutter
睡一觉就好了。1 小时前
linux网络编程基础
网络
花间相见1 小时前
【计算基础|网络09】TCP(上):三次握手与四次挥手
网络·网络协议·tcp/ip
wdfk_prog2 小时前
LWIP教程 08:从 `tcp_write()` 到 ACK 清队列——TCP 数据发送、窗口与回调
网络·网络协议·tcp/ip
anew___2 小时前
《从零手写操作系统 (37):网络协议栈基础——Socket接口与TCP状态机》
网络·网络协议·tcp/ip
wdfk_prog2 小时前
LWIP教程 10:从 `tcp_receive()` 到 `ooseq` / SACK——TCP 乱序、重组与选择确认
网络·数据库·tcp/ip
砚凝霜2 小时前
【软考信息安全】第十七章 网络安全应急响应概述与事件处理流程
网络·安全·web安全