这是我参与「第五届青训营 」伴学笔记创作活动的第13天
本节课重点内容
- RPC是什么
- RPC需要解决什么问题
- RPC的过程是什么样的
- IDL文件是什么
- RPC的指标有哪些
本节课详细内容
RPC是什么
RPC是一个可供其他系统调用的函数,当其他系统传输正确的参数并调用该函数,则可以执行相应的功能。这就是RPC最常见的系统接口方式。
RPC是用来干什么的
解决分布式系统中,服务之间的调用问题。 远程调用时,要能够像本地调用一样方便,让调用者感知不到远程调用的逻辑。
实现RPC需要解决什么问题
- 函数映射 需要告诉服务需要调用哪个函数,因此函数有自己的ID,在做RPC时附上这个ID,并且要有一个ID和函数调度对照关系表
- 数据转换成字节流 客户端把参数先转成一个字节流,传给服务端后,再把字节流转成自己能读取的格式。
- 网络传输 需要保证网络高效稳定地传输数据。
RPC经历了哪些过程
- 客户端发起服务调用请求
- client stub可以理解为一个代理,调用方法并将参数按一定格式进行封装,通过服务提供的地址发起网络请求。
- 消息通过网络传输到服务端。
- 消息通过网络传输到服务端。
- server stub将消息进行解包、告诉服务端调用的哪个服务,参数是什么。
- 结果返回给server stub。
- sever stub把结果进行打包交给socket
- client slub从socket拿到消息。
- client stub解包消息将结果返回给client,
IDL文件是什么
IDL通过一种中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信
RPC的好处
RPC 就是为了解决不同服务之间的调用问题的一种概念,它一般会包含有 传输协议 和 序列化协议 这两个功能,但HTTP是一种协议,RPC框架可以使用 HTTP协议作为传输协议或者直接使用TCP作为传输协议,使用不同的协议一般也是为了适应不同的场景。
成熟的 RPC框架还提供好了“服务自动注册与发现”、"智能负载均衡"、“可视化的服务治理和运维”、“运行期流量调度”等功能,主要目地是让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单。