📅  最后修改于: 2023-12-03 14:47:07.547000             🧑  作者: Mango
RPC(Remote Procedure Call)即远程过程调用,是一种进程间通信(IPC)方式。通过RPC消息协议,一个程序可以请求在另一个机器上的服务,就像请求本地服务一样。
提供像本地调用一样的调用方式,让客户端不需要关注服务的具体位置以及通信细节。
客户端无需知道服务的实现细节,只需要知道服务的作用和使用方式。
RPC消息协议具有可扩展性,可以不断增加新的服务实现。
客户端调用本地stub
stub打包调用信息并发送给服务端
服务端收到信息后进行解包,并调用本地服务
本地服务执行后返回结果给服务端
服务端将结果打包并发送给客户端
客户端收到结果后进行解包
客户端按需使用结果
简化网络通信过程,提高调用效率
封装底层通信细节,实现网络透明
实现服务接口与实现的分离
可以方便地进行服务远程化、集中控制和管理,提供系统的整体性能
复杂度较高,需要进行细节把控
远程调用的性能相对本地调用会有所下降
gRPC: Google开源的高性能、跨语言的RPC框架。使用protobuf作为序列化和反序列化工具。
Dubbo: 阿里巴巴开源的高性能、轻量级的RPC框架。支持功能集成、灰度发布、负载均衡和容错机制等。
代码片段:
# RPC消息协议
## 什么是RPC消息协议?
RPC(Remote Procedure Call)即远程过程调用,是一种进程间通信(IPC)方式。通过RPC消息协议,一个程序可以请求在另一个机器上的服务,就像请求本地服务一样。
## RPC消息协议的特点:
- 提供像本地调用一样的调用方式,让客户端不需要关注服务的具体位置以及通信细节。
- 客户端无需知道服务的实现细节,只需要知道服务的作用和使用方式。
- RPC消息协议具有可扩展性,可以不断增加新的服务实现。
## RPC消息协议的工作原理:
1. 客户端调用本地stub
2. stub打包调用信息并发送给服务端
3. 服务端收到信息后进行解包,并调用本地服务
4. 本地服务执行后返回结果给服务端
5. 服务端将结果打包并发送给客户端
6. 客户端收到结果后进行解包
7. 客户端按需使用结果
## RPC消息协议的优点:
- 简化网络通信过程,提高调用效率
- 封装底层通信细节,实现网络透明
- 实现服务接口与实现的分离
- 可以方便地进行服务远程化、集中控制和管理,提供系统的整体性能
## RPC消息协议的缺点:
- 复杂度较高,需要进行细节把控
- 远程调用的性能相对本地调用会有所下降
## 常见的RPC消息协议
- gRPC: Google开源的高性能、跨语言的RPC框架。使用protobuf作为序列化和反序列化工具。
- Dubbo: 阿里巴巴开源的高性能、轻量级的RPC框架。支持功能集成、灰度发布、负载均衡和容错机制等。
## 参考资料
- [RPC (远程过程调用)](https://www.runoob.com/rpc/rpc-calls.html)
- [Java实现RPC消息协议](https://www.jianshu.com/p/8a5bc391c26e)