2021Java高级面试题及答案,太牛了!

2021Java高级面试题及答案,太牛了!什么是RPC?RPC原理是什么?什么是RPC?RPC(RemoteProcedureCall)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务A、B部署在两台不同的机器上,那么服务A如果想要调用服务B中的某个方法该怎么办呢?使用HTTP请求当然可以,但是可能会比较慢而且一些优化做的并不好。RPC的出现就是为了解决这个问题。RPC原理是什么?服务消费方(client)调用以本地调用方式调用服务;client

大家好,又见面了,我是你们的朋友全栈君。

什么是 RPC?RPC原理是什么?

什么是 RPC?

RPC(Remote Procedure Call)—远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络技术的协议。比如两个不同的服务 A、B 部署在两台不同的机器上,那么服务 A 如果想要调用服务 B 中的某个方法该怎么办呢?使用 HTTP请求 当然可以,但是可能会比较慢而且一些优化做的并不好。 RPC 的出现就是为了解决这个问题。

RPC原理是什么?

2021Java高级面试题及答案,太牛了!

  1. 服务消费方(client)调用以本地调用方式调用服务;
  2. client stub接收到调用后负责将方法、参数等组装成能够进行网络传输的消息体;
  3. client stub找到服务地址,并将消息发送到服务端;
  4. server stub收到消息后进行解码;
  5. server stub根据解码结果调用本地的服务;
  6. 本地服务执行并将结果返回给server stub;
  7. server stub将返回结果打包成消息并发送至消费方;
  8. client stub接收到消息,并进行解码;
  9. 服务消费方得到最终结果。

下面再贴一个网上的时序图:

2021Java高级面试题及答案,太牛了!

RPC 解决了什么问题?

从上面对 RPC 介绍的内容中,概括来讲RPC 主要解决了:让分布式或者微服务系统中不同服务之间的调用像本地调用一样简单。

常见的 RPC 框架总结?

  • RMI(JDK自带): JDK自带的RPC,有很多局限性,不推荐使用。

  • Dubbo: Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。目前 Dubbo 已经成为 Spring Cloud Alibaba 中的官方组件。

  • gRPC :gRPC是可以在任何环境中运行的现代开源高性能RPC框架。它可以通过可插拔的支持来有效地连接数据中心内和跨数据中心的服务,以实现负载平衡,跟踪,运行状况检查和身份验证。它也适用于分布式计算的最后一英里,以将设备,移动应用程序和浏览器连接到后端服务。

  • Hessian: Hessian是一个轻量级的remotingonhttp工具,使用简单的方法提供了RMI的功能。 相比WebService,Hessian更简单、快捷。采用的是二进制RPC协议,因为采用的是二进制协议,所以它很适合于发送二进制数据。

  • Thrift: Apache Thrift是Facebook开源的跨语言的RPC通信框架,目前已经捐献给Apache基金会管理,由于其跨语言特性和出色的性能,在很多互联网公司得到应用,有能力的公司甚至会基于thrift研发一套分布式服务框架,增加诸如服务注册、服务发现等功能。

面试结束复盘查漏补缺

每次面试都是检验自己知识与技术实力的一次机会,面试结束后建议大家及时总结复盘,查漏补缺,然后有针对性地进行学习,既能提高下一场面试的成功概率,还能增加自己的技术知识栈储备,可谓是一举两得。

以下最新总结的阿里P6资深Java必考题范围和答案,包含最全MySQL、Redis、Java并发编程等等面试题和答案,用于参考~

资料免费领取方式:点赞关注后,戳这里免费领取

重要的事说三遍,关注+关注+关注!

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

image.png

更多笔记分享

[外链图片转存中…(img-7ZpNVOBH-1627556213130)]

更多笔记分享

历经30天,说说我的支付宝4面+美团4面+拼多多四面,侥幸全获Offer

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/161235.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • UNIX基本操作命令

    UNIX基本操作命令UNIX命令基础登录系统:输入密码,密码不显示退出系统:ctrl+dexitlogout创建/修改密码:passwd密码输入后不显示,新密码要输入两次,匹配成功才算是修改密码成功UNIX命令格式:命令选项参数快捷键:ctrl+c:中断当前命令执行并返回shellctrl+d:终端传输或结束文本编辑ctrl+s:临时中断命令的屏幕输出ctrl+q:恢复由ctrl+s的临时中断ctrl+u:清除输入的整个命令行backspace:删除某个错误输入的字符常用操作命令

    2022年5月31日
    433
  • 同步FIFO和异步FIFO总结[通俗易懂]

    同步FIFO和异步FIFO总结[通俗易懂]文章目录1.FIFO简介2.使用场景3.分类4.FIFO的常见参数5.FIFO设计5.1空满标志生成5.2异步FIFO的设计还要注意跨时钟域问题5.3gray码如何判断空满`6.同步FIFO实现`7.异步FIFO实现8.对FIFO进行约束9.关于异步FIFO最小深度的计算9.1写时钟快于读时钟,写和读的过程中没有空闲周期9.2写时钟频率大于读时钟频率,但在读写的过程中存在空闲周期9.3写时钟慢于读时钟,且读写过程中没有空闲周期9.4写时钟频率小于读时钟频率,但读写过程中存在空

    2022年8月13日
    10
  • 六种麒麟都是什么麒麟_中标麒麟进入图形界面

    六种麒麟都是什么麒麟_中标麒麟进入图形界面OracleDatabase11.2.0.4.0已在Linuxx86-64NeoKylinLinuxAdvancedServer6上通过认证

    2022年8月10日
    10
  • 如何在pycharm中安装pygame_python安装pycharm的方法

    如何在pycharm中安装pygame_python安装pycharm的方法今天好不容易啃书到项目实践过程,终于可以做一款小游戏了,这对我这个Python编程小白来说,无疑是自己一直想要去实现的。正准备兴致勃勃的准备撸代码时,就开始碰壁了,因为在安装pygame,我按照书中步骤来时,却永远安不上,可能是书的问题也可能是我自己哪部分搞错了,于是去搜了一下百度,虽然有很多办法,但无一都很复杂,写了一大堆,最终在我自我摸索下,终于搞好了,现在分享一下我的下载过程,超级简单:1、首先打开pycharm,再点击Terminal终端,在终端输入:pipinstallpygame即可

    2022年8月29日
    8
  • Maven(三):将web项目的war包热部署到远程Tomcat服务器

    Maven(三):将web项目的war包热部署到远程Tomcat服务器

    2021年9月26日
    74
  • Databus Relays

    Databus Relays概述DatabusRelays主要负责以下两个工作:从databus源数据库中读取变化行,并序列化为事件流保存至内存中;接受客户端的请求,并将数据变化事件流返回给客户端。技术架构 EventProducer:用来读取数据库的变化事件,转化为AVRO类型并存储至内存中;CircularBuffer:Relay有一个或多个环形的缓冲池用来保存按递增

    2022年10月16日
    5

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号