RPC核心原理(整体架构/调用过程)

这篇具有很好参考价值的文章主要介绍了RPC核心原理(整体架构/调用过程)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

RPC核心原理(整体架构/调用过程)
Server: Provider ,暴露服务,服务提供方
Client: Consumer ,服务消费,调用远程服务
Registry:服务注册与发现

RPC的调用过程如下:

第一步:server会将他需要暴露的服务以及他的地址信息注册到Registry这一注册中心。

第二步:client通过注册中心一只关注它所需要的服务在哪里,如果此时server的地址发生改变,server会再次注册入Registry,然后Resgistry会通知给RPC client。

现在client已经有了server的地址以及它暴露服务的信息,就可以做最后一步调用了(即3 call 步)。

其实在这里,注册中心并不是必要的组件,client可以把服务端的信息直接写死进client,然后直接去调用rpc server,实则可以发现3 call这一步才是rpc调用最关键的一步!!

调用(call)

RPC核心原理(整体架构/调用过程)

1.首先是client要去调用client stub(存根)这个接口里面的方法,这时候这个接口的实现在远程,所以需要sockets网络传输,才能达到调用(即通过sockets建立连接,传输数据),在通过sockets进行传输之前,需要第2步的序列化(把传输的对象转成可传输的二进制数据)。

2.假设此时server的sockets拿到了数据,需要第4步的反序列化(将拿到的二进制数据反序列化为对象),在这个对象中包含了这个客户端要调用的服务端的信息(像它调用的是那个接口,也即它调用的是哪个存根,接口里面的什么方法方法里面参数的类型,以及返回值的类型等),之后server去找到这个接口的具体实现类的对象。通常这个对象为了性能考虑,一般会做成单例模式

3.这个server stub找到这个对象之后会通过反射来调用这个方法,方法调用完成后可以拿到计算的结果,拿到结果后又通过第7步的序列化成二进制,然后通过网络传输8响应给client,client拿到这个数据之后也会通过9将其序列化为对象,然后得到结果–第10步。那么本次调用结束

调用关键点:文章来源地址https://www.toymoban.com/news/detail-486860.html

  • 一定要的网络模块(用于网络传输
  • 序列化模块(对象与二进制数据之间的互转
  • client 端怎么就通过调用一个接口就调用到远程方法呢?其实他内部有一个存根代理对象,而这个网络的交互,序列化操作都是由这个代理对象来完成的)
  • server端肯定需要一个对服务进行管理的组件,里面完成了服务的查找,服务的反射调用等

到了这里,关于RPC核心原理(整体架构/调用过程)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【Windows】RPC调用过程实例详解

    概述:windows 创建 RPC调用过程实例详解 参考文章:Remote procedure call (RPC)(远程过程调用 (RPC)) - Win32 apps | Microsoft Learn 定义接口的第一步是使用 uuidgen 实用工具生成通用唯一标识符(UUID)。UUID使客户端和服务端能够相互识别。该工具包含在阿庄平台软件开发工具包中(SDK)

    2024年02月07日
    浏览(39)
  • RPC核心原理详解

    RPC的全称是Remote Procedure Call,即远程过程调用。简单解读字面上的意思,远程肯定是指要跨机器而非本机,所以需要用到网络编程才能实现,但是不是只要通过网络通信访问到另一台机器的应用程序,就可以称之为RPC调用了?显然并不够。 我理解的RPC是帮助我们屏蔽网络编程

    2024年02月11日
    浏览(35)
  • RPC:Remote Procedure Call 远程过程调用

    目前,对于一个完整的应用来说,通常包含了若干支持不同功能的服务,亦或者是函数,这些服务之间往往可能需要互相调用,使用已经实现的服务功能,而不是需要在每个服务进程中再去重复实现已经有的功能。 这不仅对于开发者来说是一种比较合理的设计方式,对于服务

    2024年01月19日
    浏览(27)
  • 【C++】开源:grpc远程过程调用(RPC)配置与使用

    😏 ★,° :.☆( ̄▽ ̄)/$: .°★ 😏 这篇文章主要介绍grpc远程过程调用(RPC)配置与使用。 无专精则不能成,无涉猎则不能通。。——梁启超 欢迎来到我的博客,一起学习,共同进步。 喜欢的朋友可以关注一下,下次更新不迷路🥞 项目Github地址: https://github.com/grpc/grpc 官网

    2024年02月15日
    浏览(48)
  • 应用架构演变过程、rpc及Dubbo简介

            单一应用架构 - 垂直应用架构 - 分布式服务架构 - 微服务架构。 单一应用架构         当网站流量很小时,只需一个应用,将所有功能都部署在一起,以减少部署节点和成本。 此时,用于简化增删改查工作量的 数据访问框架(ORM) 是关键。         缺点:

    2024年02月02日
    浏览(49)
  • 【Go】四、rpc跨语言编程基础与rpc的调用基础原理

    早期 Go 语言不使用 go module 进行包管理,而是使用 go path 进行包管理,这种管理方式十分老旧,两者最显著的区别就是:Go Path 创建之后没有 go.mod 文件被创建出来,而 go module 模式会创建出一个 go.mod 文件用于管理包信息 现在就是:尽量使用 Go Modules 模式 另外,我们在引入包

    2024年02月19日
    浏览(38)
  • 聊聊分布式架构04——RPC通信原理

    目录 RPC通信的基本原理 RPC结构 手撸简陋版RPC 知识点梳理 1.Socket套接字通信机制 2.通信过程的序列化与反序列化 3.动态代理 4.反射 思维流程梳理 码起来 服务端时序图 服务端—Api与Provider模块 客户端时序图 RPC通信的基本原理 RPC(Remote Procedure Call)是一种远程过程调用协议,

    2024年02月07日
    浏览(34)
  • kafka发布订阅原理,Java项目开发如何设计整体架构

    源码阅读,最核心有三点:技术基础+强烈的求知欲+耐心。 1.1 设计模式(45设计模式:介绍+优缺点+应用实例+源代码+解决问题) 1.2 Spring复习大纲:依赖注入Ioc+Beans+注解+数据访问+AOP+MVC等 1.3 Spring全家桶笔记:Spring+Spring Boot+Spring Cloud+Spring MVC 面试题(含解析)+学习书籍+学习

    2024年03月12日
    浏览(61)
  • docker 的整体架构及各模块组件 《深入docker底层原理》

    Docker 是一个 C/S 模式的架构,后端是一个松耦合架构,模块各司其职。 1、用户是使用 Docker Client 与 Docker Daemon 建立通信,并发送请求给后者。 2、Docker Daemon 作为 Docker 架构中的主体部分,首先提供 Docker Server 的功能使其可以接受 Docker Client 的请求。 3、Docker Engine 执行 Docke

    2024年02月12日
    浏览(49)
  • 安卓架构核心Handler原理解析

    当使用 handler 去发送一个消息的时候,查看调用栈,发现最终会调用到 MessageQueue.equeueMessage ,那么说既然是个 queue 肯定就有增和删, equeueMessage 就对应它的增,再看看是谁在调用 MessageQueue 。 不妨猜想一下,既然平常写这个 handler 都在主线程,而且主线程的入口就在 main ,

    2023年04月09日
    浏览(34)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包