深入浅出RPC

news2024/11/27 12:35:26

什么是RPC

在这里插入图片描述

为什么要有RPC

在这里插入图片描述

PRC架构组件

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

RPC框架需要解决的问题?

1、如何确定客户端和服务端之间的通信协议?
2、如何更高效地进行网络通信?
3、服务端提供的服务如何暴露给客户端?
4、客户端如何发现这些暴露的服务?
5、如何更高效地对请求对象和响应结果进行序列化和反序列化操作?

RPC的实现基础?

在这里插入图片描述

RPC使用了哪些关键技术?

1、动态代理

生成Client Stub(客户端存根)和Server Stub(服务端存根)的时候需要用到Java动态代理技术,可以使用JDK提供的原生的动态代理机制,也可以使用开源的:CGLib代理,Javassist字节码生成技术。

2、序列化和反序列化

在网络中,所有的数据都将会被转化为字节进行传送,所以为了能够使参数对象在网络中进行传输,需要对这些参数进行序列化和反序列化操作。

  • 序列化:把对象转换为字节序列的过程称为对象的序列化,也就是编码的过程。
  • 反序列化:把字节序列恢复为对象的过程称为对象的反序列化,也就是解码的过程。

目前比较高效的开源序列化框架:如Kryo、FastJson和Protobuf等。

出于并发性能的考虑,传统的阻塞式 IO 显然不太合适,因此我们需要异步的 IO,即 NIO。Java 提供了 NIO 的解决方案,Java 7 也提供了更优秀的 NIO.2 支持。可以选择Netty或者MINA来解决NIO数据传输的问题。

4、服务注册中心

可选:Redis、Zookeeper、Consul 、Etcd。一般使用ZooKeeper提供服务注册与发现功能,解决单点故障以及分布式部署的问题(注册中心)。

主流RPC框架有哪些

1.Dubbo
Dubbo是 阿里巴巴公司开源的一个高性能优秀的服务框架,使得应用可通过高性能的 RPC 实现服务的输出和输入功能,可以和 Spring框架无缝集成。

RPC的实现原理架构图

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/88566.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

云存储学习笔记--3

目录前言1. 原理2. 实验前言 那么,根据我们上一版块的解释,其实经过思考会发现,传统的分区格式化会有一些问题,比如说:当我数据的存储大小超过了所有单个磁盘的存储空间大小的时候,会发现即使剩余空间总和…

论文复现-1论文重读:Black-Box Tuning for Language-Model-as-a-Service

论文核心:使用PLM的API进而完成prompt learning,微调完成任务。 具体来说,是采用连续prompts拼接在input_text之后,然后,通过derivative-free的框架,完成任务。 一、背景(Introduction&#x…

门店数字化管理|门店督导工作监管难?SpaceSight 来帮忙

在门店管理中,这些问题是否一直困扰着你: 哪家店员工作更细致高效?难评估! 有哪些门店问题高频发生?难发现! 不同门店运营差距有多大?难界定! SpaceSight 系列第二篇,为…

看看阿里程序员是怎样讲限流的

限流算法很多,常见的有三类,分别是计数器算法、漏桶算法、令牌桶算法,下面逐一讲解。 计数器算法 简单粗暴,比如指定线程池大小,指定数据库连接池大小、nginx连接数等,这都属于计数器算法。 计数器算法是限流算法里最简单也是最容易实现的一种算法。举个例子,比如…

YOLO系列目标检测算法——PP-YOLOv2

YOLO系列目标检测算法目录 - 文章链接 YOLO系列目标检测算法总结对比- 文章链接 YOLOv1- 文章链接 YOLOv2- 文章链接 YOLOv3- 文章链接 YOLOv4- 文章链接 Scaled-YOLOv4- 文章链接 YOLOv5- 文章链接 YOLOv6- 文章链接 YOLOv7- 文章链接 PP-YOLO- 文章链接 …

>python可视化神器altair

python可视化神器一.些简单图形的绘制(一).柱状图1. 然后我们还可以设置高亮柱状图的某一根柱子,其他柱子设置为一样的颜色:2. 翻转图片,同时添加图片标注,在图上加上数据3.在图形上添加线条4. 组合图,柱状图折线图(二…

[R语言]手把手教你如何绘图(万字)

目录 概况 常用高级图形 条形图 csv文件导入 csv文件导出 R语言sep函数 seq函数 with函数 直方图和密度估计图 盒型图 boxplot() 正态QQ图 散点图 pairs()散点矩阵图 曲线图 curve() 三维图 动态三维图 低级图形函数 abline() lines() legand()增加图例 …

String类——字符序列类(1)

目录 前言 String类 1.该类的由来 2.String类对象的创建 (1)头文件 (2)类对象的创建 其他用法: (3)String类对象遍历 1:数组方式遍历 2.范围for遍历: …

【Python】【期末复习题】【2022秋】

文章目录一、单选题(20分)二、判断题(10分)三、填空题(10分)四、问答题(共30分,6题,每题5分)五、程序题(3题,每题10分,共3…

React.js 简介以及一些基本概念

React 是什么 React 跟angular.js 和Vue.js 一样是构建用户界面的js库 2011 年 由Facebook 工程师Jordan Walke创建 在 2013 开源 React 的优势 原生js的痛点 原生的Javascript 操作DOM繁琐,效率低(DOM-API 操作UI)使用Javascript 直接操作DOM&#xf…

scala语法(三)(有java基础速学)

面向对象编程(中) scala的包 Scala中包名和源码所在的系统文件目录结构要可以不一致,但是编译后的字节码文件路径和包名会保持一致 scala 自动引入的包 Scala中,以下三个包的内容会隐式引用到每个程序上。 import java.lang._…

[附源码]Python计算机毕业设计二手交易平台Django(程序+LW)

该项目含有源码、文档、程序、数据库、配套开发软件、软件安装教程 项目运行 环境配置: Pychram社区版 python3.7.7 Mysql5.7 HBuilderXlist pipNavicat11Djangonodejs。 项目技术: django python Vue 等等组成,B/S模式 pychram管理等…

如何管理客商主数据,附要点和QA

客商主数据(客户、供应商、既是客户也是供应商)是企业最常用的主数据类型之一。要实现上下游的打通,方便企业内部相关业务的运转以及信息流通,做好客商主数据的管理至关重要。 什么是客商主数据 客商主数据是一类复杂的主数据&a…

一文搞懂Vue Diff算法

为什么需要diff算法? 对于一个容器(比如我们常用的#app)而言,它的内容一般有三种情况: 1.字符串类型,即是文本。 2.子节点数组,即含有一个或者多个子节点 3.null,即没有子节点 在…

【软件开发】前后端分离架构下JWT实现用户鉴权

前后端分离架构下JWT实现用户鉴权在【计算机网络】JWT(JSON Web Token)初识 中,我们讲解了 JWT 的基础知识。Token 验证的方式一般是用在前后端分离的软件开发项目中,所以本篇文章将会从前端和后端的角度去考虑 JWT 的实现。前端 …

H5和小程序的区别

近年来,由于社交电商的火爆程度,相较于传统的电商淘宝、京东、天猫这种第三方平台,其余平台的发展也势不可挡。并且第三方平台的竞争过大,成本过高,抢流量越来越难之后,越来越多的商家企业开始转战H5微商城…

基于知识图谱的多模内容创作技术

导读:由于大数据时代的发展,知识呈指数级增长,而知识图谱技术又在近年来逐步火热,因此诞生了利用知识图谱技术进行智能创作的新想法。本文将分享基于知识图谱的多模内容创作技术及应用。主要包括以下四大部分: 百度知识…

Network Configuration Manager固件漏洞管理

固件漏洞可能会使您的企业和客户的敏感数据面临风险,导致黑客容易进入、销售额下降、声誉损失和处罚。为了避免这些事故,识别这些固件漏洞并定期采取纠正措施非常重要。 使用 Network Configuration Manager,你现在可以识别网络设备中的潜在…

【数据结构-JAVA】包装类 泛型

目录 1. 包装类 1.1 基本数据类型和对应的包装类 1.2 装箱和拆箱 1.3 一道面试题 2. 泛型 2.1 什么是泛型 3. 泛型是如何编译的 3.1 擦除机制 4. 泛型的上界 5. 泛型方法 1. 包装类 在 Java 中,由于基本类型不是继承自 Object,为了在泛型代码中可以…

为什么 FIQ 比 IRQ 的响应速度更快?

目录 1、FIQ在异常向量表位于最末 2、FIQ模式有5个私有寄存器 3、FIQ的优先级高于IRQ 1、FIQ在异常向量表位于最末 一般来说,处理器跳转到异常向量表以后,会根据当前的异常源类型,执行下一次的跳转指令,但是FIQ在异常向量表的…