什么是RPC?

一、字面全称

RPC = Remote Procedure Call,远程过程调用 简单一句话:像调用本地方法一样,调用另一台服务器上的函数 / 接口,不用关心网络、请求、报文细节。

二、生活化类比

你本地代码想查出差城市:

  1. 不用自己写 HTTP、拼接 URL、处理 JSON、解析返回;
  2. 直接一行代码 formCheckService.getTravelCities(billId)
  3. 底层自动通过网络把参数发给后端服务,执行完把结果返回给你,看起来和调用本地方法一模一样,这就是 RPC。

三、和普通 HTTP 接口的核心区别

  1. HTTP 接口(前端常用) 基于 URL、JSON,通用、跨语言,适合浏览器、页面调用; 调用要手动写请求、处理响应、异常。
  2. RPC 接口(后端微服务内部调用,你项目在用) 专门给服务之间互相调用设计,性能更高、序列化更快、内置负载均衡、超时、重试; 有接口注解、统一入参出参规范,像本地方法直接调用。

@RpcServiceMethod 就是 RPC 注解,标识这是一个远程调用接口,serviceId: service.FormCheckService.getTravelCities 是 RPC 调用唯一标识。