快速弄懂RPC
- 常见的远程通信方式
- 远程调用
- RPC协议
- RPC的运用场景和优势
常见的远程通信方式
基于REST架构的HTTP协议以及基于RPC协议的RPC框架。
远程调用
是指跨进程的功能调用。
跨进程可以理解为一个计算机节点的多个进程或者多个计算机节点的多个进程。
RPC协议
远程过程调用
他是一种通过网络从远程计算机程序上请求服务,而不需要去了解底层网络技术的一种协议。凡是该协议的框架,我们都可以称为RPC框架。
通俗的理解就是A计算机提供一个服务,B计算机可以通过调用本地服务一样去调用A计算机提供的一个服务。这就是RPC协议的一个功能。
要实现RPC,需要通过网络进行数据传输,并且对调用的过程进行封装。
现在比较流行的RPC框架都会采用TCP协议作为底层传输协议。当然其他协议也是可以的,比如UDP。
RPC协议强调的是过程调用,调用的过程对用户而言是透明的,用户不需要关心调用的细节。可以像调用本地服务一样去调用远程服务。
一个完整的RPC协议包含了四个核心组件,分别是Client、Server、Client Stub以及Server Stub。
第一个客户端Client表示服务的调用方,第二个服务端Server是真正服务提供者,第三个是客户端存根叫Client Stub,存放服务端的地址信息,再将客户端的请求参数打包成网络消息,然后通过网络远程发送给服务方。第四个是服务端的存根叫Server Stub,接收客户端发送过来的消息,将消息进行反序列化,并调用本地方法。
目前比较流行的开源RPC框架,有Google的gRPC, facebook的Thrift,阿里巴巴的Dubbo。
RPC的运用场景和优势
在开发电商系统的时候,随着业务越来越复杂,走分布式架构这个方向是绝大部分的互联网企业必然的一个选择。
分布式架构落地的里程碑应该是阿里的去IOE运动的成功,让互联网企业看到如何利用更少的软硬件成本来支撑海量的用户。分布式架构的核心就是利用多个普通的计算机节点组成一个庞大的复杂计算网络,提供一个高性能以及高并发的能力支撑。
在分布式架构中,原本单体应用被拆分成多个独立部署的服务,分布在计算机网络上。这些服务必然需要网络进行数据的通信和交付。而RPC框架就是解决在分布式架构中的各个业务服务彼此的网络通信的一个方案。
一般来说,RPC服务主要是针对大型的企业,也就是说当我们的业务复杂度以及用户量都比较高的时候,需要对服务进行解耦,从而达到部署性强、部署灵活的一个目的。
一般情况下,市面上的开源RPC框架除了提供基础的远程通信功能以外,还会在性能的消耗上、传输效率上、服务治理等方面做出很多的一些优化和设计。比如说阿里开源的RPC框架Dubbo就提供了非常丰富的服务治理的一些功能。
参考资料:【Java面试】白嫖福利,5分钟带你快速弄懂RPC!