什么是RPC
RPC(Remote Procedure Call)远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A、B部署在两台不同的机器上,那么服务A如果想要调用服务B中的某个方法该怎么办呢?使用HTTP请求当然可以,但可能会比较慢而且一些优化做的并不好。RPC的出现就是为了解决这个问题。
RPC原理是什么
- 服务消费端(client)以本地调用的方式调用远程服务;
- 客户端Stub(client stub)接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体(序列化):RpcRequest;
- 客户端Stub(client stub)找到远程服务的地址,并将消息发送到服务提供段;
- 服务端Stub收到消息将消息反序列化为Java对象:RpcRequest;
- 服务端Stub根据RpcRequest中的类、方法、方法参数等信息调用本地的方法;
- 服务端Stub得到方法执行结果并将组装成能够进行网络传输的消息体:RpcResponse(序列化)发送消息至消费方;
- 客户端Stub接收到消息并将消息反序列化为Java对象:RpcResponese,这样也就得到了最终结果。
RPC解决了什么问题
RPC主要解决了:让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单。
常见的RPC框架
- RMI
- Dubbo
- gRPC
- Hessian
- Thrift