💎一站式轻松地调用各大LLM模型接口,支持GPT4、智谱、豆包、星火、月之暗面及文生图、文生视频 广告
[TOC] ## 系统架构、软件体系结构、软件架构 区别 **系统架构(System Architecture)** **定义**: * 系统架构强调**整个信息系统或业务系统的结构与组织**,关注**软硬件资源、网络、数据流、外部接口和业务流程**。 * 也就是说,它不仅包括软件,还包括硬件、操作环境、外部系统、网络拓扑、部署环境等。 **特点**: 1. 宏观视角,涵盖整个系统及其边界。 2. 包括软件系统、硬件平台、网络通信、外部系统接口等。 3. 强调系统功能、性能、可靠性、安全性和业务流程支持。 **示例**: * 企业即时通讯系统的系统架构: * 客户端设备(手机、PC) * 后端服务器集群(消息服务、用户管理、通知服务) * 数据存储(SQL/NoSQL、缓存) * 网络层(内网/公网、负载均衡、CDN) * 第三方接口(支付、身份认证) * * * **软件体系结构(Software System Architecture)** **定义**: * 是系统架构中**软件部分的宏观设计**,关注软件内部各子系统或模块的组织和交互方式。 * 它属于系统架构的一部分,专注软件层面的结构设计。 **特点**: 1. 宏观软件视角,关注软件模块划分与协作。 2. 强调技术选型(编程语言、框架、数据库类型)、部署方式。 3. 支持非功能需求(性能、可扩展性、可维护性、安全性)。 **示例**: * 即时通讯系统的软件体系结构: * 客户端应用(Flutter) * 服务器端模块(消息服务、用户服务、推送服务) * 数据库、缓存、队列中间件 * API 或 RPC 通信协议 * * * **软件架构(Software Architecture)** **定义**: * 是软件体系结构中**更微观的内部模块设计**,关注软件内部模块的划分、接口、依赖关系和设计模式。 * 也就是体系结构的“内部实现蓝图”。 **特点**: 1. 微观视角,关注软件内部组织。 2. 包括模块划分、接口设计、依赖关系和设计模式。 3. 不直接涉及硬件或系统边界,但会影响系统部署和性能。 **示例**: * 即时通讯客户端的软件架构: * UI 层(聊天界面、联系人列表) * 应用逻辑层(消息管理、会话管理) * 数据访问层(本地数据库、缓存) * 网络层(WebSocket、HTTP API) --- 总结 ``` 系统架构(System Architecture) └─ 软件体系结构(Software System Architecture) └─ 软件架构(Software Architecture) ``` 系统架构:宏观系统层面(硬件+软件+网络+外部系统) 软件体系结构:宏观软件层面(模块/子系统划分、技术选型、部署方案) 软件架构:微观软件层面(模块内部组织、接口和依赖关系) ## 软件架构类型 ### 一、按“系统分层”角度划分 这些是最基础、最常见的架构类型: | 架构类型 | 特点 | 场景 | | --- | --- | --- | | **单体架构(Monolithic Architecture)** | 所有功能模块集中在一个进程中 | 小型系统、初创项目 | | **分层架构(Layered Architecture)** | 按职责分层,如表示层、业务层、数据层 | 企业管理系统、传统 Web | | **微内核架构(Microkernel)** | 核心系统 + 插件模块 | IDE、浏览器、操作系统 | | **事件驱动架构(EDA)** | 通过事件触发与异步通信 | 消息系统、实时分析、IoT | * * * ### 二、按“部署与服务形态”划分 | 架构类型 | 说明 | 优点 | 缺点 | | --- | --- | --- | --- | | **C/S 架构(Client/Server)** | 客户端 + 服务器模式 | 响应快、安全 | 部署麻烦 | | **B/S 架构(Browser/Server)** | 浏览器访问服务器 | 维护方便、跨平台 | 性能依赖网络 | | **微服务架构(Microservices)** | 按业务域拆分成独立服务 | 易扩展、易维护 | 复杂度高、通信成本高 | | **SOA 架构(面向服务架构)** | 用服务总线(ESB)集成异构系统 | 可复用 | 成本高、灵活性不足 | | **Serverless 架构** | 无需关心服务器,事件触发即运行 | 快速开发、按需计费 | 可控性差、冷启动 | | **云原生架构(Cloud Native)** | 微服务 + 容器 + DevOps + 自动化 | 弹性伸缩 | 运维复杂 | * * * ### 三、按“软件架构风格”划分 | 架构类型 | 子风格 | 应用场景 | | ------------ | ------------------------------ | ------------------------------------ | | **数据流体** | 批处理,管道-过滤器 | 编译器、数据处理、音视频处理、ETL(数据抽取、转换、加载) | | **调用/返回** | 主程序-子程序,面向对象体系,层次型体系-客户端/服务端体系 | 操作系统内核设计、企业应用系统、客户端-服务器系统、大型分层软件 | | **以数据为中心** | 仓库体系风格,黑板体系风格 | 数据库系统、内容管理系统、知识推理系统、人工智能专家系统 | | **虚拟机** | 解释器,规则系统 | 脚本语言执行环境(Python/Java虚拟机)、规则引擎、策略处理系统 | | **独立构件体系风格** | 进程通信,事件系统 | 分布式系统、微服务架构、消息驱动系统、实时控制系统 | * * * ### 四、按“控制流和职责分配”划分 | 架构类型 | 核心思想 | 代表模式 | | --- | --- | --- | | **MVC 架构** | 模型-视图-控制器分离 | Web 应用(如 Spring MVC) | | **MVP 架构** | Presenter 处理业务逻辑 | Android 早期架构 | | **MVVM 架构** | 双向绑定 View 与 ViewModel | Flutter、Vue、React | | **Clean Architecture(整洁架构)** | 业务逻辑独立于框架 | DDD、企业级应用 | | **Hexagonal Architecture(六边形)** | 用“端口与适配器”隔离核心与外部 | 可测试性强、依赖反转 | * * * ### 五、按“分布式系统架构”划分 | 架构 | 核心特征 | 示例 | | --- | --- | --- | | **分布式架构** | 多节点协作 | Hadoop、Spark | | **集群架构** | 多节点提供同类服务 | Redis Cluster、K8s | | **主从架构(Master-Slave)** | 主控与从属节点 | 数据库主从复制 | | **P2P 架构** | 节点对等、去中心化 | BitTorrent、区块链 | | **边缘计算架构** | 数据在靠近源头处计算 | IoT、视频监控 | ### 总结 ┌──────────────────────────────────┐ │ 软件架构分类总览 │ ├──────────────────────────────────┤ │ 按系统分层:单体 / 分层 / 微内核 / 事件驱动 │ │ 按服务部署:C/S / B/S / 微服务 / Serverless │ │ 按数据流动:管道-过滤器 / MQ / PubSub │ │ 按职责分配:MVC / MVVM / Clean / 六边形 │ │ 按分布式特性:集群 / 主从 / P2P / 边缘计算 │ │ 按现代演进:DDD / CQRS / RAG / EventSourcing│ └──────────────────────────────────┘