zoukankan      html  css  js  c++  java
  • 什么是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两个核心就是 通讯 和 序列化

    为什么序列化?

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

    什么是序列化?

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

  • 相关阅读:
    获取ArcMap窗口句柄,通过WinAPI获取工作空间中点击要素的系统桌面坐标实现窗体跟随
    ArcGis Go to XY功能代码C#
    Python入门第二篇:基础语法
    python入门第一篇:python语言简介
    Robotium结果的收集和失败重跑
    adb问题整理
    adb pull 与 push
    Monkey测试的参数
    Linux主要命令
    命令行启动应用的几种常见类型
  • 原文地址:https://www.cnblogs.com/nineberg/p/12470117.html
Copyright © 2011-2022 走看看