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)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • Javaweb人才招聘系统[通俗易懂]

    Javaweb人才招聘系统[通俗易懂]基于JSP的JSP+MYSQL人才招聘系统hrm系统是一个综合的员工管理系统,系统主页面左边由导航树构成,分为:部门管理、员工管理、招聘管理、培训管理、薪资管理、以及系统设置模块,模块功能主要包含CRUD操作,详情查看等操作。后台管理具体描述如下:网站新闻资讯管理|–添加新闻资讯;|–修改新闻资讯;|–删除新闻资讯个人会员管理|–查看个人会员|–删除个人会员企业会员管理|–查看企业会员|–删除企业会员在线留言管理|–查看在线留言|–删除在线留言系统用户管理|–系统用户的录

    2022年7月8日
    17
  • 高效沟通的秘诀_请你说说对沟通视窗的理解

    高效沟通的秘诀_请你说说对沟通视窗的理解最近听了樊登老师在混沌讲领导力,其中印象最深刻的就是沟通视窗。后来我发现把它用在沟通方面会更有效。我们常常困惑于如何与他人沟通,也会因彼此不能深入了解而大伤脑筋。今天我就介绍一个好用的思维模型,它涵盖

    2022年8月3日
    2
  • 手机APP自动化 Appium教程

    手机APP自动化 Appium教程Appium原理与安装Appium是一个移动App(手机应用)自动化工具。手机APP自动化有什么用?自动化完成一些重复性的任务比如微信客服机器人爬虫自动化测试Appium自动化方案的特点:开源免费支持多个平台支持多种类型的自动化支持多种编程语言自动化原理我们先来看一下Appium自动化的原理图这图是不是很眼熟?对啦,和Selenium原理图很像。因为Appium自动化架构就是借鉴的Selenium。大家看看这幅图,包含了3个主体部分:自动化程序

    2022年6月14日
    66
  • Python源码保护[通俗易懂]

    Python源码保护[通俗易懂]1混淆改方法主要将函数、类名以及变量名等替换为其他符号,提高了阅读的难度,Python代码混淆网站。但该方法未改变程序的主体结构,实际效果并不是很好。具体如下图1所示:2pycpython是先把源码py文件编译成pyc或者pyo,然后由python的虚拟机执行。最简单的加密方法是将编译后的pyc二进制文件发布,详情可以参考blog。但与其他语言一样编译后的产生的pyc依然可以通过反编译得…

    2022年8月23日
    3
  • Android下基于Iptables的一种app网络访问控制方案(二)

    Android下基于Iptables的一种app网络访问控制方案(二)3.如何在Android系统中集成?以上通过adb shell命令行在Android设备上将方案调通之后,接下来考虑如何集成在Android系统中。作为一个整体解决方案,需要至少解决两部分功能:(1)网络访问规则。包括规则定义、存储、对外接口、对内转化成Iptables命令。(2)Iptables命令执行。第一部分比较简单,在此不详述。主要看第二部分。对于某一个垂直功能,And

    2022年7月23日
    4

发表回复

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

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