zoukankan      html  css  js  c++  java
  • RPC远程过程调用协议简述

    RPC:Remote Procedure Call Protocol即远程过程调用协议,有时候也可以说是一种编程模式,应用场景多用于替代C/S模式中HTTP所主导的一系列框架。是一个计算机通信协议,并没有实体,只有具体的实现。


    • 让构建分布式计算更加容易,同时具有强大的远程调用功能。RPC会提供一种透明调用机制让使用者不必显式的区分远程调用与本地调用。它让本地应用能够简单,高效的调用服务器中的过程,主要应用在分布式系统中。原始的RPC实现:采用Socket通信作为通道,利用动态代理和反射完成调用,同时依靠Java序列化来传递信息。目前典型的RPC实现框架有:Thrift(facebook开源)、Dubbo(alibaba开源)。
    • RPC框架针对网络协议、网络I/O模型的封装是透明的,对于调用的客户端而言,它就认为自己在调用本地的一个对象。至于传输层上,运用的是TCP协议、UDP协议、亦或是HTTP协议,一概不关心。从网络I/O模型上来看,是基于select、poll、epoll方式承载实现的,对于调用者而言也不用关心。
    • 相比于http协议,RPC大部分使用长连接模式,而相反使用http短连接的(当然,http协议也是存在长连接模式的),在访问量高的情况下,创建与释放连接的消耗都很大;
    • 多数RPC框架采用二进制或其他手段进行序列化的传输,大学预科班什么意思而http使用json作为传输媒介,自然效率会相对快一些;
    • 稳定性:RPC自带自动降级,流程控制模式,在分布式上相比一挂挂一片的集群稳定
    • 安全性高

    开发原理:

    • 定义RPC请求消息、应答消息的结构,包括远程调用的类名,方法名称,参数信息;
    • 服务端通过预加载机制加载RPC中接口与实现类的映射关系;
    • 客户端以字节流形式发送请求消息,可以使用配置实现编解码的protobuf之类的技术,服务到按照映射去查找接口的具体实现对象;
    • 通过反射机制根据参数创建接口对象的实例,回调封装成应答消息;

    关于Netty实现RPC框架,以及一些更加详细的问题,在我最后找到的一篇博客中介绍的淋漓尽致(写的太好了…我就不多说了)

    链接:谈谈如何使用Netty开发实现高性能的RPC服务器

  • 相关阅读:
    antd按需加载
    解决vscode开发react项目没有代码提示问题
    在react中配置less
    flutter之fluro导航传参数
    Flutter游戏:简单规则与结束页
    zsh: command not found:XXX
    React的安装与使用
    git stash 用法总结和注意点
    【OSS】工具类
    ajax将数组或list集合传到后台 的 【坑】
  • 原文地址:https://www.cnblogs.com/xiongjim/p/9687577.html
Copyright © 2011-2022 走看看