• [RPC]RPC简介


    [RPC]RPC简介

    对网上的一些介绍RPC文章的总结,侵删

    参考链接:

    RPC的概念

    RPC(Remote Procedure Call Protocol)远程过程调用协议,可以通过网络向远程服务器请求服务,同时不用在意底层网络细节。通俗说法就是能实现调用远程服务器上的方法,但是不用关系具体怎么实现的。

    • RPC是协议。是一套需要遵循的标准,具体的框架有各自的特点,只需要遵守这套标准即可,对用户来说呈现类似的效果。
    • 隐藏底层网络细节。对于用户来说,只需要调用接口即可,不需要关心具体使用的TCP/UDP/HTTP等协议。
    • 调用方式透明。用户只用传递参数,接收返回值即可,参数如何传递给远程服务器以及结果如何返回并不用关心。
    • 跨语言能力。很明显,只要符合RPC标准,并不用关心双方具体使用什么变成语言(当然也有一些框架仅限于具体的变成语言)。

    RPC的结构

    RPC结构

    图片来自https://blog.csdn.net/yjp198713/article/details/79410521

    Client: 客户端,RPC的调用方,不用清楚RPC框架的实现

    Server: 远程服务器,提供了一些可能被调用的方法

    Stub/Proxy: 管理消息格式、网络传输协议等等

    Selector/Processor: 管理服务器上提供的接口,包括注册接口,执行接口等。

    Message Protocol: 消息的编解码

    Transfer/Network Protocol: 管理用到的网络协议和IO模型

    IDL: 接口定义语言,存在于跨语言的RPC框架之中,用于确定各种语言都能理解的消息结构和接口定义的描述形式

    影响RPC框架性能的因素

    网络IO模型:使用传统的阻塞时同步IO、非阻塞式同步IO或者多路IO模型

    网络协议:选择TCP、UDP还是HTTP

    消息的封装格式:消息的编解码难度,消息体大小,解决粘包/半包的难度

    Schema和序列化:序列化/反序列化,兼容性等

    服务管理方式:服务器端在高并发情况下对请求的处理方式

    常见的RPC框架特点

    Dubbo: 阿里开发的,基于java interface

    gRPC: 谷歌开发的,使用protobuf序列化,通信使用http2

    Thrift: 脸书开发的,基于tcp,对CPU敏感,适合于多语言之间进行数据交换

  • 相关阅读:
    $this是什么意思-成员变量和局部变量的调用
    神经网络 ML08 c-d-e
    机器学习笔记 ML01c
    虚函数
    C++有哪几种情况只能用初始化列表,而不能用赋值?
    C++ 的 I/O
    引用
    宏定义 #define 和常量 const 的区别
    怎么设置才能让外网ip可以访问mysql数据库[转]
    大师的框架面试总结[转]
  • 原文地址:https://www.cnblogs.com/xiaowk/p/16223534.html
Copyright © 2020-2023  润新知