集中式架构vs分布式架构
一、集中式架构
如何准确理解集中式架构
1. 集中式架构的定义
集中式架构是一种将系统的所有计算、存储、数据处理和控制逻辑集中在一个或少数几个节点上运行的架构模式。这些中央节点(服务器或主机)作为系统的核心,负责处理所有用户请求和业务逻辑,客户端只负责请求和展示。
2. 核心特性
- 单一控制中心: 所有服务和资源都由中央节点统一管理。
- 资源集中管理: 数据和计算资源位于同一位置,便于维护和扩展。
- 高一致性: 由于资源集中管理,数据一致性容易实现。
- 低通信复杂度: 客户端只需与中央节点交互,不需要节点间通信协调。
集中式架构都包括哪些架构?
集中式架构可以分为以下几种常见的架构形式:
1. 客户端-服务器架构(C/S 架构)
- 定义: 系统由客户端和服务器两部分组成,客户端负责用户交互,服务器负责业务逻辑和数据存储。
- 特点:
- 客户端通过特定协议(如 TCP/IP)与服务器通信。
- 服务器集中处理所有业务逻辑和存储数据。
- 典型场景:
- 企业办公系统(如旧版邮件客户端、OA 系统)。
- 数据库客户端(如 MySQL Workbench)。
2. 单体架构(Monolithic Architecture)
- 定义: 所有功能模块(如业务逻辑、数据访问、用户界面)在一个应用程序中实现,运行在一个中央服务器上。
- 特点:
- 应用高度耦合,部署和维护简单。
- 随着规模增大,可能难以扩展。
- 典型场景:
- 小型电商网站。
- 初创阶段的单一业务系统。
3. 主机-终端架构
- 定义: 中央主机(Mainframe)负责处理所有业务逻辑和存储数据,终端设备仅负责显示和输入。
- 特点:
- 主机提供强大的计算能力和存储能力。
- 终端设备功能简单,依赖主机运行。
- 典型场景:
- 传统银行系统(如老式 ATM 系统)。
- 早期的政府管理系统。
4. 集中式数据库架构
- 定义: 数据库集中存储在一个中央节点上,所有的读写操作都通过该节点进行。
- 特点:
- 数据一致性高。
- 性能和可靠性依赖于中央数据库的能力。
- 典型场景:
- 中小型企业的 ERP 系统。
- 单服务器运行的 CRM 系统。
案例分析与说明
案例 1:银行核心业务系统
- 架构形式: 主机-终端架构。
- 工作方式:
- 客户端(如银行柜员系统)向中央主机发送请求。
- 主机处理业务逻辑(如账户余额查询、转账)并返回结果。
- 优点:
- 高度安全,所有敏感数据只存储在中央主机。
- 数据一致性容易维护。
- 缺点:
- 随着客户增加,主机可能成为性能瓶颈。
案例 2:传统电商网站
- 架构形式: 单体架构。
- 工作方式:
- 一个服务器托管整个网站,包括用户管理、商品展示、支付功能。
- 用户通过浏览器访问服务器,所有请求集中处理。
- 优点:
- 部署和维护简单,适合初期开发。
- 开发周期短,成本低。
- 缺点:
- 难以应对高并发。
- 模块间耦合度高,扩展困难。
案例 3:集中式数据库
- 架构形式: 集中式数据库架构。
- 工作方式:
- 应用程序通过 SQL 查询中央数据库,完成数据的读写。
- 优点:
- 数据强一致性,事务处理方便。
- 易于管理备份和恢复。
- 缺点:
- 单点故障风险高。
- 难以处理大规模并发读写。
集中式架构的优缺点
优点
- 开发简单: 系统架构简单,适合快速构建和部署。
- 高一致性: 数据和逻辑集中管理,不易出现分布式一致性问题。
- 安全性强: 数据存储在中央节点,便于统一实施安全策略。
- 易于维护: 故障排查和版本更新集中在中央节点上。
缺点
- 单点故障: 中心节点宕机时,整个系统将不可用。
- 扩展性差: 随着用户增长,单一节点容易成为瓶颈。
- 性能受限: 中央节点的处理能力限制了系统的整体性能。
- 地理延迟问题: 地理位置远的客户端访问中心节点可能会有较高延迟。
总结
- 集中式架构的核心思想: 将系统的计算和存储集中在一个中心位置,以实现简单高效的管理和一致性保障。
- 常见形式: 客户端-服务器架构、单体架构、主机-终端架构、集中式数据库架构。
- 典型场景:
- 中小型系统或初创项目(开发简单,部署成本低)。
- 数据一致性要求较高的场景(如银行系统、库存管理)。
集中式架构适合小规模、低复杂度的场景,但在需要扩展性和容错性时,通常会向分布式架构演进。
二、分布式架构
如何准确理解分布式架构
1. 分布式架构的定义
分布式架构是一种将计算、存储和业务逻辑分散到多个独立节点(服务器或机器)上的架构模式。这些节点通过网络协同工作,共同完成任务。分布式架构旨在提高系统的性能、扩展性、容错性和可用性。
2. 核心特性
- 分布式计算: 各个节点分担计算任务,提升处理能力。
- 分布式存储: 数据分散存储在不同节点上,便于扩展和容错。
- 高可用性: 单个节点故障不会导致整个系统宕机。
- 扩展性强: 可以通过增加节点水平扩展系统能力。
- 通信协调: 节点间通过网络通信进行数据同步和任务分配。
分布式架构都包括哪些架构?
分布式架构包含以下常见的架构模式:
1. 分布式计算架构
- 定义: 将一个大任务分解为多个小任务,分发到不同节点处理,最后汇总结果。
- 特点:
- 适用于计算密集型任务。
- 典型实现有 MapReduce、Hadoop 等框架。
- 典型场景:
- 大数据分析。
- 科学计算(如基因分析、气象模拟)。
2. 分布式存储架构
- 定义: 数据被分散存储在多个节点上,提供高容量和高可用的数据服务。
- 特点:
- 支持高并发访问。
- 提供数据分片、冗余备份和自动恢复能力。
- 典型场景:
- 云存储(如 Amazon S3、Google Cloud Storage)。
- 分布式数据库(如 MongoDB、Cassandra)。
3. 微服务架构
- 定义: 将系统划分为多个独立的小服务,每个服务负责一个具体功能,并通过 API 通信。
- 特点:
- 服务独立部署和扩展。
- 每个服务可以使用不同的技术栈。
- 典型场景:
- 电商系统(如订单服务、支付服务、库存服务)。
- SaaS 应用。
4. 服务网格(Service Mesh)架构
- 定义: 专注于微服务间通信的管理和优化,通过代理节点实现服务发现、负载均衡、流量控制等功能。
- 特点:
- 提供服务间通信的可观测性和安全性。
- 常见实现:Istio、Linkerd。
- 典型场景:
- 大规模微服务集群。
5. 分布式消息队列架构
- 定义: 基于发布-订阅模型,提供异步消息通信和解耦功能。
- 特点:
- 消息持久化和高吞吐。
- 常见实现:Kafka、RabbitMQ、ActiveMQ。
- 典型场景:
- 日志处理、事件流处理。
6. 分布式事务架构
- 定义: 在分布式系统中,保证事务操作具有原子性、一致性、隔离性和持久性(ACID)。
- 特点:
- 常用的协议有两阶段提交(2PC)、三阶段提交(3PC)。
- 分布式事务协调器管理事务状态。
- 典型场景:
- 银行跨行转账系统。
- 电商订单支付和库存扣减。
7. 点对点架构(P2P)
- 定义: 所有节点都具有对等地位,可以既是服务的消费者,又是服务的提供者。
- 特点:
- 无中心化控制,节点自主工作。
- 适用于分布式文件共享和区块链。
- 典型场景:
- 区块链(如比特币、以太坊)。
- 文件共享(如 BitTorrent)。
案例分析与说明
案例 1:Hadoop 分布式计算
- 架构形式: 分布式计算架构。
- 工作方式:
- 使用 MapReduce 将大任务拆分为多个小任务,分发到各个计算节点。
- 各节点并行处理数据,并将结果汇总。
- 应用场景:
- 大数据处理(如日志分析、机器学习)。
案例 2:Amazon S3 云存储
- 架构形式: 分布式存储架构。
- 工作方式:
- 数据存储在多个地理位置的服务器上,提供高可用性和冗余备份。
- 用户通过 API 访问存储资源。
- 应用场景:
- 静态文件托管。
- 数据备份和归档。
案例 3:电商系统中的微服务架构
- 架构形式: 微服务架构。
- 工作方式:
- 用户下单请求由订单服务处理,库存服务检查商品库存,支付服务处理付款。
- 各个服务通过 REST 或 RPC 互相通信。
- 应用场景:
- 大型电商平台(如淘宝、亚马逊)。
案例 4:Kafka 消息队列
- 架构形式: 分布式消息队列架构。
- 工作方式:
- 系统中不同模块通过 Kafka 发布或订阅消息,解耦模块间的依赖。
- 应用场景:
- 实时日志处理。
- 数据流处理。
分布式架构的优缺点
优点
- 高扩展性: 可以通过增加节点水平扩展处理能力。
- 高可用性: 某些节点故障不会影响整体系统。
- 性能优越: 各节点分担工作负载,减少单点压力。
- 灵活性强: 可以根据不同需求调整节点功能和配置。
缺点
- 复杂性高: 节点间通信、数据同步和协调难度大。
- 一致性问题: 需要额外机制保证数据一致性(如 CAP 原则)。
- 部署成本高: 涉及更多硬件资源和管理工具。
- 调试困难: 故障定位和问题排查复杂。
集中式架构与分布式架构对比
特性 | 集中式架构 | 分布式架构 |
---|---|---|
控制方式 | 单点控制,所有功能集中于中心节点 | 多节点协同工作,共同完成任务 |
扩展性 | 扩展性差,中心节点可能成为瓶颈 | 扩展性强,可水平扩展节点数量 |
容错性 | 单点故障影响整体系统 | 单节点故障不会影响整体可用性 |
一致性 | 一致性强,数据集中管理 | 需要复杂机制保证一致性(可能是最终一致性) |
复杂性 | 设计和维护简单 | 设计复杂,涉及节点间协调和通信 |
总结
- 分布式架构的核心思想: 通过分布和并行,提升系统的性能、扩展性和容错能力。
- 常见形式: 分布式计算、分布式存储、微服务架构、服务网格等。
- 典型场景:
- 数据处理场景(如 Hadoop)。
- 高并发系统(如微服务电商)。
- 数据共享和协作(如区块链)。
分布式架构适用于大规模、高并发、高可用的场景,但设计和维护的复杂性需要更多的技术投入和运维保障。
相关文章:
集中式架构vs分布式架构
一、集中式架构 如何准确理解集中式架构 1. 集中式架构的定义 集中式架构是一种将系统的所有计算、存储、数据处理和控制逻辑集中在一个或少数几个节点上运行的架构模式。这些中央节点(服务器或主机)作为系统的核心,负责处理所有用户请求和…...

微服务主流框架和基础设施介绍
概述 微服务架构的落地需要解决服务治理问题,而服务治理依赖良好的底层方案。当前,微服务的底层方案总的来说可以分为两 种:微服务SDK (微服务框架)和服务网格。 微服务框架运行原理: 应用程序通过接入 SD…...

4.5.1 顺序查找、折半查找(二分查找)
文章目录 基本概念顺序查找折半查找(二分查找)索引顺序查找 基本概念 查找表:由同类元素构成的集合。 查找表按照是否可以修改数据表,可分为静态查找表、动态查找表。 静态查找表:不能修改数据表,可进行查询…...

DDD - 微服务设计与领域驱动设计实战(上)_统一建模语言及事件风暴会议
文章目录 Pre概述业务流程需求分析的困境统一语言建模事件风暴会议什么是事件风暴(Event Storming)事件风暴会议 总结 Pre DDD - 软件退化原因及案例分析 DDD - 如何运用 DDD 进行软件设计 DDD - 如何运用 DDD 进行数据库设计 DDD - 服务、实体与值对…...

基于Piquasso的光量子计算机的模拟与编程
一、引言 在科技飞速发展的当下,量子计算作为前沿领域,正以前所未有的态势蓬勃崛起。它凭借独特的量子力学原理,为解决诸多经典计算难以攻克的复杂问题提供了全新路径。从优化物流配送网络,以实现资源高效调配,到药物分子结构的精准模拟,加速新药研发进程;从金融风险的…...
44_Lua迭代器
在Lua中,迭代器是一种用于遍历集合元素的重要工具。掌握迭代器的使用方法,对于提高Lua编程的效率和代码的可读性具有重要意义。 1.迭代器概述 1.1 迭代器介绍 迭代器是一种设计模式,它提供了一种访问集合元素的方法,而不需要暴露其底层结构。在Lua中,迭代器通常以一个函…...

相机SD卡照片数据不小心全部删除了怎么办?有什么方法恢复吗?
前几天,小编在后台友收到网友反馈说他在整理相机里的SD卡,原本是想把那些记录着美好瞬间的照片导出来慢慢欣赏。结果手一抖,不小心点了“删除所有照片”,等他反应过来,屏幕上已经显示“删除成功”。那一刻,…...
RAG 测评基线
RAG (Retrieval-Augmented Generation) 概述 RAG 是一种大模型的技术,旨在通过将信息检索与生成模型(如 GPT)结合,增强模型的生成能力。传统的生成模型通常依赖于内部的训练数据来生成答案,但这种方式往往存在回答准确…...
麒麟系统设置tomcat开机自启动
本文针对的麒麟操作系统使用的是SystemD,那么配置Tomcat开机自启动的最佳方式是创建一个SystemD服务单元文件。以下是具体步骤: 确保Tomcat已正确安装: 确认Tomcat已经正确安装,并且可以手动启动和停止。 创建SystemD服务文件&am…...
java 学习笔记 第二阶段:Java进阶
目录 多线程编程 线程的概念与生命周期 创建线程的两种方式(继承Thread类、实现Runnable接口) 线程同步与锁机制(synchronized、Lock) 线程池(ExecutorService) 线程间通信(wait、notify、notifyAll) 实践建议:编写多线程程序,模拟生产者-消费者问题。 反射机…...

机组存储系统
局部性 理论 程序执行,会不均匀访问主存,有些被频繁访问,有些很少被访问 时间局部性 被用到指令,不久可能又被用到 产生原因是大量循环操作 空间局部性 某个数据和指令被使用,附近数据也可能使用 主要原因是顺序存…...
【基础工程搭建】内存访问异常问题分析
前言 汽车电子嵌入式开始更新全新的AUTOSAR项目实战专栏内容,从0到1搭建一个AUTOSAR工程,内容会覆盖AUTOSAR通信协议栈、存储协议栈、诊断协议栈、MCAL、系统服务、标定、Bootloader、复杂驱动、功能安全等所有常见功能和模块,全网同步更新开发设计文档(后期也会更新视频内…...

Mysql 和 navicat 的使用
初识navicat 点开navicat,然后点击连接选择mysql连接,输入密码(一般都是123456)即可进行连接mysql 可以看见mysql中有如下已经建立好的数据库,是我之前已经建立过的数据库,其中test就是我之前建立的数据库…...

计算机网络(五)运输层
5.1、运输层概述 概念 进程之间的通信 从通信和信息处理的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时…...
托宾效应和托宾q理论。简单解释
托宾效应和托宾q理论 托宾效应(Tobin Effect)和托宾q理论(Tobins q Theory)都是由美国经济学家詹姆斯托宾(James Tobin)提出的,它们在宏观经济学和金融经济学中占有重要地位。 托宾效应 托宾…...
大数据原生集群 (Hadoop3.X为核心) 本地测试环境搭建二
本篇安装软件版本 mysql5.6 spark3.2.1-hadoop3.2 presto0.272 zeppelin0.11.2 kafka_2.13_3.7.2 mysql 安装步骤见-》 https://blog.csdn.net/dudadudadd/article/details/110874570 spark 安装步骤见-》https://blog.csdn.net/dudadudadd/article/details/109719624 安装…...

ClickHouse vs StarRocks 选型对比
一、面向列存的 DBMS 新的选择 Hadoop 从诞生已经十三年了,Hadoop 的供应商争先恐后的为 Hadoop 贡献各种开源插件,发明各种的解决方案技术栈,一方面确实帮助很多用户解决了问题,但另一方面因为繁杂的技术栈与高昂的维护成本&…...
04.计算机体系三层结构与优化(操作系统、计算机网络、)
3.计算机体系三层结构与优化(day04) 3.1 操作系统 内容概要: 操作系统的发展史:批处理系统》分时操作系统》unix>linux多道技术》(进程、线程)并发进程与线程相关概念任务运行的三种状态:…...

UML系列之Rational Rose笔记八:类图
一、新建类图 首先依旧是新建要绘制的类图;选择class diagram; 修改命名; 二、工作台介绍 正常主要就是使用到class还有直接关联箭头就行; 如果不要求规范,直接新建一些需要的类,然后写好关系即可&#…...

Pycharm 使用教程
一、基本配置 1. 切换Python解释器 pycharm切换解释器版本 2. pycharm虚拟环境配置 虚拟环境的目的:创建适用于该项目的环境,与系统环境隔离,防止污染系统环境(包括需要的库)虚拟环境配置存放在项目根目录下的 ven…...
零门槛NAS搭建:WinNAS如何让普通电脑秒变私有云?
一、核心优势:专为Windows用户设计的极简NAS WinNAS由深圳耘想存储科技开发,是一款收费低廉但功能全面的Windows NAS工具,主打“无学习成本部署” 。与其他NAS软件相比,其优势在于: 无需硬件改造:将任意W…...
三维GIS开发cesium智慧地铁教程(5)Cesium相机控制
一、环境搭建 <script src"../cesium1.99/Build/Cesium/Cesium.js"></script> <link rel"stylesheet" href"../cesium1.99/Build/Cesium/Widgets/widgets.css"> 关键配置点: 路径验证:确保相对路径.…...
AtCoder 第409场初级竞赛 A~E题解
A Conflict 【题目链接】 原题链接:A - Conflict 【考点】 枚举 【题目大意】 找到是否有两人都想要的物品。 【解析】 遍历两端字符串,只有在同时为 o 时输出 Yes 并结束程序,否则输出 No。 【难度】 GESP三级 【代码参考】 #i…...

HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
MySQL中【正则表达式】用法
MySQL 中正则表达式通过 REGEXP 或 RLIKE 操作符实现(两者等价),用于在 WHERE 子句中进行复杂的字符串模式匹配。以下是核心用法和示例: 一、基础语法 SELECT column_name FROM table_name WHERE column_name REGEXP pattern; …...

深入解析C++中的extern关键字:跨文件共享变量与函数的终极指南
🚀 C extern 关键字深度解析:跨文件编程的终极指南 📅 更新时间:2025年6月5日 🏷️ 标签:C | extern关键字 | 多文件编程 | 链接与声明 | 现代C 文章目录 前言🔥一、extern 是什么?&…...

select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
CMake控制VS2022项目文件分组
我们可以通过 CMake 控制源文件的组织结构,使它们在 VS 解决方案资源管理器中以“组”(Filter)的形式进行分类展示。 🎯 目标 通过 CMake 脚本将 .cpp、.h 等源文件分组显示在 Visual Studio 2022 的解决方案资源管理器中。 ✅ 支持的方法汇总(共4种) 方法描述是否推荐…...
安卓基础(aar)
重新设置java21的环境,临时设置 $env:JAVA_HOME "D:\Android Studio\jbr" 查看当前环境变量 JAVA_HOME 的值 echo $env:JAVA_HOME 构建ARR文件 ./gradlew :private-lib:assembleRelease 目录是这样的: MyApp/ ├── app/ …...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...