为什么需要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也是有规范的),整个通信的过程如下图:

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

写在后面

参考文章列表

相关推荐
柒.梧.4 小时前
吃透HTTP及相关协议核心区别,从基础到进阶全覆盖
网络·网络协议·http
forAllforMe5 小时前
用STM32+LAN9252, 生成一个etherCAT 从机系统,实现数据采集功能
网络·stm32·嵌入式硬件
程序员小寒5 小时前
前端性能优化之白屏、卡顿指标和网络环境采集篇
前端·javascript·网络·性能优化
wal13145206 小时前
OpenClaw教程(九)—— 彻底告别!OpenClaw 卸载不残留指南
前端·网络·人工智能·chrome·安全·openclaw
Godspeed Zhao6 小时前
现代智能汽车系统——SOME/IP与DDS0
网络协议·tcp/ip·汽车
白藏y7 小时前
【协议】SSE协议和WebSocket协议
网络·websocket·网络协议
运维行者_7 小时前
网络监控方案从零开始 -- 企业级完整指南
大数据·运维·服务器·网络·数据库·人工智能·自动化
朱一头zcy8 小时前
简单理解NAT(网络地址转换)模式和桥接模式
网络·桥接模式·nat
加农炮手Jinx8 小时前
Flutter 三方库 cloudflare 鸿蒙云边协同分发流适配精讲:直连全球高速存储网关阵列无缝吞吐海量动静态画像资源,构筑大吞吐业务级网络负载安全分流-适配鸿蒙 HarmonyOS ohos
网络·flutter·harmonyos
坚定的共产主义生产设备永不宕机9 小时前
动态路由协议
网络