这是我参与「第五届青训营 」伴学笔记创作活动的第 9 天
今天学习有关rpc的基本知识
一、理解RPC。
RPC称Remote Procedure Calls 远程函数调用。简单点理解就是调用远程不同服务器上的服务。
本地函数调用:通过函数指针,找到对应的函数进行压栈然后进栈执行的过程。
远程函数调用需要远程的调用不同服务器的api则需要面临的问题如下:
1. 函数映射 2. 数据转换成字节流 3. 网络传输数据RPC概念模型:
从概念模型可以看出一个PRC调用有两个对象一个是调用者,一个是被调用者调用者将本地将要传递的参数打包,通过网络传输给被调用者,被调用者接收到数据包,然后解包,得到对应的函数的参数,执行完函数后将返回值进行打包,同样通过网络传输将返回数据包发送给调用者,调用者解包,得到函数的返回值......
二、RPC的调用过程
IDL文件:
IDL文件是接口描述文件,使得在不同平台运行的对象和不同语言编写的程序可以画像通信,可以类比于人与人之间沟通的语言。
生成代码:
通过编译器把IDL文件转换成对应语言的静态库。
编解码::
从内存的表示到字节序列的转化称为编码,反之为解码,也常叫做,序列化和反序列化。
通信协议:
规范数据在网络中传输的内容和格式。
网络传输:
成熟的基于TCP/IP的网络库。
三、RPC的优缺点
优点:
1. 单一职责,利于分工和合作
2. 可扩展性高,资源使用率更优
3. 故障隔离,服务整体可靠性更高
缺点:
1. 网络的不稳定带来服务的不稳定
2. 请求过多导致,服务无法及时处理
3. 服务器宕机后的难以应对