RPC
全称:remote procedure call 远程过程调用
简介:像调用本地方法一样调用远程方法
使用场景:大型项目
使用目的:
优势:
RPC架构:
原理:动态代理 / 代码生成…
三要素:服务注册中心,服务提供者,服务消费者
流程:
先来说结论。我认为在一个大型系统内部适合使用RPC,而对外提供服务的时候,应该使用HTTP接口。
其实这么讲也不是特别准确,因为RPC是一种技术,而http是协议,也有用http实现的RPC。我这里泛指的是以服务的方式暴露给外部还是以接口的方式暴露给外部。
RPC出现的核心原因是分布式系统。由于业务越来越复杂,需要将业务拆成多个系统,在这种情况下如果使用http请求去调用其他系统的服务会显得特别麻烦,所以为了像本地方法调用一样,去发起远程调用,让使用者感知不到远程调用的过程,RPC应运而生。所以本质上来说,RPC只是在http外包了一层,使用了代理模式,在代理模式内部通过httpClient去实现远程过程调用。当然为了给请求瘦身,后续主流的rpc是基于自定义的tcp协议而不是http协议了。
除此之外,RPC还是是一套包含了负载均衡、服务治理、熔断限流等分布式场景下常见问题解决方案的框架,承担了http接口场景下网关的很多作用。