RPC是什么? (学习笔记)

RPC是什么? (学习笔记)什么是RPC?RPC全称RemoteProcedureCall,即远程过程调用,就是要像调用本地的函数一样去调远程函数,屏蔽远程调用的复杂性。为什么需要RPC?微服务、分布式应用的开发越来越

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

什么是RPC?

  • RPC全称Remote Procedure Call,即远程过程调用,就是要像调用本地的函数一样去调远程函数,屏蔽远程调用的复杂性。

为什么需要RPC?

  • 微服务、分布式应用的开发越来越常见,RPC可以解决各个节点之间的服务调用以及通信问题。
  • 治理功能,比如连接管理、健康检测、负载均衡、优雅启停机、异常重试、业务分组以及熔断限流等等。

一个完整地RPC需要经历那些过程?

  • 1.序列化:RPC是一个远程调用,所以必须要通过网络来传输数据。调用方的请求出入参数都是对象,就需要序列化对象为可传输的二进制。
  • 2.传输数据:调用方将二进制数据传输给服务提供方,RPC 一般默认采用 TCP 来传输,因为其可靠性。
  • 3.反序列化:根据特定的协议,服务提供方可以从二进制数据中正确的分割出不同的请求来,同时根据请求类型和序列化类型,把二进制的消息体逆向还原成请求对象。
  • 4.方法调用:根据反序列化得到的请求对象,找到对应的类,完成方法调用。
  • 5.返回请求:将执行结果序列化后,回写到对应的 TCP 通道里面。调用方获取到应答的数据包后,再反序列化成应答对象,这样调用方就完成了一次 RPC 调用。
  • 在这些的基础上,可以对其进行简化,不必关注其中复杂的操作,如调用方的序列化,网络传输调用,反序列化。可以像Spring的 AOP 一样,采用动态代理的技术,通过字节码增强对方法进行拦截增强,以便于增加需要的额外处理逻辑,上述操作都可以通过动态代理来解决。
  • 由服务提供者给出业务接口声明,在调用方的程序里面,RPC 框架根据调用的服务接口提前生成动态代理实现类,并通过依赖注入等技术注入到声明了该接口的相关业务逻辑里面。该代理实现类会拦截所有的方法调用,在提供的方法处理逻辑里面完成一整套的远程调用,并把远程调用结果返回给调用方,这样调用方在调用远程方法的时候就获得了像调用本地接口一样的体验。

                         RPC是什么? (学习笔记)

目前常用的RPC框架:

  1. Dubbo:Dubbo是一个分布式服务框架,以及SOA治理方案。其功能主要包括:高性能NIO通讯及多协议集成,服务动态寻址与路由,软负载均衡与容错,依赖分析与降级等。 Dubbo是阿里巴巴内部的SOA服务化治理方案的核心框架,Dubbo自2011年开源后,已被许多非阿里系公司使用。

  2. Spring Cloud:Spring Cloud由众多子项目组成,如Spring Cloud Config、Spring Cloud Netflix、Spring Cloud Consul 等,提供了搭建分布式系统及微服务常用的工具,如配置管理、服务发现、断路器、智能路由、微代理、控制总线、一次性token、全局锁、选主、分布式会话和集群状态等,满足了构建微服务所需的所有解决方案。Spring Cloud基于Spring Boot, 使得开发部署极其简单。

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

  4. Thrift :是一种轻量级的跨语言 RPC 通信方案,支持多达 25 种编程语言。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

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

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


相关推荐

  • Selenium:Chrome、Edge、Firefox、Opera、Safari常用WebDriver下载安装[通俗易懂]

    Selenium:Chrome、Edge、Firefox、Opera、Safari常用WebDriver下载安装[通俗易懂]简介:Selenium中运行需要先配置WebDriver,各主流浏览器安装配置大同小异。关联攻略:Selenium分布式运行:SeleniumGridPython+Jenkins+Selenium-Grid实现分布式web-ui自动化测试(centos+win10为例)基本操作:1、下载安装目标浏览器。2、查看浏览器版本:设置-帮助/关于浏览器等3、下载driver4、解压driver复制粘贴到配置好的环境变量Python所在目录5、编写代码调试启动注意事项:若找不到对

    2026年1月21日
    5
  • linux 查看igmp类型,Linux IGMP 学习笔记 之一 IGMP协议格式

    linux 查看igmp类型,Linux IGMP 学习笔记 之一 IGMP协议格式一、IGMP定义及分类IGMP:INTERNET组管理协议,与广播最大的不同是,IGMP允许每一个网络设备决定是否参与到一个特定的多播群组中。IGMP的ip地址,组播ip地址的范围为224.0.0.0-239.255.255.255。其中224.0.0.1代表子网上的所有计算机,224.0.0.2代表子网上一、IGMP定义及分类IGMP:INTERNET组管理协议,与广播最大的不同是,IGMP…

    2025年11月15日
    4
  • hadoop生态系统的详细介绍-详细一点[通俗易懂]

    前提日常喜欢看一些微信分享的好文,总结下来,可以作为过滤器吧(节约更多人的时间!),在这里引用的是别人的文章!对原文的作者表示感谢!确实写的很好!hadoop生态系统的详细介绍简介Hadoop是一个开发和运行处理大规模数据的软件平台,是Appach的一个用java语言实现开源软件框架,实现在大量计算机组成的集群中对海量数据进行分布式计算。今天我们来详细介绍下hadoop的生态系统。Hadoop生态…

    2022年4月3日
    75
  • 微博java SDK介绍及使用说明

    微博java SDK介绍及使用说明

    2021年9月4日
    60
  • java反射机制

    java反射机制学习spring提到spring框架中的setter方法是使用反射机制实现的,反射机制到底是什么呢?找了一篇文章Java基础与提高干货系列——Java反射机制Java基础与提高干货系列前言今天

    2022年7月2日
    25
  • vi/vim常用命令

    vi/vim常用命令ctrl+b上一页ctrl+f下一页ctrl+u上半页ctrl+d下半页H跳到屏幕的第一行M跳到屏幕的中间行L跳到屏幕的最后一行zt将光标所在的那一行移至屏幕顶部zb将光…

    2022年5月22日
    37

发表回复

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

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