这么回答面试通过率提高60%,谈谈你对RPC框架的理解

网站建设4年前发布
13 0 0

 有位工作6年的小伙伴,面试的时候被问到这样一道题,说谈你对RPC的理解。在分布式微服务架构中,远程通信是最基本的需求。常见的远程通信方式有基于REST架构的HTTP协议,以及基于RPC协议的RPC框架。今天,我给大家分享一下我的理解。,首先,给大家介绍一下什么是远程调用。很多小伙伴会误以为,远程调用是指跨越物理距离上的远程。实际上,准确地说,远程调用是指跨进程的功能调用。,20230306013510a65d756410d9df03575581579dc8e70960a2f9880,跨进程,可以理解为同一台计算上的多个进程、多个JVM或者多台计算之间的进程。,那什么是RPC呢?RPC的全称是Remote Procedure Call,翻译过来叫远程过程调用。,20230306013511d82f83b5170bb8bb5d26725a000788837fa587477,它是一种通过网络从远程计算机程序上获取服务,而不需要了解代码网络技术实现的一种协议。凡是符合这种协议的框架,都可以称之为RPC框架。,20230306013511a7da33c9482b5e59180706987c6aa906303951126,通俗理解就是,A计算机提供一个服务,B计算机可以像调用本地服务一样去调用A计算机提供的服务,这就是RPC的主要作用。,其实,RPC的应用在很早之前就出现了。在40年以前,也就是1981年的时候,由一家叫做Nelson的公司提出,并把它应用到了分布式系统之间的通信协议。,要实现RPC,需要通过网络进行数据传输,并且对调用的过程进行封装。现在比较流行的RPC框架一般都是采用TCP协议作为底层的传输协议。当然,其他协议也是可以的,比如UDP。,RPC协议,强调的是过程调用,调用的过程对于用户来说是完全透明的,用户不需要关心调用细节。可以像调用本地服务一样去调用远程服务。,我们来看这样一张图。,20230306013636d4f5d594956554f938c55446d8880cb3ffcc58229,一个完整的RPC协议包含了四个组件,分别是Client、Server、Client Stub和Sever Stub。,20230306013512214812829fa3b643e96042c7409f04a809fa6a687,Client客户端表示服务的调用方。,Sever服务端是真正的服务提供方。,Client Stub表示客户端存根,专门用来存放服务端的地址信息,再将客户端的请求参数打包成网络消息,也就是序列化,然后通过网络远程发送给服务提供方。,Server Stub表示服务端存根,用来接收客户端发送过来的消息,然后,解析消息内容,也就是反序列化,并且调用本地方法。,RPC在分布式系统中,有非常广发的应用,我给大家总结为5个方面:,2023030601351354a55a067fd7f598c7b025b8353e423989fc4f784,1、分布式系统网络通讯,2、分布式子系统之间的服务治理,3、分布式负载均衡和流控,4、服务发现与注册,5、构建分布式调试环境,【导航条:RPC框架】,(转场,屏幕黑底白字,正中央出现“4 RPC框架),4、RPC框架,20230306013513092f2fb87571245727257000eb8ec2eac7a9e0480,在互联网应用开发中,随着业务的复杂度增加,一般都会采用分布式架构。分布式架构的核心,就是利用多台普通的计算机组成一个庞大的复杂计算网络,提供高并发、高性能、高可用的系统能力支撑。,20230306013513727896519dc50203bee13119e0e8d0b3cc9023719,在分布式架构中,原本的单体应用服务被拆分成多个独立部署的服务,分布式在计算机网络上,这些服务必然,需要通过网络进行数据通信和交互。而RPC框架,就是解决在分布式架构中,各个服务之间的网络通信问题的框架。,2023030601363758c14d193c03616eb68002a5ede723f053a3b0390,在Java应用中,JDK 1.1版本的时候就提供了对RPC的支持框架,叫做RMI。由于RMI不能实现跨域语言的远程调用。,后面,广发采用WebService来实现远程调用,但是,WebService需要定义非常复杂的Scheme文件,导致无效数据内容过于臃肿。,之后,就被HTTP加JSON的方案所代替了。,RPC发展到现在,实现的方式也非常多样,但是基本都实现了跨语言的远程调用。,20230306013515d342b0426d0ce352f5f421bd43e6d1fefdd04c282,一般来说,RPC框架都应用于大型企业,只有在业务复杂度和用户体量都比较大的时候,需要对服务进行解耦,从而达到扩展性强、部署灵活的目的。目前比较流行的开源RPC框架有Goole的gRPC、Facebook的Thrift、Alibaba的Dubbo。这些框架除了提供基础的远程通信功能以外,还会在系统性能、传输效率、服务治理等方面做出一些优化设计。,比如,阿里开源的RPC框架Dubbo就提供了非常丰富的服务治理功能。,好了,相信各位小伙伴对于RPC又有了一个更加清晰的认识和了解。面试的时候,如果被问到RPC的问题,是不是知道怎么了呢?以上就是我对RPC的理解。

© 版权声明

相关文章