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

什么是 RPC?

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

RPC原理是什么?

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

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

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研发一套分布式服务框架,增加诸如服务注册、服务发现等功能。

如何快速更新自己的技术积累?

  • 在现有的项目里,深挖技术,比如用到netty可以把相关底层代码和要点都看起来。
  • 如果不知道目前的努力方向,就看自己的领导或公司里技术强的人在学什么。
  • 知道努力方向后不知道该怎么学,就到处去找相关资料然后练习。
  • 学习以后不知道有没有学成,则可以通过面试去检验。

我个人觉得面试也像是一场全新的征程,失败和胜利都是平常之事。所以,劝各位不要因为面试失败而灰心、丧失斗志。也不要因为面试通过而沾沾自喜,等待你的将是更美好的未来,继续加油!

以上面试专题的答小编案整理成面试文档了,文档里有答案详解,以及其他一些大厂面试题目,有需要的朋友点击这里即可免费领取

6693497721)]

[外链图片转存中…(img-6cCeJyCM-1626693497724)]

再见SpringMVC!小程序开发工程师岗位职责相关推荐

  1. PHP开发工程师岗位职责与任职要求

    岗位职责 互联网相关产品开发,项目开发,系统维护等   任职要求 1. 精通PHP开发语言,熟悉面向对象的软件设计方法: 2. 熟悉Unix/Linux操作系统,熟悉C/C++编程,熟悉Shell脚本 ...

  2. python后端工程师岗位职责_【PYTHON后端开发工程师岗位职责_PYTHON后端开发工程师职责/工作内容】-猎聘岗位职责频道...

    岗位职责: 1.负责 等产品的服务端研发; 2.深入发掘和分析业务需求,撰写技术方案和系统设计; 3.根据产品需求,进行系统设计和编码; 4.持续对系统架构进行改造和优化; 职位要求: 1.三年以上开 ...

  3. 前端开发工程师-岗位职责-任职要求

    岗位职责: 1.参与前端框架和组件易用性改善,基础建设和推进新框架技术的落地,参与组件迭代,提高团队开发效率: 2.参与新技术研究与应用,制定前端技术路线.技术标准并推动落地: 3.参与对代码质量和交 ...

  4. 安卓开发工程师岗位职责!一线互联网企业高级Android工程师面试题大全,附超全教程文档

    一.引言 现在已经是十月份的月末了,金九银十,这个找工作和面试的热潮已经渐渐退隐. 潮涨潮退,有的人从里面收获了心仪的offer:有的人走了一趟,一无所获,或者收获寥寥,无甚满意:还有的人在观望,等待 ...

  5. 了解微信小程序、掌握微信小程序开发工具的使用、了解小程序的目录以及文件结构、掌握小程序中常用的组件、掌握WXML、WXSS、WXS的基本使用

    1 微信小程序介绍以及开发准备 1.1 了解微信小程序 百度百科: 微信小程序,简称小程序,英文名Mini Program,是一种不需要下载安装即可使用的应用,它实现了应用"触手可及&quo ...

  6. 【艾思软件】微信小程序开发报价方案模版

    微信小程序报价 V1.0 文件状态 [√ ]草稿 [   ]修改 [   ]正式 使用平台: 小程序 当前版本: V 1.0 作者: 山东艾思软件科技有限公司 编写日期: 2022/6/14 主要技术 ...

  7. python大数据开发工程师_大数据开发工程师的职责

    大数据开发工程师的职责 大数据开发工程师的职责1 职责: 1.负责数据采集.数据存储.数据查询.数据计算等基础平台的设计和开发工作; 2.利用Hadoop.Spark.Flink等技术进行离线和实时数 ...

  8. 运维工程师岗位职责、职业路线和常用工具

    运维工程师岗位职责 像不像三座墓碑? 运维工程师职业路线 自动化运维使用和部署是进阶架构师的必经之路 运维工程师常用工具 代码管理(SCM):GitHub.GitLab.BitBucket.SubVe ...

  9. web前端开发和岗位职责

    什么是web前端开发和岗位职责? web前端开发通过HTML,CSS及JavaScript以及衍生出来的各种技术.框架.解决方案,来实现互联网产品的用户界面设计交互 创建Web页面或app等前端界面呈 ...

最新文章

  1. GitHub与Git入门
  2. 【机器学习】PyCaret!又一个神仙的自动机器学习库!
  3. PHP字符串增强加密
  4. 超级抖音腾讯视频V3.6.0小程序源码 前端+后端 支持视频采集和上传
  5. POJ - 2559 Largest Rectangle in a Histogram(单调栈)
  6. ionic xcode 上传appstroe 创建Distribution证书报错 you already have a current iOS Distribution certificate
  7. centos7 split 切割文件_CentOS 大文件夹按固定块大小分割打包实验
  8. Boxfilter 块滤波器
  9. android+号码归属地数据库,Android手机号码归属地的查询
  10. 十字链表实现稀疏矩阵,包含十二大功能
  11. 06)JDK1.8 新特性学习 重复注解
  12. 【二级等保】二级等保需要做日志审计吗?
  13. 互联网人求职向传统行业倾斜;全国有两成开发者月薪超1.7万 | 美通企业日报...
  14. PCB生产文件的导出 导出给厂家保证自己文件安全
  15. 通往天堂的选择问题 python_意识体革命
  16. (MY)SQL基本语句
  17. item_search - 根据关键词取虾皮(Shopee)商品列表
  18. 隐藏a标签html,a标签显示隐藏 js怎么控制a标签的显示和隐藏
  19. 成功应聘Intel的真实经历
  20. iOS开发中解决Compiling IB documents for earlier than ios 7 is no longer supported的问题

热门文章

  1. 追求极致:Repvgg重参数化对YOLO工业落地的实验和思考
  2. pythreejs is needed for plotting with pythreejs backend
  3. cmake找不到opencv解决
  4. pix2pix, pix2pixHD, vid2vid
  5. python 多进程管道 消息式通信
  6. 双边滤波+ 通俗自己理解
  7. python自动选取空闲gpu
  8. c++带成员指针使用
  9. java 中调用window系统中的文件,或者执行命令(shell、.CMD、.EXE)并获取返回值
  10. java 039 s rule_Java开发架构篇:DDD模型领域层决策规则树服务设计