服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|Java教程|ASP教程|编程技术|正则表达式|C/C++|IOS|C#|Swift|Android|VB|R语言|JavaScript|易语言|vb.net|

服务器之家 - 编程语言 - 编程技术 - 这么回答面试通过率提高60%,谈谈你对RPC框架的理解

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

2022-09-14 21:27Tom弹架构 编程技术

有位工作6年的小伙伴,面试的时候被问到这样一道题,说谈你对RPC的理解。在分布式微服务架构中,远程通信是最基本的需求。常见的远程通信方式有基于REST架构的HTTP协议,以及基于RPC协议的RPC框架。今天,我给大家分享一下我

有位工作6年的小伙伴,面试的时候被问到这样一道题,说谈你对RPC的理解。在分布式微服务架构中,远程通信是最基本的需求。常见的远程通信方式有基于REST架构的HTTP协议,以及基于RPC协议的RPC框架。今天,我给大家分享一下我的理解。

1、什么是RPC

首先,给大家介绍一下什么是远程调用。很多小伙伴会误以为,远程调用是指跨越物理距离上的远程。实际上,准确地说,远程调用是指跨进程的功能调用。

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

跨进程,可以理解为同一台计算上的多个进程、多个JVM或者多台计算之间的进程。

那什么是RPC呢?RPC的全称是Remote Procedure Call,翻译过来叫远程过程调用。

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

它是一种通过网络从远程计算机程序上获取服务,而不需要了解代码网络技术实现的一种协议。凡是符合这种协议的框架,都可以称之为RPC框架。

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

通俗理解就是,A计算机提供一个服务,B计算机可以像调用本地服务一样去调用A计算机提供的服务,这就是RPC的主要作用。

其实,RPC的应用在很早之前就出现了。在40年以前,也就是1981年的时候,由一家叫做Nelson的公司提出,并把它应用到了分布式系统之间的通信协议。

2、RPC协议

要实现RPC,需要通过网络进行数据传输,并且对调用的过程进行封装。现在比较流行的RPC框架一般都是采用TCP协议作为底层的传输协议。当然,其他协议也是可以的,比如UDP。

RPC协议,强调的是过程调用,调用的过程对于用户来说是完全透明的,用户不需要关心调用细节。可以像调用本地服务一样去调用远程服务。

我们来看这样一张图。

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

一个完整的RPC协议包含了四个组件,分别是Client、Server、Client Stub和Sever Stub。

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

Client客户端表示服务的调用方。

Sever服务端是真正的服务提供方。

Client Stub表示客户端存根,专门用来存放服务端的地址信息,再将客户端的请求参数打包成网络消息,也就是序列化,然后通过网络远程发送给服务提供方。

Server Stub表示服务端存根,用来接收客户端发送过来的消息,然后,解析消息内容,也就是反序列化,并且调用本地方法。

3、RPC的应用场景

RPC在分布式系统中,有非常广发的应用,我给大家总结为5个方面:

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

1、分布式系统网络通讯

2、分布式子系统之间的服务治理

3、分布式负载均衡和流控

4、服务发现与注册

5、构建分布式调试环境

【导航条:RPC框架】

(转场,屏幕黑底白字,正中央出现“4 RPC框架)

4、RPC框架

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

在互联网应用开发中,随着业务的复杂度增加,一般都会采用分布式架构。分布式架构的核心,就是利用多台普通的计算机组成一个庞大的复杂计算网络,提供高并发、高性能、高可用的系统能力支撑。

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

在分布式架构中,原本的单体应用服务被拆分成多个独立部署的服务,分布式在计算机网络上,这些服务必然,需要通过网络进行数据通信和交互。而RPC框架,就是解决在分布式架构中,各个服务之间的网络通信问题的框架。

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

在Java应用中,JDK 1.1版本的时候就提供了对RPC的支持框架,叫做RMI。由于RMI不能实现跨域语言的远程调用。

后面,广发采用WebService来实现远程调用,但是,WebService需要定义非常复杂的Scheme文件,导致无效数据内容过于臃肿。

之后,就被HTTP加JSON的方案所代替了。

RPC发展到现在,实现的方式也非常多样,但是基本都实现了跨语言的远程调用。

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

一般来说,RPC框架都应用于大型企业,只有在业务复杂度和用户体量都比较大的时候,需要对服务进行解耦,从而达到扩展性强、部署灵活的目的。目前比较流行的开源RPC框架有Goole的gRPC、Facebook的Thrift、Alibaba的Dubbo。这些框架除了提供基础的远程通信功能以外,还会在系统性能、传输效率、服务治理等方面做出一些优化设计。

比如,阿里开源的RPC框架Dubbo就提供了非常丰富的服务治理功能。

好了,相信各位小伙伴对于RPC又有了一个更加清晰的认识和了解。面试的时候,如果被问到RPC的问题,是不是知道怎么了呢?以上就是我对RPC的理解。

原文地址:https://mp.weixin.qq.com/s/7DNf8rqLAOF6WvRUqj3-ZA

延伸 · 阅读

精彩推荐