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

目录

什么是系统架构

单体架构

介绍

示例图

优点

缺点

集群架构

介绍

示意图

优点

缺点

分布式架构

示意图

优点

缺点

生态扩展

介绍

示意图

优点

缺点

扩展:分布式服务解析

纵切拆服务

全链路追踪能力

循环依赖

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


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

什么是系统架构

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

单体架构

介绍

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

示例图

优点

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

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

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

缺点

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

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

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

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

集群架构

介绍

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

示意图

优点

  • 解决大并发问题

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

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

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

缺点

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

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

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

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

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

分布式架构

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

  • 服务拆分

  • 远程调用

  • 服务治理

  • 请求路由

  • 身份认证

  • 配置管理

  • 服务保护

  • 分布式事务

  • 异步通信

  • 消息可靠性

  • 延迟消息

  • 分布式搜索

  • 倒排索引

  • 数据聚合

示意图

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

优点

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

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

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

缺点

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

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

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

生态扩展

介绍

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

示意图

优点

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

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

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

缺点

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

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

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

扩展:分布式服务解析

纵切拆服务

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

全链路追踪能力

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

循环依赖

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

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

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

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

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

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

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

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

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

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

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


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

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

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

相关文章

OLED--软件I2C驱动__标准库和HAL库

一、标准库---版本一 OLED.c--标准库 #include "stm32f10x.h" #include "OLED_Font.h"/*引脚配置*/ #define OLED_W_SCL(x) GPIO_WriteBit(GPIOB, GPIO_Pin_8, (BitAction)(x)) #define OLED_W_SDA(x) GPIO_WriteBit(GPIOB, GPIO_Pin_9, (BitAction)(x…

编辑器Vim基本模式和指令 --【Linux基础开发工具】

文章目录 一、编辑器Vim 键盘布局二、Linux编辑器-vim使用三、vim的基本概念正常/普通/命令模式(Normal mode)插入模式(Insert mode)末行模式(last line mode) 四、vim的基本操作五、vim正常模式命令集插入模式从插入模式切换为命令模式移动光标删除文字复制替换撤销上一次操作…

ChatGPT被曝存在爬虫漏洞,OpenAI未公开承认

OpenAI的ChatGPT爬虫似乎能够对任意网站发起分布式拒绝服务(DDoS)攻击,而OpenAI尚未承认这一漏洞。 本月,德国安全研究员Benjamin Flesch通过微软的GitHub分享了一篇文章,解释了如何通过向ChatGPT API发送单个HTTP请求…

成就与远见:2024年技术与思维的升华

个人主页:chian-ocean 前言: 2025年1月17日,2024年博客之星年度评选——创作影响力评审的入围名单公布。我很荣幸能够跻身Top 300,虽然与顶尖博主仍有一定差距,但这也为我提供了更加明确的发展方向与指引。展望崭新的2025年&…

【前端】CSS学习笔记(2)

目录 CSS3新特性圆角阴影动画keyframes 创建动画animation 执行动画timing-function 时间函数direction 播放方向过渡动画(transition) 媒体查询设置meta标签媒体查询语法 雪碧图字体图标 CSS3新特性 圆角 使用CSS3border-radius属性,你可以…

基于.Net Core+Vue的文件加密系统

1系统架构图 2 用例图 管理员角色的用例: 文件分享大厅:管理员可以访问文件分享大厅,下载文件。个人信息管理:管理员可以更新自己的个人信息,修改密码。用户管理:管理员负责创建、更新或删除用户账户&…

Python从0到100(八十四):神经网络-卷积神经网络训练CIFAR-10数据集

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Pyth…

YOLOv9改进,YOLOv9检测头融合RFAConv卷积,适合目标检测、分割任务

摘要 空间注意力已广泛应用于提升卷积神经网络(CNN)的性能,但它存在一定的局限性。作者提出了一个新的视角,认为空间注意力机制本质上解决了卷积核参数共享的问题。然而,空间注意力生成的注意力图信息对于大尺寸卷积核来说是不足够的。因此,提出了一种新型的注意力机制—…

大模型LLM-微调 RAG

RAG小结 这篇文章是一篇关于大型语言模型(LLMs)增强技术的综述论文,特别聚焦于检索增强生成(Retrieval-Augmented Generation, RAG)这一领域。详细考察了RAG的发展、技术基础、关键技术、评估框架以及未来的研究方向。…

【专题】为2025制定可付诸实践的IT战略规划报告汇总PDF洞察(附原数据表)

原文链接:https://tecdat.cn/?p39055 在当今瞬息万变的商业环境中,制定有效的 IT 战略规划对于企业的成功与可持续发展至关重要。本报告深入探讨了制定 IT 战略规划的关键活动,旨在为企业和决策者提供全面且实用的指导。 Gartner的《为202…

CBAM-2018学习笔记

名称: Convolutional Block Attention Module (CBAM) 来源: CBAM: Convolutional Block Attention Module 相关工作: #ResNet #GoogleNet #ResNeXt #Network-engineering #Attention-mechanism 创新点: 贡献: 提…

Invicti-Professional-V25.1

01 更新介绍 此更新包括对内部代理的更改。内部扫描代理的当前版本为 25.1.0。内部身份验证验证程序代理的当前版本为 25.1.0。#新功能现在,单击扫描摘要屏幕中的预设扫描图标会将您重定向到具有过滤视图的 “最近扫描” 页面,从而改进导航和对相关扫描…

React 中hooks之useDeferredValue用法总结

目录 概述基本用法与防抖节流的区别使用场景区分过时内容最佳实践 概述 什么是 useDeferredValue? useDeferredValue 是 React 18 引入的新 Hook,用于延迟更新某个不那么重要的部分。它接收一个值并返回该值的新副本,新副本会延迟更新。这种延迟是有…

iOS 性能优化:实战案例分享

摘要: 本文将深入探讨 iOS 性能优化的重要性,并通过一系列实际开发案例,展示如何解决常见的性能问题,包括内存管理、CPU 性能、网络性能、UI 性能和启动性能等方面的优化,帮助 iOS 开发者打造更流畅、高效的应用程序。…

TMC2208替代A4988

前言 TMC2208 是一款先进的 1 轴步进驱动器,支持 stealthChop ™和 256 微步。本应用说明介绍了如何设置 TMC2208 以替代 A4988(传统模式)。 引脚比较 与其他电机驱动器相比,TMC2208 具有附加功能:256 微步。 自动…

二十三种设计模式-代理模式

一、定义与核心思想 代理模式是一种结构型设计模式,其核心思想是提供一个代理对象,用以控制对实际对象的访问。通过代理对象,可以在不改变实际对象的情况下,添加各种功能,如权限控制、懒加载、缓存、远程调用等。 二…

SQL刷题快速入门(三)

其他章节: SQL刷题快速入门(一) SQL刷题快速入门(二) 承接前两个章节,本系列第三章节主要讲SQL中where和having的作用和区别、 GROUP BY和ORDER BY作用和区别、表与表之间的连接操作(重点&…

ComfyUI 矩阵测试指南:用三种方法,速优项目效果

在ComfyUI中,矩阵测试也叫xyz图表测试,作用是通过控制变量的方式来对Lora模型以及各种参数开展测试,并进行有效区分。其中测试方法有很多种,可以通过借助插件也可以自行搭建工作流实现,下面介绍3种方式: 1…

在stm32中C语言编写的程序中,一个整形数据是怎么存储的,高位在前还是低位在前

目录 举个例子 如何验证 小结 在 STM32(基于 ARM Cortex-M 架构)的系统中,默认是小端(Little Endian) 存储方式。也就是说,对于一个整型(例如 32 位 int),它的最低有效…

图数据库 | 19、高可用分布式设计(下)

相信大家对分布式系统设计与实现的复杂性已经有了一定的了解,本篇文章对分布式图数据库系统中最复杂的一类系统架构设计进行探索,即水平分布式图数据库系统(这个挑战也可以泛化为水平分布式图数据仓库、图湖泊、图中台或任何其他依赖图存储、…