RPC框架(基本概念篇)(day15)| 青训营笔记

74 阅读2分钟

这是我参与「第五届青训营」伴学笔记创作活动的第15天

image.png

本文基于字节青训营+上网自学的内容。

1.定义

RPC是远程过程调用(Remote Procedure Call)。 RPC 的主要功能目标是让构建分布式计算(应用)更容易,在提供强大的远程调用能力时不损失本地调用的语义简洁性。为实现该目标,RPC 框架需提供一种透明调用机制,让使用者不必显式的区分本地调用和远程调用。

2.RPC概念模型

1984年Nelson发表了论文《Implementing Remote Procedure Calls》,其中提出了RPC的过程由5个模型组成: User、User-Stub、RPC-Runtime、Server-Stub、Server

3.一次RPC的完整过程

IDL (Interface description language)文件
IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信(相比本地调用,远程调用不知道对方的方法和参数,IDL文件就起到这样一个作用,描述一下方法是什么)
生成代码
通过编译器工具把IDL文件转换成语言对应的静态库(双方依赖的IDL相同,但是双方使用的语言等不一定相同,要根据描述来生成对应代码)
编解码
从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做序列化和反序列化
通信协议
规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据(语言不同的问题靠利用IDL编解码解决,通讯的问题就靠协议解决)
网络传输
通常基于成熟的网络库走TCP/UDP传输

4.RPC的好处

1.单一职责,有利于分工协作和运维开发(各个环节都是独立的)
2.可扩展性强,资源使用率更优(不行就加服务器)
3.故障隔离,服务的整体可靠性更高(有问题很快定位到模块并隔离)

5.RPC的问题

1.服务宕机,对方应该如何处理?
2.在调用过程中发生网络异常,如何保证消息的可达性?
3.请求量突增导致服务无法及时处理,有哪些应对措施?

参考博客

什么是RPC?原理是什么?如何实现一个 RPC 框架? - 知乎 (zhihu.com)