RPC编程:RPC概述和架构演变

news2025/2/26 15:00:29

RPC编程系列文章第一篇

    • 一:引言
      • 1:本系列文章的目标
      • 2:RPC的概念
    • 二:架构的演变过程
      • 1:单体架构
        • 1):概念
        • 2):特点
        • 3):优缺点
      • 2:单体架构水平扩展
        • 1):水平拓展的含义
        • 2):水平拓展的意义
      • 3:垂直架构
        • 1):概念
        • 2):如何操作
        • 3):优缺点
      • 4:RPC架构
        • 1:跨进程调用是走HTTP还是TCP?
        • 2:优缺点比较

一:引言

1:本系列文章的目标

  1. RPC的架构理解
  1. 设计RPC的核心技术难点
    通信+协议+序列化方式+方便调用
  1. 多种序列化方式(Hession、Thirft、Prototype)
    掌握这些常用的序列化方式,JSON和JDK自己的序列化方式,都算。
  1. 多种RPC解决方案(HessionRPC,Grpc)
    一整套通信+协议+序列化方式+方便调用的解决方案,对既有技术的掌握,HessionRPC的RPC是使用的Hession的序列化方案,这种方案是在Dubbo广泛使用的,但是有点过时了。
  1. 注册中心,熔断,限流等设计思想
    RPC最核心的过程,为了当前的RPC原始的解决方案增加了新的功能,在我们的微服务领域见怪不怪了,此时RPC已经不单单是RPC,已经往SOA架构过度。
  1. 自研RPC

2:RPC的概念

RPC是远程调用(Remote Procedure Call)的缩写形式,是一种跨进程(JVM)的方法调用形式。是目前在Java分布式,微服务体系中,重要的一种通信方式。

Java体系中的进程就是指的JVM,在Java体系中的跨进程,我们可以简单的理解为跨虚拟机之间的访问。

二:架构的演变过程

1:单体架构

1):概念

也叫做单体应用:就是系统中所有的功能(代码)合在了一起。并且生成一个jar或者war。部署在一个tomcat中(JVM一个进程)

首页门户和后台管理系统在同一个web服务当中:
在这里插入图片描述
在这里插入图片描述

2):特点

一个jar,一个war包含所有子系统,在一个服务中。

3):优缺点

随着互联网的发展,客户群体和访问量的增加,很多问题暴露了出来:

1:热点问题 (某个子系统访问量大,导致其他子系统的访问出现问题)
2:扩展性差,新资源的分配力度不精确(门户系统访问量,增加机器,增加服务器tomcat。但是新增的资源,不能精确给到门户)
:3:模块(子系统)合度高、相互影响(修改某一个子系统的代码,产生了问题,影响其他的子系统)
4:维护部署成本高(某次发布,只更新了后台管理的(订单模块),但是因为是单体架构,所以会发布整个系统。
5:技术栈受限,必须使用相同的编程语言开发不同的子系统。

2:单体架构水平扩展

1):水平拓展的含义

在这里插入图片描述
LB是我们的负载均衡器

2):水平拓展的意义

解决不了单体架构的问题,但是可以解决单体架构在单个服务计算机资源特别是内存、CPU、网络连接数遇到瓶颈时的问题。

3:垂直架构

1):概念

把一个单体架构的应用,按照子系统进行了划分,每个子系统都独立部署在自己的tomcat中。多个子系统共享数据库等存储资源

2):如何操作

门户和后台管理系统一人一个jar包,当前分割粒度是基于子系统进行分割(还没有达到模块的粒度)

3):优缺点

1:把一个单体架构的应用,按照子系统进行了划分,每个子系统都独立部署在自己的tomcat(JVM 进程)中。多个子系统共享数据库等存储资源.
2:垂直架构做水平扩展。
3:有限的解决了单体架构的部分问题。
热点问题 (子系统级别的热点问题解决了,但是模块的热点问题没有解决)。
扩展性差 (子系统级别,增加机器,资源分配 相对精确)
技术栈也不要求统一语言 (门户 PHP,后台管理 Java)

4:RPC架构

1:跨进程调用是走HTTP还是TCP?

都可以,各有利弊。这里解释一下,Http底层也是TCP但是做了封装,Http是端连协议,及时是Http1.1也是有限长连接,时长上比Tcp协议短多了。

2:优缺点比较

在这里插入图片描述

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

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

相关文章

提到数字化,你想到哪些关键词

我们的生活中已经充满了数据,各种岗位例如运营、市场、营销上也都喜欢在职位要求加上一条利用数据、亦或是懂得数据分析。事实上,数据已经成为了构建现代社会的基本生产要素,并且因为不受自然环境的限制,已经成为了人们对未来社会…

【论文笔记】Manhattan-SDF==ZJU==CVPR‘2022 Oral

Neural 3D Scene Reconstruction with the Manhattan-world Assumption 本文工作:基于曼哈顿世界假设,重建室内场景三维模型。 1.1 曼哈顿世界假设 参考阅读文献:Structure-SLAM: Low-Drift Monocular SLAM in Indoor EnvironmentsIEEE IR…

ASEMI高压MOS管ASE20N65SE体积,ASE20N65SE大小

编辑-Z ASEMI高压MOS管ASE20N65SE参数: 型号:ASE20N65SE 漏极-源极电压(VDS):650V 栅源电压(VGS):30V 漏极电流(ID):20A 功耗(P…

Ardiuno-交通灯

LED交通灯实验实验器件:■ 红色LED灯:1 个■ 黄色LED灯:1 个■ 绿色LED灯:1 个■ 220欧电阻:3 个■ 面包板:1 个■ 多彩杜邦线:若干实验连线1.将3个发光二极管插入面包板,2.用杜邦线…

Docker----------day-mysql8主从复制

1.安装master 1.1拉取镜像 docker search mysql docker pull mysql mkdir -p /home/mysql8/data mkdir -p /home/mysql8/conf mkdir -p /home/mysql8/log1.2 2.启动交互式添加容器数据卷 #不添加容器数据卷 docker run -p 3307:3306 --name mysql_master -e MYSQL_ROOT_PASS…

xss基础

目录标题一、XSS的原理二、XSS漏洞分类1、反射型xss2、存储型XSS3、基于DOM的XSS三、XSS漏洞的危害及验证四、XSS漏洞的黑盒测试五、XSS漏洞的白盒测试一、XSS的原理 跨站脚本攻击XSS(Cross Site Scripting),为了不和层叠样式表(…

有序表之红黑树

文章目录1、五个条件2、调整策略2.1 插入调整的情况2.1.1 情况一:插入节点是红色,其父节点也是红色2.1.2 情况二2.1.2 代码实现2.2 删除调整的情况2.2.1 情况一:双重黑节点的兄弟节点也是黑色,且其兄弟的两个孩子也是黑色2.2.2 情…

100亿级订单怎么调度,来一个大厂的极品方案

背景 超时处理,是一个很有技术难度的问题。 所以很多的小伙伴,在写简历的时候,喜欢把这个技术难题写在简历里边, 体现自己高超的技术水平。 在40岁老架构师 尼恩的读者交流群(50)中,尼恩经常指导大家 优化简历。 最…

教你学git

前言 git是一种用于多人合作写项目。详细说明如下 文章目录前言什么是版本控制?什么是 Git?它就属于人工版本控制器版本控制工具常见版本控制工具怎么工作的?git 文件生命周期状态区域安装配置-- global检查配置创建仓库工作流与基本操作查看…

高精密数字源表的发展史

在半导体、汽车、医疗等高端制造行业,源表通常被用于半导体材料或精密器件的电性能特性测试和生产测试应用,以及中低电平测试和实验室研究使用。源表采用四象限工作模式,可以在提供精密电压、电流源的同时,又能够作为电压、电流、…

浅谈Java线程池中的ThreadPoolExecutor工具类

目录 ThreadPoolExecutor的构造函数 关于线程池的一些补充 线程池运行原理分析 概念原理解释 整个流程图如下: 一点补充 创建线程池主要有两种方式: 通过Executor工厂类创建,创建方式比较简单,但是定制能力有限通过ThreadPoo…

Git ---- 概述

Git ---- 概述1. 何为版本控制2. 为什么需要版本控制3. 版本控制的工具集中式版本控制工具分布式版本控制工具4. Git 简史5. Git 工作机制6. Git 和代码托管中心Git 是一个免费的、开源的分布式版本控制系统,可以快速高效地处理从小型到大型的各种项目。 Git 易于学…

深入浅出C++ ——继承

文章目录一、继承的相关概念1. 继承的概念2. 继承格式3. 继承方式4. 访问限定符5. 继承基类成员访问方式的变化二、基类和派生类对象赋值转换三、继承中的作用域四、派生类的默认成员函数五、继承与友元六、继承与静态成员七、菱形继承及菱形虚拟继承1. 单继承2. 多继承3. 菱形…

【比赛合集】9场可报名的「创新应用」、「程序设计」大奖赛,任君挑选!

CompHub 实时聚合多平台的数据类(Kaggle、天池…)和OJ类(Leetcode、牛客…)比赛。本账号同时会推送最新的比赛消息,欢迎关注!更多比赛信息见 CompHub主页 或 点击文末阅读原文以下信息仅供参考,以比赛官网为准目录创新应用赛&…

基于Java+SpringBoot+Vue+Uniapp前后端分离健身预约系统设计与实现

博主介绍:✌全网粉丝3W,全栈开发工程师,从事多年软件开发,在大厂呆过。持有软件中级、六级等证书。可提供微服务项目搭建与毕业项目实战✌ 博主作品:《微服务实战》专栏是本人的实战经验总结,《Spring家族及…

linux集群技术(二)--keepalived(高可用集群)(一)

高可用集群简介keepalived简介 1.高可用集群简介 1.1什么是高可用集群 高可用集群(High Availability Cluster,简称HA Cluster),是指以减少服务中断时间为目的的服务器集群技术。它通过保护用户的业务程序对外不间断提供的服务&am…

Vue3后台管理系统(一)基础环境

目录 一、初始化 二、整合Element-Plus 三、路径别名 四、多环境配置 五、反向代理 六、其他依赖 一、初始化 npm init vitelatest vue3-element-admin --template vue-ts 二、整合Element-Plus 1.本地安装Element Plus和图标组件 npm install element-plus npm inst…

code-breaking之javacon

JAVACON 题目 此题 来自P神 的code-breaking中的一道Java题,名为javacon,题目知识点为SpEL注入 题目下载地址:https://www.leavesongs.com/media/attachment/2018/11/23/challenge-0.0.1-SNAPSHOT.jar 运行环境 java -jar challenge-0.…

实用指南:如何在Anolis OS上轻松使用 Kata 安全容器?

文/云原生SIG本篇文章我们将详细介绍怎么轻松在 Anolis OS 上使用 Kata Containers 安全容器,我们将介绍 Kata Container 社区于 2022 年 10 月 10 日最新发行的 Kata3.0.0 的安装部署方式,3.0.0 版本包含了基于袋鼠 RunD 开源的最新 Rust Kata runtime …

AAAI 2023 | 小鹏汽车纽约石溪:在末层激活上作对抗训练的域自适应

原文链接:https://www.techbeat.net/article-info?id4602 作者:吕骋 增强未标记目标域数据的模型预测置信度是无监督域自适应(UDA) 的一个重要目标。在本文中,作者探讨了末层激活(即最后一层线性分类层输入…