当前位置:首页 » 《休闲阅读》 » 正文

一文弄懂 RPC 通信流程全过程_帅枫的博客

24 人参与  2022年01月03日 08:19  分类 : 《休闲阅读》  评论

点击全文阅读


一文弄懂 RPC 通信流程全过程

什么是 RPC 呢

RPC 的全称是 Remote Procedure Call,即远程过程调用

从字面意思可以知道,远程肯定是指要跨机器而非本机,需要网络编程才能实现。但是不是只要通过网络通信访问到另一台机器的应用程序,就可以称之为 RPC 调用了?

其实 RPC 是帮助我们用来屏蔽网络编程细节,实现调用远程方法就跟调用本地方法(同一个项目中的方法)一样的简单,不需要因为网络编程而写很多与业务无关的代码。总之,RPC 的作用体现在两方面:

  1. 屏蔽远程调用根本地调用的区别,调用远程方法就像调用本地方法一样简单
  2. 隐藏底层网络通信的复杂性,让我们更专注于业务逻辑

RPC 通信流程

一个完整的 RPC 会涉及到哪些步骤呢?

  1. 由于 RPC 的远程调用必然会通过网络来传输数据,且需要保证可靠性,所以 RPC 一般默认采用 TCP 来进行传输
  2. 网络传输的数据必须是二进制数据,但是调用方请求的出入参数都是对象,而对象是无法直接在网络中传输的,因此我们需要把对象转换为二进制数据才能在网络上传输,这个过程我们称之为“序列化”
  3. 当二进制数据进过网络传输给了服务提供方之后,那提供方怎么知道一个请求的数据哪里结束,是一个什么类型的请求呢
  4. 于是我们将数据格式的约定叫做“协议“,一般分为消息头和消息体,服务方根据协议格式就可以从二进制数据中分割出不同的请求来,同时根据请求类型和序列化类型,把二进制的消息体逆向还原成请求对象,称之为”反序列化“
  5. 服务方根据反序列化出来的请求对象找到对应的实现类,完成真正的方法调用,再将结果传输序列化之后通过 TCP 传输给调用方
  6. 调用方再反序列化即可获得应答对象,这样就完成了一次 RPC 调用。

注意:这里序列化是对方法调用的请求信息进行处理,编解码是对网络传输消息进行处理

那 RPC 是怎么简化 API,屏蔽掉 RPC 细节,使用方只需要关注业务接口,像调用本地一样来调用远程方法呢?

  • 由服务提供方给出业务接口申明,在调用方的程序里面, RPC 框架根据调用的服务接口提前生成动态代理实现类,并通过依赖注入等技术注入到声明了接口的相关业务逻辑里面。该代理实现类会拦截所有的方法调用,在提供的方法逻辑里面完成一套完整的远程调用,并把远程调用结果返回个调用方,这样调用方在调用远程方法的时候就像调用本地方法一样。

有上述流程就一定是一个 RPC 框架了吗?

  • RPC 不仅有上述的作用,其真正强大的地方是他的治理功能,比如连接管理、健康检测、负载均衡、熔断限流等等

该文是作者的看极客的学习笔记


点击全文阅读


本文链接:http://zhangshiyu.com/post/32560.html

调用  方法  请求  
<< 上一篇 下一篇 >>

  • 评论(0)
  • 赞助本站

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。

最新文章

  • 抽卡后,气运之子怎么都缠上来了小说(夏挽棠)(抽卡后,气运之子怎么都缠上来了)全书+后续+结局在线阅读
  • 前传爱意随风消逝续集:全文+番外乔清浅宋轻舟:结局+番外新上热文
  • 宋昭黎陆铭绪(假如从没拥抱你)前文+全本完整阅读预售作品抢先看
  • 终章小说搬空海港!我携军舰嫁军官躺赢了完结篇(温婉历战)已更新+延伸(搬空海港!我携军舰嫁军官躺赢了)清爽版
  • 贵妻在上:废材老公来护航完结篇(贵妻在上:废材老公来护航)章节目录+章节前文(宋锦瑶霍少霆)全章无套路在线
  • 离婚后,前夫一家给我跪下了隐藏剧情_明白双宿双飞江城必读文_小说后续在线阅读_无删减免费完结_
  • 乔芊芊顾宴夜小说(乔芊芊顾宴夜)(踹了渣男后,禁欲大佬为我失控)前传+阅读全新作品预订
  • 假如从没拥抱你小说(宋昭黎陆铭绪)全本完整阅读最新章节(假如从没拥抱你)_笔趣阁
  • 特工医妃,摄政王的腹黑掌上欢前言+后续_苏清叙裴玄褚最新阅读_小说后续在线阅读_无删减免费完结_
  • 热文推荐绑定站姐系统后,我成娱乐巨头了附加(沈霁月沈暨星)(绑定站姐系统后,我成娱乐巨头了)最新章节列表
  • 爱你的事当做秘密惊天黑幕_鹿言裴禹连载_小说后续在线阅读_无删减免费完结_
  • 和前夫穿越后又重生了番外+结局(挽星阙靖安)小说在线阅读

    关于我们 | 我要投稿 | 免责申明

    Copyright © 2020-2022 ZhangShiYu.com Rights Reserved.豫ICP备2022013469号-1