zoukankan      html  css  js  c++  java
  • IPC和RPC

    IPC是进程间通信。

    RPC是远程调用,远程调用需要借助于进程间通信。

    远程调用的概念相对于本地调用。

    本地调用时程序会被装载到内存中,然后通过内存寻址进行调用。

    但是远程函数不在内存中该怎么调用呢?

    这就需要使用进程间通信将调用信息发送到远端,然后远端在维护列表中查找目标函数。

    **Client端 **
    // Student student = Call(ServerAddr, addAge, student)

    1. 将这个调用映射为Call ID。
    2. 将Call ID,student(params)序列化,以二进制形式打包
    3. 把2中得到的数据包发送给ServerAddr,这需要使用网络传输层
    4. 等待服务器返回结果
    5. 如果服务器调用成功,那么就将结果反序列化,并赋给student,年龄更新

    ** Server端**

    1. 在本地维护一个Call ID到函数指针的映射call_id_map,可以用Map<String, Method> callIdMap
    2. 等待服务端请求
    3. 得到一个请求后,将其数据包反序列化,得到Call ID
    4. 通过在callIdMap中查找,得到相应的函数指针
    5. 将student(params)反序列化后,在本地调用addAge()函数,得到结果
    6. 将student结果序列化后通过网络返回给Client

    参考链接:https://www.jianshu.com/p/7d6853140e13

  • 相关阅读:
    postman-3http请求
    postman-2get发送请求
    postman-1版本区别、选择
    mysql-13处理重复数据
    mysql-12序列使用
    mysql-11元数据
    mysql-10临时表、复制表
    10)global预定义变量
    9)用request方式
    8)post方式提交和简单那处理
  • 原文地址:https://www.cnblogs.com/chendeqiang/p/13184908.html
Copyright © 2011-2022 走看看