系统架构演变详解

2023-11-19

1、单体架构

在学习 Dubbo 之后,我们先了解一下系统架构的演变过程。

随着用户量的不断增加、业务功能的扩展逐步,系统架构变得更加完美具备了高性能、高可用、安全性等特性。

在互联网发展的早起,我们经常会在一台机器上运行所有的程序和软件。把所有软件和应用都部署在一台机器上,这样就完成一个简单系统的搭建。

在这里插入图片描述

这种单体构架的优点:

  • 开发和部署都很简单,小型项目首选
    缺点:

  • 项目启动慢:当项目的功能较多时,项目的启动会变慢。

  • 可靠性差:当项目中某个功能出现问题时,会影响到项目的其他功能。

  • 可伸缩性差:当项目中某个功能需要扩展时,需要对整个项目进行修改然后重新部署。

  • 性能低:项目部署在一台机器上,性能会有所降低

2、垂直架构

垂直架构是指将单体架构中的多个模块拆分为多个独立的项目。形成多个独立的单体架构,拆分的单体架构之间互不干涉和影响
在这里插入图片描述

垂直架构解决了单体架构存在的问题,但有产生了新的问题:

  • 重复功能太多:功能 A、B、C和D这四个功能有可能存在一个或多个相同模块。

3、分布式架构

分布式架构是指在垂直架构的基础上,将公共业务模块抽取出来,作为独立的服务,供其他调用者消费,以实现服务的共享和重用。
我们称这个独立的服务为服务提供者,调用者称服务消费者。服务消费者和服务提供者是存放在两台机器上的,所以服务消费者必须通过 RPC 调用服务提供者。

RPC(Remote Procedure Call )远程过程调用,是一种思想,有非常多的协议和技术来都实现了RPC的过程。

在这里插入图片描述

这样分布式架构解决了垂直架构存在的问题,但有产生了新的问题:

  • 服务提供者一旦产生变更,例如IP地址修改等,那么所有服务消费者也需要更变

4、SOA架构

SOA:(Service-Oriented Architecture,面向服务的架构)是一个组件模型,它将应用程序的不同功能单元(称为服务)进行拆分,并通过这些服务之间定义良好的接口和契约联系起来。
在这里插入图片描述
ESB:(Enterparise Servce Bus) 企业服务总线,服务中介。主要是提供了一个服务于服务之间的交互。ESB 包含的功能如:负载均衡,流量控制,加密处理,服务的监控,异常处理,监控告急等等。

以功能 A 为例:当 A 需要某个功能时, A 对 ESB 发出请求, ESB 在根据请求寻找需要调用的功能,然后找到功能的地址将 A 发出的请求转发给这个功能。

5、微服务

微服务架构是在 SOA 上做的升华,微服务架构强调的一个重点是“业务需要彻底的组件化和服务化”,原有的单个业务系统会拆分为多个可以独立开发、设计、运行的小应用。这些小应用之间通过服务完成交互和集成。

在这里插入图片描述
微服务的特点:

  • 服务实现组件化:A、B和C是三个项目,在开发时就可以自由选择开发技术,不需要协调其他团队。
  • 去中心化:每个微服务都有自己私有的数据库持久化业务数据
  • 自动化部署:把应用拆分成为一个一个独立的单个服务,方便自动化部署、测试、运维

6、集群、分布式和微服务的区别

分布式是将一个业务分拆多个子业务,部署在不同的服务器上。分布式的每一个子业务,都完成不同的业务,一个子业务垮了,那这个业务就不可访问了。

集群是将同一个业务,部署在多个服务器上。分布式的每个子业务都可以做集群。集群的每一台机器上都部署了同一个业务,一台服务器垮了,其它的服务器可以顶上来。

分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。

分布式是否属于微服务,微服务与分布式的细微差别是,微服务的应用不一定是分散在多个服务器上,他也可以是同一个服务器。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

系统架构演变详解 的相关文章

随机推荐

  • MATLAB代码:考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型

    MATLAB代码 考虑P2G和碳捕集设备的热电联供综合能源系统优化调度模型 关键词 碳捕集 综合能源系统 电转气P2G 热电联产 低碳调度 参考文档 Modeling and Optimization of Combined Heat an
  • 魅族7.0系统手机最简单激活Xposed框架的流程

    对于喜欢研究手机的朋友而言 常常会使用到XPOSED框架及种类繁多功能极强的模块 对于5 0以下的系统版本 只要手机能获得root权限 安装和激活XPOSED框架是异常轻易的 但随着系统版本的不断迭代 5 0以后的系统 激活XPOSED框架
  • Xray和burpsuite联动被动扫描

    想挖点src又没啥思路 试着挂个自动漏扫工具xray 又看到能与burp联动实现自动扫就想尝试一下 搞好进自己网站测试了一下 的确是爬虫式漏扫 访问量属实大 不过自己设置设置还是一个很不错的工具 安装配置 是在ddosi org这里找的破解
  • 经典问题(20)天平与砝码问题

    题目 如果有砝码序列 1 3 9 27 81 243 729 我们至少可以称量1000以内的所有整数重量 比如 5 9 3 1 即 9 放入对侧盘 3 1 放入同侧盘 再比如 19 27 9 1 编程的目标是 给定一个重量 求 天平称重时
  • Acwing-4729. 解密

    如果dt小于0 或者r不是整数 或者m r是奇数的话 m 2 与 m 2 的奇偶性相同 那么方程无解 输出NO include
  • 三进制计算机基本原理,三进制(三进制计算机)

    如题 越详细越好 最好再举个例子 十进制转任何进制都是采用整数除n取余倒序排列 小数乘n取整顺序排列的方法 比如 32 12 转 三进制 整数部分 32除以3商10余210除以3商3余13除以3商1余01除以3商 十进制数换三进制短除三 三
  • java_web:基于三层架构实现学生信息管理1.0(对学生信息的增删改查)

    学生信息管理1 0 涉及的知识点 三层架构理论 简单理解三层架构就是 上层调用下层 下层为上层提供服务 最上层 视图层 由jsp servlet组成 中间层 服务层 组装数据访问层所实现的功能 最下层 数据访问层 实现单一得某项功能 为服务
  • CSS常用样式

    目录 引入CSS样式的三种方式 内联 行内 样式 内部样式表 外部样式表 基础选择器 标签选择器 标签 各种样式 类选择器 类名 各种样式 id选择器 id号 各种样式 字体样式 font 文本样式 鼠标样式 cursor 背景样式 bac
  • MySql保留两位小数

    1 格式化小数函数format x d format 函数会对小数部分进行四舍五入操作 整数部分从右向左每3位一个逗号进行格式化输出 三位小数 整数 不足两位的情况 0 001的情况 2 随机函数ROUND X D 三位小数 整数 不足两位
  • Python03-pytest框架

    Python03 pytest测试框架 pytest简介 支持参数化可以细分控制测试用例 支持简单的单元测试和复杂的功能测试 还支持selenium appium等自动化测试 接口自动化测试 支持第三方插件 可以自定义扩展 pytestht
  • Centos7下安装Zookeeper

    一 配置java环境 1 安装JDK yum install y java 1 8 0 openjdk 2 查看版本 root zookeeper java version openjdk version 1 8 0 362 OpenJDK
  • Python3.6读取excel指定数据并根据邮件列表群发

    python3 6版本 python下载地址 https www python org getit excel 工作簿名 shuju xlsx 会上传附件 sheet表1名称 数据 sheet表2名称 邮箱 请下载附件后填上正确的邮箱 实现
  • dev c++ 配置openGL

    折腾了一早上 总算成功了 亲测有效 参考了很多博客 但是都不完整 现把解决方案分享如下 WINDOWS配置 确保你的WINDOWS SYSTEM32文件下有如下文件 glu32 dll glut32 dll glut dll opengl3
  • 实训八 利用三层交换机实现不同VLAN间通信

    原理 在交换网络中 通过VLAN对一个物理网络进行了逻辑划分 不同的VLAN之间是无法直接访问的 必须通过三层的路由设备进行连接 一般利用路由器或三层交换机来实现不同VLAN之间的互相访问 三层交换机和路由器具备网络层的功能 能够根据数据的
  • python使用scipy.stats检验正态分布

    from scipy import stats import numpy as np np random seed 1 x stats norm rvs loc 0 scale 1 size 100 print list x 夏皮罗一威尔克
  • 企业微信开发:接受消息和发送消息

    简介 本篇博文是针对本人在开发企业微信消息交互的一些经验分享 介绍一下自己开发过程中遇到的问题和解决方法 如果问题或异议 欢迎讨论 技术大佬请忽略 用户在企业微信中有2种用户操作可以发送给我们服务器 1 点菜微信企业应用的菜单 2 给企业微
  • 教你如何单机搭建测试用的分布式系统(一)

    今天来写一篇博客 教大家如何搭建分布式系统 万事开头难 很多人放弃某样东西往往都是在刚开始的时候遇到了困难 所以有句话叫做 师傅领进门 修行靠个人 这个帖子权当作领各位进门吧 开始之前先聊一下我的学习经历吧 博主一开始是学java开发的 刚
  • 软件工程java毕设项目 SSM的毕业设计管理系统(含源码+论文)

    文章目录 1 项目简介 2 实现效果 2 1 界面展示 3 设计方案 3 1 概述 3 2 系统流程 3 2 1 系统开发流程 3 3 2 教师登录流程 3 3 3 系统操作流程 3 3 系统结构设计 4 项目获取 1 项目简介 Hi 各位
  • docker宿主机访问容器_Docker容器与宿主机器通过IP内外通讯

    例如一个如下场景 在Docker环境下面运行了一个含有PHP环境的Docker容器 container 容器名称为php1 同时在宿主机 真实机器 上面有一个MySQL服务器 如何来通过 容器内部的PHP程序来访问外部的MySQL呢 原理
  • 系统架构演变详解

    文章目录 1 单体架构 2 垂直架构 3 分布式架构 4 SOA架构 5 微服务 6 集群 分布式和微服务的区别 1 单体架构 在学习 Dubbo 之后 我们先了解一下系统架构的演变过程 随着用户量的不断增加 业务功能的扩展逐步 系统架构变