当前位置: 首页 > article >正文

【gRPC】第1篇 全面讲解RPC原理(必收藏)

目录

1、什么是 RPC

 2、为什么要用 RPC 

3、常用的 RPC 框架

4、RPC 的调用流程


1、什么是 RPC

RPC(Remote Procedure Call Protocol)远程过程调用协议,目标就是让远程服务调用更加简单、透明。

RPC 框架负责屏蔽底层的传输方式(TCP 或者 UDP)、序列化方式(XML/Json/ 二进制)和通信细节,服务调用者可以像调用本地接口一样调用远程的服务提供者,而不需要关心底层通信细节和调用过程。

 2、为什么要用 RPC 

当我们的业务越来越多、应用也越来越多时,自然的,我们会发现有些功能已经不能简单划分开来或者划分不出来。

此时可以将公共业务逻辑抽离出来,将之组成独立的服务 Service 应用,而原有的、新增的应用都可以与那些独立的 Service 应用 交互,以此来完成完整的业务功能。

所以我们急需一种高效的应用程序之间的通讯手段来完成这种需求,RPC 大显身手的时候来了!

3、常用的 RPC 框架

gRPC:一开始由 google 开发,是一款语言中立、平台中立、开源的远程过程调用(RPC)系统。

Thrift:thrift 是一个软件框架,用来进行可扩展且跨语言的服务的开发。它结合了功能强大的软件堆栈和代码生成引擎,以构建在 C++, Java, Python, PHP, Ruby, Erlang, Perl, Haskell, C#, Cocoa, JavaScript, Node.js, Smalltalk, and OCaml 这些编程语言间无缝结合的、高效的服务。

Dubbo:Dubbo 是一个分布式服务框架,以及 SOA 治理方案,Dubbo自2011年开源后,已被许多非阿里系公司使用。

Spring Cloud:Spring Cloud 由众多子项目组成,如 Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具。

4、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 的目标就是要 2~8 这些步骤都封装起来,让用户对这些细节透明,下面是网上的另外一幅图,感觉一目了然:


http://www.kler.cn/a/8083.html

相关文章:

  • NS3学习——tcpVegas算法代码详解(2)
  • RAG实战:构建基于本地大模型的智能问答系统
  • 嵌入式学习-QT-Day06
  • 【Yonghong 企业日常问题 06】上传的文件不在白名单,修改allow.jar.digest属性添加允许上传的文件SH256值?
  • 运动控制卡网络通讯的心跳检测之C#上位机编程
  • Rust 在前端基建中的使用
  • egg编写用户点赞的接口
  • 思维导图手撕MyBatis源码
  • Spring中的循环依赖是什么?如何解决它?
  • HTB-Passage
  • Kafka源码分析之Producer数据发送流程(四)
  • SpringBoot项目中web静态资源的一些问题
  • 【C#】NLS_Speed使用说明
  • ToBeWritten之杂项2
  • C-NCAP 2025主动安全ADAS测试研究
  • 面了 6 家大厂,并拿下 5 家 offer,进大厂好像也没有那么困难吧....
  • 【SQL 必知必会】- 第十一课 使用子查询
  • mocha如何实现异步测试
  • 【建站】手把手教你搭建惊艳的博客
  • 【OpenCV-Python】cvui 之 图像
  • 6.数组
  • Spring的Bean初始化过程和生命周期
  • Java基础(十二):枚举类
  • CoreDNS 性能优化
  • 前端项目规范化1:什么是.editorconfig文件以及prettier转换.editorconfig文件属性
  • 【计算机视觉】图像分类模型