1.RPC定义和需要解决的问题
RPC远程函数调用(RPC-Remote Procedure Calls)
- 函数映射
2.数据转换成字节流
3.网络传输
2.一次 RPC 的完整过程
1.IDL ( Interface description language )文件, IDL 通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
2.生成代码, 通过编译器工具把 IDL 文件转换成语言对应的静态库
3.编解码, 从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做序列化和反序列化
4.通信协议, 规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据
5.网络传输, 通常基于成熟的网络库走 TCP/UDP 传输
3.RPC 的好处和问题
RPC 的好处
1.单一职责,有利于分工协作和运维开发
2.可扩展性强,资源使用率更优
3.故障隔离,月服务的整体可靠性更高
RPC的问题
1.服务宕机,对方应该如何处理?
2.在调用过程中发生网络异常,如何保证消息的可达性?
3.请求量突增导致服务无法及时处理,有哪些应对措施?
将由RPC框架解决
4.分层设计
应用层
主要负责用户业务逻辑的实现。应用程序需要通过网络调用远程服务时,它会向下层发起RPC请求。应用层通常包括:
- 服务接口的定义(通常是API的设计)。
- 客户端向服务器发送请求的逻辑。
传输层
传输层负责将应用层传递的请求数据打包并通过底层网络传输。
常见的传输层协议有:
- TCP:面向连接的、可靠的传输协议。
- UDP:无连接的、不可靠的传输协议(适用于一些对延迟要求较高的场景)。
- HTTP/HTTPS:基于Web的协议,很多现代RPC实现(如gRPC)也是基于HTTP/2的。