1. 什么是RPC
RPC(Remote Procedure Call)意为远程过程调用,在一般的印象中,就是将一个服务调用封装在一个本地方法中,让调用者像使用本地方法一样调用服务,对其屏蔽实现细节。
而具体的实现是通过调用方和服务方的一套约定,基于TCP长连接进行数据交互达成。
服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。
2. 为什么要使用RPC?
本地函数调用时,函数在同一个内存空间,可以很好的寻址。
若改为分布式应用,将某一类的工具函数单独放在一个服务中,并在其他服务中调用这个工具函数。
而RPC可以做到像本地调用那样方便地调用远程服务。
什么场合下需要RPC:微服务、分布式架构、系统间调用。
3. RPC模式图解
4. RPC的三个特点
网络传输: Socket、netty
数据序列化: Protobuf
接口语法
5. 主流RPC框架
支持多语言的 RPC 框架,比较成熟的有 Google 的 gRPC、Apache(Facebook)的 Thrift;
只支持特定语言的 RPC 框架,例如新浪微博的 Motan;
支持服务治理等服务化特性的分布式服务框架,其底层内核仍然是 RPC 框架, 例如阿里的 Dubbo。