IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 网络协议 -> RPC简介 -> 正文阅读

[网络协议]RPC简介

RPC简介

一、为什么要有RPC

????随着项目业务越来越复杂,业务量越来越大,单个应用或者一台机器的资源肯定是背负不起的。那现在应该怎么做?将核心业务抽取出来,作为独立的服务,放到其他服务器上或者形成集群。这个时候就会请出RPC,系统演变为分布式的架构。
在这里插入图片描述

二、什么是RPC

????RPC,Remote Procedure Call,远程过程调用,它是一种通过网络从远程计算机程序上请求服务,而不需要了解底层网络的技术。

三、一次完整的RPC同步调用流程

????(1)服务消费方(client)以本地调用的方式调用客户端存根
????????客户端存根就是远程方法在本地的模拟对象,一样也有方法名,方法参数。client stub接收到调用后负责将方法名、方法参数等包装,并将包装后的消息通过网络发送到服务端。
????(2)服务端收到消息后,交给代理存根在服务器的部分后进行解码为实际的方法名和参数。
????(3)server stub根据解码结果调用服务器上本地的实际服务。
????(4)本地服务执行并将结果返回给server stub。
????(5)server stub将返回结果打包成消息并发送至消费方。
????(6)client stub接收到消息,并进行解码。
????(7)服务消费方得到最终结果。
????RPC框架的目标是要将中间步骤都封装起来,让我们进行远程方法调用的时候感觉到就像在本地调用一样。
在这里插入图片描述

四、RPC和HTTP

????rpc字面意思就是远程过程调用,只是对不同应用间相互调用的一种描述,一种思想。
????实现方式可以是最直接的tcp通信,也可以是http方式,甚至可以是消息中间件。例如:dubbo是基于tcp的,gRPC是基于http2.0的。
????所以,RPC和HTTP完全是两个不同层级的东西,他们之间并不具有可比性。

五、实现RPC框架需要解决的问题

1、代理问题

????代理要解决的是被调用服务本质上是远程的服务,但是调用者不知道也不关心,调用者只要结果,具体的事情由代理的那个对象来负责这件事。在RPC使用代理要添加的额外功能就是通过网络访问远程服务。

2、序列化问题

????序列化问题在计算机里具体是什么?我们的方法调用,有方法名,方法参数,这些可能是字符串,可能是我们自己定义的java类,但是在网络上传输或者保存在硬盘的时候,网络或者硬盘并不认得什么字符串或者javabean,它只认得二进制的01串,怎么办?要进行序列化,网络传输后要进行实际调用,就要把二进制的01串变回我们实际的java类,叫反序列化。java里为我们提供了相关的机制:Serializable。

3、通信问题

????将内容序列化后如何在网络中传输,BIO、NIO等。

4、登记的服务实例化

????登记的服务有可能在我们系统中就是一个名字,怎样变成实际执行的对象实例,反射机制。
????反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能调用它的任意一个方法和属性;这种动态获取信息以及动态调用对象的方法的功能称为java语言的反射机制。

  网络协议 最新文章
使用Easyswoole 搭建简单的Websoket服务
常见的数据通信方式有哪些?
Openssl 1024bit RSA算法---公私钥获取和处
HTTPS协议的密钥交换流程
《小白WEB安全入门》03. 漏洞篇
HttpRunner4.x 安装与使用
2021-07-04
手写RPC学习笔记
K8S高可用版本部署
mySQL计算IP地址范围
上一篇文章           查看所有文章
加:2022-05-09 13:06:47  更:2022-05-09 13:09:09 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/19 9:33:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码