news 2026/5/7 4:32:09

计算机网络应用层面试题(RPC)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
计算机网络应用层面试题(RPC)

文章目录

  • RPC
  • 1. RPC的作用是什么?
    • 回答
  • 2. [为什么有HTTP协议了?还要用RPC?](https://xiaolincoding.com/network/2_http/http_rpc.html#http-%E5%92%8C-rpc-%E6%9C%89%E4%BB%80%E4%B9%88%E5%8C%BA%E5%88%AB)
    • 回答

RPC

1. RPC的作用是什么?

分析
RPC的全称是Remote Procedure Call,即远程过程调用。简单解读字面上的意思,远程指定是指要跨机器而非本机,所以需要用到网络编程才能实现,但是不是只要通过网络通信访问到另一台机器的应用程序,就可以称之为RPC调用了?显然并不够。

我理解的RPC是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地(同一个项目中的方法)一样的体验,我们不需要因为这个方法是远程调用就需要编写很多与业务无关的代码。

这就好比建在小河上的桥一样连接着河的两岸,如果没有小桥,我们需要通过划船、绕道等其他方式才能到达对面,但是有了小桥之后,我们就能像在路面上一样行走到达对面,并且跟在路面上行走的体验没有区别。所以我认为,RPC的作用就是体现在这样两个方面:

  1. 屏蔽远程调用跟本地调用的区别,让我们感觉就是调用项目内的方法;

  2. 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑。

回答

RPC 是远程过程调用,主要运用于微服务之间的通信,它的作用是帮助我们屏蔽网络编程细节,实现调用远程方法就跟调用本地(同一个项目中的方法)一样的体验让我们更专注于业务逻辑,而无需关注底层网络通信的细节。

2.为什么有HTTP协议了?还要用RPC?

分析

RPC 本质上不算是协议,而是一种调用方式,而像 gRPC 和 Thrift 这样的具体实现,才是协议,它们是实现了 RPC 调用的协议。目的是希望程序员能像调用本地方法那样去调用远端的服务方法。同时 RPC 有很多种实现方式,不一定非得基于 TCP 协议。


从发展历史来说,HTTP 主要用于 B/S 架构,而 RPC 更多用于 C/S 架构。但现在其实已经没分那么清了,B/S 和 C/S 在慢慢融合。很多软件同时支持多端,所以对外一般用 HTTP 协议,而内部集群的微服务之间则采用 RPC 协议进行通讯


RPC 其实比 HTTP 出现的更早,且比目前主流的 HTTP/1.1 性能要更好,所以大部分公司内部都还在使用 RPC。

HTTP/2.0在 HTTP/1.1的基础上做了优化,性能可能比很多 RPC 协议都要好,但由于是这几年才出来的,所以也不太可能取代掉 RPC

回答

HTTP 和 RPC 其实是两个维度的东西,HTTP 指的是通信协议。而 RPC 则是远程调用,其对应的是本地调用。RPC 的通信可以用 HTTP 协议,也可以自定义协议,是不做约束的。

用 HTTP 传输数据会有比较多的信息,比如头部有各种字段信息,数据载体则一般是用 json 格式,而 RPC 因为它定制化程度更高,可以采用体积更小的 protobuf或其他序列化协议去存储结构体数据,同时也不需要像HTTP那样考虑各种浏览器行为,比如302重定向跳转啥的,因此性能也会更好一些,这也是在公司内部微服务中抛弃HTTP,选择使用RPC的最主要原因。

之后我会持续更新,如果喜欢我的文章,请记得一键三连哦,点赞关注收藏,你的每一个赞每一份关注每一次收藏都将是我前进路上的无限动力 !!!↖(▔▽▔)↗感谢支持!

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/7 14:11:55

AlertDialog.show()中message的字体大小和颜色如何修改?

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。 AlertDialog.show()中不能修改message里内容的字体颜色和大小,请问如何解决? 解决方案: AlertDialog无法修改自定义字体颜色和大小。建议使用coustomDialog&#xff0c…

作者头像 李华
网站建设 2026/5/1 12:11:33

bindpopup设置popupColor属性不生效?

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。 bindpopup绑定在被foreach循环多次的组件上,气泡颜色(popupColor)设置成黑色但未生效,导致白色字体显示不清晰。 解决方案: bindpo…

作者头像 李华
网站建设 2026/5/1 17:57:56

list怎么更新单个item的ui?

本问答帖原创发布在华为开发者联盟社区 ,欢迎开发者前往论坛提问交流。 问题描述: 如果要像微信那样在二维码的中间加个头像应该怎么做,是否有对应API? 解决方案: 可以通过stack布局,将Image组件放在QRCode组件上实…

作者头像 李华
网站建设 2026/5/1 13:41:37

Java awt包不存在错误解决:检查JDK安装与环境变量配置

当你开始学习Java GUI编程或维护一个老项目时,很可能会在编译或运行阶段遇到“程序包 java.awt 不存在”的错误。这个错误意味着你的Java开发环境在编译时找不到核心的AWT图形工具包。AWT是Java标准库的一部分,通常不会缺失,但特定环境配置或…

作者头像 李华