• 什么是RPC


    RPC 是 Remote Procedure Call 的简写,也就是远程调用,它是一种进程间通讯方式,是一种技术思想,而不是规范。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显示编码这个远程调用的细节。

    也就是说两台服务器A,B,一个应用部署在A服务器上,想要调用B服务器上应用提供的函数/方法,由于不在一个内存空间,不能直接本地调用,需要通过网络来表达调用的语义和传达调用的数据。(通过网络传达调用的数据)

    为什么要用RPC呢?

    就是无法在一个进程内,甚至一个计算机内通过本地调用的方式完成的需要,比如不同的系统间的通讯,甚至不同的组织间的通讯,由于计算机能力需要横向拓展,需要在多台计算机组成的集群上部署应用。
    而RPC就是要向调用本地的函数一样去调用远程的函数

    步骤解析:

    1. 客户端调用 client (function)-> client Stub

    2. 序列化 client stub -> client socket

    3. 发送消息 client socket --(network)--> server socket

    4. 反序列化 server socket -> sever stub

    5. 调用server本地服务 server stub -> server (function)

    6. 服务处理 server

    7. 返回处理结果 并将结果序列化 server -> server stub ,server stub -> server socket

    8. 返回消息 server socket --(network)--> client socket

    9. 反序列化 client soket -> client stub

    10. 返回调用结果 client stub -> client

    这样的过程就是RPC

    所以RPC两个核心就是 通讯 和 序列化

    为什么序列化?

    序列化的目的就是为了方便传输

    什么是序列化?

    序列化:把对象转换为字节序列的过程称为对象的序列化。
    反序列化:把字节序列恢复为对象的过程称为对象的反序列化。

  • 相关阅读:
    性能测试策略和关注指标
    ES7.17.1安装
    java 复制对象
    Java 实现树结构计算各个节点数的和
    自定义初始化ES实体类
    .net core datatable 导出 pdf 支持中文
    VSCode 快捷键(整理)
    国标平台LiveGBS GB28181接入录像机NVR、摄像头时没有通道 通道数位0的检查办法
    基于docker搭建Android cordova开发环境
    SpringBoot整合邮箱发送邮件
  • 原文地址:https://www.cnblogs.com/nineberg/p/12470117.html
Copyright © 2020-2023  润新知