彻底讲清楚 单体架构、集群架构、分布式架构及扩展架构

目录

什么是系统架构

单体架构

介绍

示例图

优点

缺点

集群架构

介绍

示意图

优点

缺点

分布式架构

示意图

优点

缺点

生态扩展

介绍

示意图

优点

缺点

扩展:分布式服务解析

纵切拆服务

全链路追踪能力

循环依赖

全链路日志(End-to-End Logs)


阅前提醒:前后端分离架构是前后端之间的架构方式。而这里所讲的三种架构是后端部署方式。

什么是系统架构

系统架构是指软件系统的结构设计,它定义了系统的组件、组件之间的关系以及组件与环境之间的交互。系统架构是软件系统开发的基础,它影响着系统的可维护性、可扩展性、性能和安全性。

单体架构

介绍

单体架构是一种传统的软件架构模式,其中所有的功能模块都集成在一个单一的应用程序中。这种架构简单、易于部署和测试,但在扩展性和维护性方面存在局限性。随着应用规模的增长,单体架构可能导致性能瓶颈和开发效率降低。

示例图

优点

  • 简单性:开发、部署和测试过程简单直接。

  • 性能:由于所有组件都在同一个进程中运行,所以内部通信快速且高效。

  • 易于管理:系统的所有部分都集中在一个代码库中,便于管理。

缺点

  • 扩展性差:难以水平扩展,因为整个应用必须作为一个整体进行扩展。

  • 技术限制:整个应用可能被绑定到特定的技术栈,难以引入新技术。

  • 部署困难:每次更新都需要重新部署整个应用,可能导致较长的停机时间。

  • 维护成本高:随着应用规模的增长,维护成本和复杂性增加。

集群架构

介绍

集群架构是指将多个服务器或节点组合在一起,以实现高可用性和负载均衡。在集群架构中,多个节点可以协同工作,共同处理请求,从而提高系统的处理能力和可靠性。集群架构通常用于需要高并发处理和高可用性的系统。

示意图

优点

  • 解决大并发问题

  • 高可用性:通过多节点运行,提供更高的系统可用性。

  • 负载均衡:可以有效分散请求负载,提高系统处理能力。

  • 容错性:单个节点的故障不会导致整个系统的崩溃。

缺点

  • 复杂性:需要复杂的协调和管理机制来处理节点之间的通信和数据一致性。

  • 成本:需要更多的硬件资源,增加了成本。

  • 维护难度:管理和维护集群需要专业知识和技能。

  • 更新业务:牵一发动全身,就很麻烦

  • 跨语言交互:多语言团队如何解决?

分布式架构

分布式架构是一种将应用程序的不同组件分布在不同的网络节点上的架构模式。这种架构可以提高系统的可扩展性、可靠性和容错能力。分布式架构通常用于需要处理大量数据和高并发请求的系统,可分别从以下开始做起:

  • 服务拆分

  • 远程调用

  • 服务治理

  • 请求路由

  • 身份认证

  • 配置管理

  • 服务保护

  • 分布式事务

  • 异步通信

  • 消息可靠性

  • 延迟消息

  • 分布式搜索

  • 倒排索引

  • 数据聚合

示意图

单体架构 转为 微服务(分布式)架构

优点

  • 可扩展性:可以轻松地通过增加更多的节点来扩展系统。

  • 灵活性:可以独立地更新和扩展系统的各个部分。

  • 容错性:系统的某个部分失败不会影响整个系统。

缺点

  • 复杂性:增加了系统设计的复杂性,需要处理网络延迟、数据一致性等问题。

  • 运维难度:需要专业的运维知识和技能来管理和维护分布式系统。

  • 性能开销:网络通信和数据同步可能引入额外的性能开销。

生态扩展

介绍

生态扩展是指通过集成第三方服务、API和工具来扩展系统的功能和能力。这种扩展方式可以快速增加系统的功能,同时保持系统的灵活性和可维护性。生态扩展是现代软件开发中常见的一种策略,特别是在微服务架构和云原生应用中。

示意图

优点

  • 灵活性:可以快速集成第三方服务和工具,扩展系统功能。

  • 创新性:利用现有的生态系统,可以快速创新和推出新功能。

  • 成本效益:通过使用第三方服务,可以降低开发和维护成本。

缺点

  • 依赖性:过度依赖第三方服务可能影响系统的稳定性和安全性。

  • 集成难度:不同服务和工具之间的集成可能复杂且具有挑战性。

  • 数据管理:需要管理多个服务之间的数据流和数据一致性。

扩展:分布式服务解析

纵切拆服务

指的是将一个大型的、复杂的服务拆分成多个小型、独立的服务,每个服务负责特定的功能。这种拆分可以提高系统的可维护性和可扩展性。

全链路追踪能力

指的是能够追踪一个请求或事务在系统中的整个执行路径,包括所有的服务调用、数据库访问等。这种追踪能力对于故障排查、性能优化和事务管理非常重要。

循环依赖

指的是在软件系统中,两个或多个模块相互依赖,形成一个闭环。循环依赖会导致系统难以理解和维护,通常需要通过重构来解决。

全链路日志(End-to-End Logs)

指的是记录一个请求或事务在系统中的每个步骤的日志。这种日志对于监控系统状态、分析性能瓶颈和追踪事务处理流程非常有用。它可以提供以下多个方面的价值:

  • 故障排查和问题定位:全链路日志允许开发人员和运维团队跟踪整个请求或事务的执行路径。当系统中发生故障或异常时,可以使用全链路日志追踪问题的根本原因,找到导致问题的具体组件或服务,快速定位和解决问题。

  • 性能监测和调优:通过分析全链路日志,可以了解请求的执行时间、延迟和吞吐量等性能指标。这有助于发现性能瓶颈、优化关键路径和提高系统的响应速度。

  • 事务追踪:全链路日志记录了一个请求或事务在系统中的每个步骤,包括调用其他服务、访问数据库等。这对于跟踪事务的处理流程和了解每个步骤的状态非常有用。

  • 监控和警报:全链路日志可以用于设置监控和警报规则。当系统中的某些条件达到或超过阈值时,可以触发警报,通知管理员或自动化系统采取措施。

  • 安全审计:全链路日志记录了用户的操作和访问历史,可以用于安全审计和合规性监督。它有助于检测潜在的安全问题和不正常的行为。

  • 容量规划:通过全链路日志,可以分析系统的负载情况和资源使用情况,帮助规划和预测系统的容量需求。

  • 改进用户体验:全链路日志可以提供对用户行为和体验的洞察,帮助优化用户界面和用户交互,提供更好的用户体验。

  • 版本追踪:对于分布式系统的不同版本或部署,全链路日志可以用于追踪不同版本之间的行为和性能差异。


更多经常内容尽在 vx公棕号 wmcode

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Typora + PowerShell 在终端打开文件

最近在用 Hexo 搭我人生中的第一个博客,Hexo 新建帖子的时候需要在终端用命令hexo n,然后再用 Typora 打开,用鼠标感觉很麻烦,因此直接用终端一键启动了。 发现 Typora 的一个 bug🐛,在 YAML 后面写第一个字…

【RAG落地利器】向量数据库Qdrant使用教程

TrustRAG项目地址🌟:https://github.com/gomate-community/TrustRAG 可配置的模块化RAG框架 环境依赖 本教程基于docker安装Qdrant数据库,在此之前请先安装docker. Docker - The easiest way to use Qdrant is to run a pre-built Docker i…

设计模式-单例模式

定义 保证一个类仅有一个实例,并提供一个访问它的全局访问点。 类图 类型 饿汉式 线程安全,调用效率高,但是不能延迟加载。 public class HungrySingleton {private static final HungrySingleton instancenew HungrySingleton();private …

初学stm32 --- CAN

目录 CAN介绍 CAN总线拓扑图 CAN总线特点 CAN应用场景 CAN物理层 CAN收发器芯片介绍 CAN协议层 数据帧介绍 CAN位时序介绍 数据同步过程 硬件同步 再同步 CAN总线仲裁 STM32 CAN控制器介绍 CAN控制器模式 CAN控制器模式 CAN控制器框图 发送处理 接收处理 接收过…

OpenHarmony 4.1 SDK11 北向应用开发笔记

目录 声明 1、开启其他应用 2、延时切换页面 3、设置页面切换效果 4、设置背景图片和背景铺满屏幕 5、设置隐藏状态和导航条 6、设置组件大小和对齐方式 7、设置按钮类型改变按钮边框圆角半径 8、常用布局方式 9、布局技巧 声明 本笔记基于OpenHarmony 4.1 SDK11&am…

leetcode707-设计链表

leetcode 707 思路 本题也是用了虚拟头节点来进行解答,这样的好处是,不管是头节点还是中间的节点都可以当成是中间节点来处理,用同一套方法就可以进行处理,而不用考虑太多的边界条件。 下面题目中最主要的实现就是添加操作addA…

高效实现 Markdown 转 PDF 的跨平台指南20250117

高效实现 Markdown 转 PDF 的跨平台指南 引言 Markdown 文件以其轻量化和灵活性受到开发者和技术写作者的青睐,但如何将其转换为易于分享和打印的 PDF 格式,是一个常见需求。本文整合了 macOS、Windows 和 Linux 三大平台的转换方法,并探讨…

汽车网络信息安全-ISO/SAE 21434解析(上)

目录 概述 第四章-概述 1. 研究对象和范围 2. 风险管理 第五章-组织级网络安全管理 1. 网络安全治理(cybersecurity governance) 2. 网络安全文化(cybersecurity culture) 3. 信息共享(Information Sharing) 4. 管理体系…

计算机网络 (50)两类密码体制

前言 计算机网络中的两类密码体制主要包括对称密钥密码体制(也称为私钥密码体制、对称密码体制)和公钥密码体制(也称为非对称密码体制、公开密钥加密技术)。 一、对称密钥密码体制 定义: 对称密钥密码体制是一种传…

PCL K4PCS算法实现点云粗配准【2025最新版】

目录 一、算法原理1、算法概述2、算法流程3、参考文献二、 代码实现1、原始版本2、2024新版三、 结果展示本文由CSDN点云侠原创,原文链接,首发于:2020年4月27日。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的抄袭狗。 博客长期更新,本文最近一次更新时间为…

消息队列实战指南:三大MQ 与 Kafka 适用场景全解析

前言:在当今数字化时代,分布式系统和大数据处理变得愈发普遍,消息队列作为其中的关键组件,承担着系统解耦、异步通信、流量削峰等重要职责。ActiveMQ、RabbitMQ、RocketMQ 和 Kafka 作为市场上极具代表性的消息队列产品&#xff0…

python编程-OpenCV(图像读写-图像处理-图像滤波-角点检测-边缘检测)边缘检测

OpenCV中边缘检测四种常用算子: (1)Sobel算子 Sobel算子是一种基于梯度的边缘检测算法。它通过对图像进行卷积操作来计算图像的梯度,并将梯度的大小作为边缘的强度。它使用两个3x3的卷积核,分别用于计…

C语言编程笔记:文件处理的艺术

大家好,这里是小编的博客频道 小编的博客:就爱学编程 很高兴在CSDN这个大家庭与大家相识,希望能在这里与大家共同进步,共同收获更好的自己!!! 本文目录 引言正文一、为什么要用文件二、文件的分…

头歌答案--爬虫实战

目录 urllib 爬虫? 第1关:urllib基础 任务描述 第2关:urllib进阶? 任务描述 requests 爬虫 第1关:requests 基础 任务描述 第2关:requests 进阶 任务描述 网页数据解析 第1关:XPath解析网页? 任务描述…

【JavaEE】Spring Web MVC

目录 一、Spring Web MVC简介 1.1 MVC简介1.2 Spring MVC1.3 RequestMapping注解1.3.1 使用1.3.2 RequestMapping的请求设置 1.3.2.1 方法11.3.2.2 方法2 二、Postman介绍 2.1 创建请求2.2 界面如下:2.3 传参介绍 一、Spring Web MVC简介 官方文档介绍&#xff…

Sqlmap入门

原理 在owasp发布的top10 漏洞里面,注入漏洞一直是危害排名第一,其中数据库注入漏洞是危害的。 当攻击者发送的sql语句被sql解释器执行,通过执行这些恶意语句欺骗数据库执行,导致数据库信息泄漏 分类 按注入类型 常见的sql注入…

RabbitMQ基础篇

文章目录 1 RabbitMQ概述1.1 消息队列1.2 RabbitMQ体系结构 2 RabbitMQ工作模式2.1 简单模式(Simple Queue)2.2 工作队列模式(Work Queues)2.3 发布/订阅模式(Publish/Subscribe)2.4 路由模式(R…

javaEE初阶————多线程初阶(2)

今天给大家带来第二期啦,保证给大家讲懂嗷; 1,线程状态 NEW安排了工作还未开始行动RUNNABLE可工作的,或者即将工作,正在工作BLOCKED排队等待WAITING排队等待其他事TIMED_WAITING排队等待其他事TERMINATED工作完成了 …

于灵动的变量变幻间:函数与计算逻辑的浪漫交织(下)

大家好啊,我是小象٩(๑ω๑)۶ 我的博客:Xiao Xiangζั͡ޓއއ 很高兴见到大家,希望能够和大家一起交流学习,共同进步。 这一节我们主要来学习单个函数的声明与定义,static和extern… 这里写目录标题 一、单个函数…

【数据分析】02- A/B 测试:玩转假设检验、t 检验与卡方检验

一、背景:当“审判”成为科学 1.1 虚拟场景——法庭审判 想象这样一个场景:有一天,你在王国里担任“首席审判官”。你面前站着一位嫌疑人,有人指控他说“偷了国王珍贵的金冠”。但究竟是他干的,还是他是被冤枉的&…