• RPC


    RPC 是什么

    RPC 的全称是 Remote Procedure Call 是一种进程间通信方式。它允许程序调用另一个地址空间(通常是共享网络的另一台机器上)的过程或函数,而不用程序员显式编码这个远程调用的细节。即程序员无论是调用本地的还是远程的,本质上编写的调用代码基本相同。

    RPC是一个分布式计算的CS模式,总是由Client向Server发出一个执行若干过程请求,Server接受请求,使用客户端提供的参数,计算完成之后将结果返回给客户端。RPC的协议有很多,比如最早的CORBA,Java RMI,Web Service的RPC风格,Hessian,Thrift,甚至Rest API。

    RPC 起源

    RPC 这个概念术语在上世纪 80 年代由 Bruce Jay Nelson 提出。这里我们追溯下当初开发 RPC 的原动机是什么?在 Nelson 的论文 "Implementing Remote Procedure Calls" 中他提到了几点:

    1. 简单:RPC 概念的语义十分清晰和简单,这样建立分布式计算就更容易。
    2. 高效:过程调用看起来十分简单而且高效。
    3. 通用:在单机计算中过程往往是不同算法部分间最重要的通信机制。

    通俗一点说,就是一般程序员对于本地的过程调用很熟悉,那么我们把 RPC 作成和本地调用完全类似,那么就更容易被接受,使用起来毫无障碍。Nelson 的论文发表于 30 年前,其观点今天看来确实高瞻远瞩,今天我们使用的 RPC 框架基本就是按这个目标来实现的。

    RPC 结构

    Nelson 的论文中指出实现 RPC 的程序包括 5 个部分:

    1. User
    2. User-stub
    3. RPCRuntime
    4. Server-stub
    5. Server

    RPC 调用流程

    RPC的调用流程

    RPC 需要解决的问题

    • 通讯的问题
    • 服务寻址的问题
    • 参数的序列化和反序列化
    • 负载均衡的问题

    参考

    1. RPC是什么
    2. 维基百科
    3. 你应该知道的 RPC 原理
    4. 深入浅出 RPC - 深入篇
  • 相关阅读:
    MySQL information_schema
    Sqlmap入门
    MySQL UNION
    Order by 1
    yum安装软件时,提示No package netstat available.的解决方法
    Centos7查看端口占用
    查看Centos版本
    Linux非交互方式设置密码
    Hive中的用户自定义函数
    Dbeaver连接Hive和Mysql的配置
  • 原文地址:https://www.cnblogs.com/bermaker/p/8848764.html
Copyright © 2020-2023  润新知