这是我参与「第五届青训营 」伴学笔记创作活动的第 12 天.
RPC的基本概念
- RPC(Remote Procedure Call Protocol)远程过程调用协议。一个通俗的描述是:客户端在不知道调用细节的情况下,调用存在于远程计算机上的某个对象,就像调用本地应用程序中的对象一样。比较正式的描述是:一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。
- RPC 是指计算机 A 上的进程,调用另外一台计算机 B 上的进程,其中 A 上的调用进程被挂起,而 B 上的被调用进程开始执行,当值返回给 A 时,A 进程继续执行。调用方可以通过使用参数将信息传送给被调用方,而后可以通过传回的结果得到信息。而这一过程,对于开发人员来说是透明的。
一次RPC的完整过程
- IDL (Interface description language)文件 IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信。(约定调用规范)
- 生成代码通过编译器工具把IDL文件转换成语言对应的静态库。(具体调用的时候用户代码需要依赖生成代码,所以可以把用户代码和生成代码看做一个整体)
- 编解码从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做序列化和反序列化。
- 通信协议规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据。
- 网络传输通常基于成熟的网络库走TCP/UDP传输。
影响RPC性能的因素
- 所支持的网络IO模型
- 基于的网络协议
- 选择的消息封装格式
- 实现的服务处理管理方式