zoukankan      html  css  js  c++  java
  • rpc的学习

    rpc(Remote process call 即远程过程调用)是一种请求-相应的协议, 主要使用于C/S架构中,使得分布式系统成为可能。由客户端发起请求,服务端调用各种参数处理请求,当服务器在处理请求时,客户端处于阻塞状态,除非发起一个异步请求。

    rpc的理论开始于1970年代,而具体的实现要开始于1980年代早期,随着面向对象编程的兴起,RMI广泛地被实现,尤其是CORBA和Java RMI。而2000年后,RMI们也随着互联网的兴起而逐渐衰落。

    rpc的劣势在于由于网络的不稳定性,远程调用可能出错。客户端需要处理许多可能的错误。rpc也不是一个标准,仅仅是一个idea。

    我使用的语言主要是Java,在Java中,RPC是基于面向对象技术的。Java也有RMI,因为使用面向对象语言,所以是面向对象的,可以把对象发送到网络中。关于rpc和rmi的区别可以看这篇 http://stackoverflow.com/questions/2728495/what-is-the-difference-between-java-rmi-and-rpc

    而详细的介绍在这边 https://www.cs.rutgers.edu/~pxk/416/notes/15-rpc.html

    RPC的过程:

    1. 客户端调用stub,通常是调用本地方法,把参数放入stub中
    2. stub把参数打包进一个信息,并发起一个call来发送信息,打包参数的过程叫做marshalling
    3. 客户端本地的操作系统 通过system call 把信息发送到服务器
    4. 服务器本地的操作系统把数据包发送至服务器stub
    5. 服务器stub解包
    6. 服务器调用过程,而返回值以相反的路径传回客户端

    而RESTful风格是一种替代。

  • 相关阅读:
    java并发编程
    Linux C++服务器端进程SDK
    定时器SDK
    Redis3.0集群方案分析
    DES
    生成验证码
    MVC Ajax.BeginForm 提交上传图片
    EF LIKE 查询
    JS 60秒后重发送验证码
    EF 指定字段修改
  • 原文地址:https://www.cnblogs.com/andrew-chen/p/5334749.html
Copyright © 2011-2022 走看看