【嵌入式】【科普】应用架构简介
方面核心内容定义软件系统的结构蓝图,定义了组件、关系、交互和技术选型,以在满足功能需求的同时保障质量属性。核心概念组件、模块、服务、连接器,并在约束下满足质量属性(性能、安全等)。设计原则分离关注点、单一职责、高内聚低耦合、抽象封装等,旨在构建可维护、可扩展、可靠的系统。演进路径单体 -> 分层 -> SOA -> 微服务,并辅以事件驱动、无服务器等模式,是一个随业务和技术发展而不断解耦和细化的过
·
应用架构简介
应用架构定义
应用架构(Application Architecture) 是软件系统的高层级结构蓝图,它定义了:
- 构成组件:系统由哪些主要部分(如服务、模块、层)组成。
- 外部交互:系统如何与用户、其他系统和服务进行交互。
- 内部关系:各个组件之间如何相互通信、协作和集成。
- 技术选型:为实现这些组件和连接,所采用的技术决策和约束。
- 指导原则:系统设计和演进所遵循的核心理念和规则。
核心目标:在满足功能需求(做什么)的同时,保障关键质量属性(非功能需求),如性能、安全性、可靠性、可扩展性、可维护性和成本效益。
应用架构核心概念
| 概念 | 描述 | 示例 |
|---|---|---|
| 1. 组件 (Component) | 软件的核心构成单元,一个封装了特定功能、可独立替换和升级的部分。 | 一个用户认证服务、一个订单处理模块、一个前端界面组件、一个数据库访问库。 |
| 2. 模块 (Module) | 通常指在同一个程序内部,按功能划分的、职责单一的代码组织单元。 | 一个Python包、一个Java Jar包、一个Node.js模块。 |
| 3. 服务 (Service) | 在分布式架构中,一个独立部署、可通过网络(如HTTP/gRPC)调用的功能单元。 | 用户服务、商品服务、支付服务(微服务架构中的概念)。 |
| 4. 连接器 (Connector) | 组件/服务之间通信和协作的机制。 | HTTP API、消息队列(如Kafka/RabbitMQ)、远程过程调用(gRPC)、事件(Event)。 |
| 5. 质量属性 (Quality Attributes) | 系统的非功能特性,是衡量架构好坏的关键指标。 | 性能、安全性、可靠性、可用性、可扩展性、可维护性、可测试性、弹性(容错)。 |
| 6. 约束 (Constraints) | 项目必须遵守的限制条件,可能来自业务、技术或合规方面。 | 必须使用Oracle数据库、必须符合GDPR法规、必须在200ms内响应请求、预算限制。 |
应用架构核心设计原则
| 原则 | 描述 | 好处 |
|---|---|---|
| 1. 分离关注点 (SoC) | 将系统划分为不同的部分,每个部分只负责一个特定的功能或“关注点”。 | 降低复杂性,提高可维护性,便于团队协作。 |
| 2. 单一职责原则 (SRP) | 一个组件、模块或类应该只有一个引起它变化的原因(即只负责一项职责)。 | 使组件更内聚、更简单,变更的影响范围被隔离。 |
| 3. 高内聚,低耦合 | 高内聚:组件内部的元素紧密相关,共同完成一个明确的功能。 低耦合:组件之间的依赖关系尽可能简单和松散。 |
系统更健壮,变更更容易,组件更易于复用和独立测试。 |
| 4. 抽象与封装 | 隐藏复杂的实现细节,只暴露必要的接口。这简化了组件之间的交互。 | 减少系统不同部分之间的相互影响,降低复杂度。 |
| 5. 可重用性 | 设计组件时考虑其在不同场景下的复用能力。 | 减少重复开发,提高开发效率,保证行为一致性。 |
| 6. 弹性设计 | 系统能够处理各种故障(如网络中断、依赖服务宕机)并保持部分功能可用。 | 提高系统的可靠性和可用性。 |
| 7. 可演进性 | 架构应易于扩展和修改,以适应未来不断变化的需求。 | 延长系统生命周期,降低未来变更的成本和风险。 |
应用架构演进路径
应用架构并非一成不变,它会随着业务规模、团队结构和技术环境的发展而演进。一个典型的演进路径如下:
- 单体架构 (Monolithic)
- 描述:所有功能模块(UI、业务逻辑、数据访问)打包在一个应用程序中。
- 阶段:项目初创期。
- 驱动力:快速开发、验证想法、简化部署。
- 挑战:应用变得臃肿,维护和扩展困难。
- 分层架构 (Layered / N-Tier)
- 描述:将单体应用在逻辑上横向切分为表现层、业务逻辑层、数据访问层等。
- 阶段:业务复杂度初步提升。
- 驱动力:需要代码结构更清晰,便于团队内部分工。
- 挑战:层与层之间容易紧密耦合。
- 面向服务架构 (SOA)
- 描述:将应用拆分为一组“粗粒度”的服务,通过企业服务总线(ESB)进行通信和集成。
- 阶段:大型企业应用集成。
- 驱动力:整合不同系统,实现服务复用。
- 挑战:ESB可能成为单点瓶颈,架构较重。
- 微服务架构 (Microservices)
- 描述:将应用拆分为一组“细粒度”、松耦合、可独立部署的服务。
- 阶段:业务复杂且需要快速迭代,团队规模大。
- 驱动力:提高敏捷性、可扩展性和容错能力。
- 挑战:带来了分布式系统的复杂性(网络、数据一致性、监控等)。
- 其他现代架构模式
- 事件驱动架构 (EDA):作为微服务的补充,通过事件进行异步通信,进一步解耦服务。
- 无服务器架构 (Serverless):将功能作为更细粒度的“函数”来部署和运行,由云平台管理基础设施。
- 服务网格 (Service Mesh):用于处理微服务间的通信,提供服务发现、负载均衡、熔断等能力,使业务代码更专注于逻辑。
应用架构总结
| 方面 | 核心内容 |
|---|---|
| 定义 | 软件系统的结构蓝图,定义了组件、关系、交互和技术选型,以在满足功能需求的同时保障质量属性。 |
| 核心概念 | 组件、模块、服务、连接器,并在约束下满足质量属性(性能、安全等)。 |
| 设计原则 | 分离关注点、单一职责、高内聚低耦合、抽象封装等,旨在构建可维护、可扩展、可靠的系统。 |
| 演进路径 | 单体 -> 分层 -> SOA -> 微服务,并辅以事件驱动、无服务器等模式,是一个随业务和技术发展而不断解耦和细化的过程。 |
这个演进路径不是线性的,现代应用往往是多种架构风格的混合体。选择合适的架构取决于当前的业务需求、团队能力和未来发展规划,没有“最好”的架构,只有“最合适”的架构。
openvela 操作系统专为 AIoT 领域量身定制,以轻量化、标准兼容、安全性和高度可扩展性为核心特点。openvela 以其卓越的技术优势,已成为众多物联网设备和 AI 硬件的技术首选,涵盖了智能手表、运动手环、智能音箱、耳机、智能家居设备以及机器人等多个领域。
更多推荐



所有评论(0)