[RPC]RPC简介
[RPC]RPC简介
对网上的一些介绍RPC文章的总结,侵删
参考链接:
RPC的概念
RPC(Remote Procedure Call Protocol)远程过程调用协议,可以通过网络向远程服务器请求服务,同时不用在意底层网络细节。通俗说法就是能实现调用远程服务器上的方法,但是不用关系具体怎么实现的。
- RPC是协议。是一套需要遵循的标准,具体的框架有各自的特点,只需要遵守这套标准即可,对用户来说呈现类似的效果。
- 隐藏底层网络细节。对于用户来说,只需要调用接口即可,不需要关心具体使用的TCP/UDP/HTTP等协议。
- 调用方式透明。用户只用传递参数,接收返回值即可,参数如何传递给远程服务器以及结果如何返回并不用关心。
- 跨语言能力。很明显,只要符合RPC标准,并不用关心双方具体使用什么变成语言(当然也有一些框架仅限于具体的变成语言)。
RPC的结构
图片来自https://blog.csdn.net/yjp198713/article/details/79410521
Client: 客户端,RPC的调用方,不用清楚RPC框架的实现
Server: 远程服务器,提供了一些可能被调用的方法
Stub/Proxy: 管理消息格式、网络传输协议等等
Selector/Processor: 管理服务器上提供的接口,包括注册接口,执行接口等。
Message Protocol: 消息的编解码
Transfer/Network Protocol: 管理用到的网络协议和IO模型
IDL: 接口定义语言,存在于跨语言的RPC框架之中,用于确定各种语言都能理解的消息结构和接口定义的描述形式
影响RPC框架性能的因素
网络IO模型:使用传统的阻塞时同步IO、非阻塞式同步IO或者多路IO模型
网络协议:选择TCP、UDP还是HTTP
消息的封装格式:消息的编解码难度,消息体大小,解决粘包/半包的难度
Schema和序列化:序列化/反序列化,兼容性等
服务管理方式:服务器端在高并发情况下对请求的处理方式
常见的RPC框架特点
Dubbo: 阿里开发的,基于java interface
gRPC: 谷歌开发的,使用protobuf序列化,通信使用http2
Thrift: 脸书开发的,基于tcp,对CPU敏感,适合于多语言之间进行数据交换
__EOF__

本文作者:xiaowk5516
本文链接:https://www.cnblogs.com/xiaowk/p/16223534.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
本文链接:https://www.cnblogs.com/xiaowk/p/16223534.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY