栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

RPC简介

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

RPC简介

RPC简介 一、为什么要有RPC

    随着项目业务越来越复杂,业务量越来越大,单个应用或者一台机器的资源肯定是背负不起的。那现在应该怎么做?将核心业务抽取出来,作为独立的服务,放到其他服务器上或者形成集群。这个时候就会请出RPC,系统演变为分布式的架构。

二、什么是RPC

    RPC,Remote Procedure Call,远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术。

三、一次完整的RPC同步调用流程

    (1)服务消费方(client)以本地调用的方式调用客户端存根
        客户端存根就是远程方法在本地的模拟对象,一样也有方法名,方法参数。client stub接收到调用后负责将方法名、方法参数等包装,并将包装后的消息通过网络发送到服务端。
    (2)服务端收到消息后,交给代理存根在服务器的部分后进行解码为实际的方法名和参数。
    (3)server stub根据解码结果调用服务器上本地的实际服务。
    (4)本地服务执行并将结果返回给server stub。
    (5)server stub将返回结果打包成消息并发送至消费方。
    (6)client stub接收到消息,并进行解码。
    (7)服务消费方得到最终结果。
    RPC框架的目标是要将中间步骤都封装起来,让我们进行远程方法调用的时候感觉到就像在本地调用一样。

四、RPC和HTTP

    rpc字面意思就是远程过程调用,只是对不同应用间相互调用的一种描述,一种思想。
    实现方式可以是最直接的tcp通信,也可以是http方式,甚至可以是消息中间件。例如:dubbo是基于tcp的,gRPC是基于http2.0的。
    所以,RPC和HTTP完全是两个不同层级的东西,他们之间并不具有可比性。

五、实现RPC框架需要解决的问题 1、代理问题

    代理要解决的是被调用服务本质上是远程的服务,但是调用者不知道也不关心,调用者只要结果,具体的事情由代理的那个对象来负责这件事。在RPC使用代理要添加的额外功能就是通过网络访问远程服务。

2、序列化问题

    序列化问题在计算机里具体是什么?我们的方法调用,有方法名,方法参数,这些可能是字符串,可能是我们自己定义的java类,但是在网络上传输或者保存在硬盘的时候,网络或者硬盘并不认得什么字符串或者javabean,它只认得二进制的01串,怎么办?要进行序列化,网络传输后要进行实际调用,就要把二进制的01串变回我们实际的java类,叫反序列化。java里为我们提供了相关的机制:Serializable。

3、通信问题

    将内容序列化后如何在网络中传输,BIO、NIO等。

4、登记的服务实例化

    登记的服务有可能在我们系统中就是一个名字,怎样变成实际执行的对象实例,反射机制。
    反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/866388.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号