这是我参与「第三届青训营 -后端场」笔记创作活动的的第5篇笔记
RPC是什么
RPC(Remote Procedure Call)远程过程调用协议,一种通过网络从远程计算机上请求服务,而不需要了解底层网络技术的协议。RPC它假定某些协议的存在,例如TPC/UDP等,为通信程序之间携带信息数据。在OSI网络七层模型中,RPC跨越了传输层和应用层,RPC使得开发,包括网络分布式多程序在内的应用程序更加容易。
RPC的三个过程
- 通讯协议比如:你需要找人在国外干活,那么你可以直接飞过去或者打电话或者通过互联网的形式,去找人,这个找人的过程就是通讯协
- 寻址 既然要找人干活,肯定要知道地址在哪,飞过去需要找到详细地址,打电话需要知道电话号码,互联网需要知道IP是多少
- 数据序列化就是说,语言需要互通,才能够让别人干活,之间需要一个大家都懂的语言去交流
RPC与其他协议的区别
RMI远程方法调用是RPC的一种具体实现,webservice、restfull都是RPC,只是消息的组织形式、消息协议不同
远程函数调用(RPC - Remote Promote Proceduce Calls)
远程函数调用需要解决的问题:
- 函数映射
- 数据转换成字节流
- 网络传输
RPC相关知识
- IDL(Interface description language)文件:IDL通过一中中立的方式来描述接口,使得在不同平台上运行的对象和用不同语言编写的程序可以相互通信。
- 生成代码:通过编译器工具把IDL文件转换成语言对应的静态库。
- 编解码:从内存中表示到字节序列的转换称为编码,反之为解码,也常叫做系列化和反序列化。
- 通信协议:规范了数据在网络中的传输内容和格式。除必须的请求/响应数据外,通常还会包含额外的元数据。
- 网络传输:通常基于成熟的网络库走TCP/UDP传输。
RPC的过程
RPC的关键指标
- 稳定性
- 保障策略:熔断、限流、超时控制
- 请求成功率:负载均衡、重试
- 长尾请求:Backup Request
- 注册中间件
- 易用性
- 开箱即用 合理的默认参数选项,丰富的文档
- 周边工具 生成代码工具,脚手架工具
- 扩展性
- 观测性
- Log 日志
- Metric 监控
- Tracing 链式跟踪
- 内置观测性服务
- 高性能
- 目标:高吞吐、低延迟
- 手段:连接池、多路复用、高性能编解码协议、高性能网络库