一、架构模型概述
信息系统架构模型(也称为架构风格)描述了系统的基本结构组织方案,定义了组件类型、组件关系以及指导其设计和演进的原则。
对于架构师而言,选择架构模型就是在功能性需求 和非功能性需求 (性能、安全、可扩展性等)之间进行权衡(Trade-off)。
二、分层架构 (Layered Architecture) - 最经典的模型
1. 核心思想
将系统划分为若干层,每层为其上层提供服务,并作为其下层的客户端。层与层之间是单向依赖 关系(上层依赖下层),禁止跨层调用。
2. 典型分层(以Web应用为例)
- 表现层 (Presentation Layer):提供用户界面,处理用户请求和显示结果。(如:JSP, Thymeleaf, Vue/React)
- 业务逻辑层 (Business Logic Layer):实现系统的核心业务规则和流程。(如:Spring @Service)
- 数据访问层 (Data Access Layer / Persistence Layer):负责与数据库交互,完成数据的持久化。(如:MyBatis, JPA, Hibernate)
- 数据库层 (Database Layer):存储数据的RDBMS或NoSQL。
3. 优点
- 关注点分离:每层职责单一,易于理解和开发。
- 易于维护和测试:可以分层独立测试(如Mock下层服务测试业务逻辑)。
- 良好的可复用性:下层服务可以被多个上层调用。
4. 缺点
- 性能损耗:一次请求需要穿越所有层,可能会带来一定的延迟。
- 可能导致"烟囱式"架构:如果设计不当,层与层之间紧密耦合,难以复用。
5. 软考应用
这是最基础、最必须掌握的模型。常用于单体应用(Monolithic Application) 的初版设计。案例分析中,首先要考虑是否符合分层原则。
三、客户端-服务器架构 (Client-Server Architecture, C/S)
1. 核心思想
将应用划分为客户端 (请求资源或服务)和服务器(提供资源或服务)两个逻辑部分。两者通过网络进行通信。
2. 变体与演进
- 两层C/S :客户端 + 数据库服务器。胖客户端,业务逻辑写在客户端。问题:客户端臃肿,升级维护困难。
- 三层C/S :客户端 + 应用服务器 (处理业务逻辑)+ 数据库服务器。实现了业务逻辑与表现的分离。
- 浏览器-服务器架构 (B/S) :是C/S架构的一种特化和演进。客户端统一为浏览器(Browser) ,应用逻辑全部放在服务器端。极大简化了客户端的部署和更新,成为Web应用的主流架构。
3. 优点
- 数据集中管理,易于保证安全性和一致性。
- 客户端可以共享服务器端的资源和服务。
4. 缺点
- 服务器是单一故障点,存在性能瓶颈。
- 网络是其生命线,网络状况直接影响系统可用性。
5. 软考应用
B/S架构是当前企业级应用开发的绝对主流。需理解其与传统C/S的区别以及如何在此基础上进行扩展(如通过负载均衡解决服务器瓶颈)。
四、面向服务架构 (Service-Oriented Architecture, SOA)
1. 核心思想
将应用程序的不同功能单元拆分为松耦合、粗粒度、可重用的服务 。服务之间通过定义良好的、中立的接口(通常是Web Service: SOAP/WSDL)进行通信。
2. 关键组件
- 服务提供者:发布服务,响应服务请求。
- 服务消费者:发现并调用服务。
- 服务注册中心:服务的"电话簿",提供服务注册和发现功能。(如:UDDI)
- 企业服务总线 (ESB) :SOA的" backbone" 。负责消息路由、协议转换、数据格式转换、服务组合等。是集中式的通信枢纽。
3. 优点
- 系统集成能力强:非常适合集成遗留系统和异构系统。
- 服务可重用:通过服务组合快速构建新应用。
- 松耦合:服务接口稳定,内部实现的变化不影响消费者。
4. 缺点
- ESB容易成为性能和单点的瓶颈。
- 架构重量级,实施复杂,对开发人员要求高。
- 服务粒度难以把握。
5. 软考应用
SOA是解决企业应用集成(EAI) 问题的经典方案。需理解ESB的核心作用及其优缺点。常与Web Service技术一起考查。
五、微服务架构 (Microservices Architecture) - 当前主流
1. 核心思想
SOA思想的一种精细化 和轻量化 实践。将一个大型单体应用拆分为一组小型、自治、围绕业务能力构建的服务。
- 每个服务:拥有自己独立的进程、数据库,可以独立开发、部署、扩缩容。
- 服务间 :通过轻量级 的通信机制(如RESTful API、gRPC)进行协作。
2. 与SOA的对比(软考高频考点)
特性 | 面向服务架构 (SOA) | 微服务架构 (Microservices) |
---|---|---|
核心组件 | 企业服务总线 (ESB) - 集中式 | API网关 + 轻量级消息总线 - 去中心化 |
服务粒度 | 粗粒度 | 细粒度 |
通信协议 | 重量级 (SOAP/WS-*, XML) | 轻量级 (REST/HTTP, JSON, gRPC) |
数据管理 | 倾向于共享数据库 | 每个服务拥有独立数据库 (Database per Service) |
目标 | 系统集成、重用 | 敏捷交付、可扩展性、高可用 |
3. 优点
- 技术异构性:不同服务可以使用不同的技术栈。
- 弹性:一个服务故障不会导致整个系统崩溃。
- 可扩展性:可以只对需要扩缩容的服务进行操作。
- 易于部署:每个服务可以独立、频繁部署。
4. 缺点(挑战)
- 分布式系统复杂性:网络延迟、故障容错、分布式事务、最终一致性。
- 运维 overhead :需要成熟的DevOps、容器化(Docker)和编排(Kubernetes)能力。
- 服务间通信带来的性能损耗。
5. 软考应用
这是当前必考的热点。必须深刻理解其概念、优缺点以及与SOA的区别。案例分析题中,常要求将单体系统重构为微服务,并分析其中的技术挑战(如数据一致性如何解决?服务如何发现?)。
六、其他重要模型
1. 事件驱动架构 (EDA)
- 核心思想 :组件通过异步 的事件(Event) 进行通信。由事件生产者 发布事件,事件消费者订阅并处理事件,彼此不感知对方的存在。
- 关键组件 :消息代理(Message Broker),如Kafka, RabbitMQ。
- 适用场景:实时数据处理、用户活动跟踪、需要极高解耦和扩展性的系统。
- 软考关联:常与微服务结合使用,实现服务间的最终一致性。
2. 空间基架构 (Space-Based Architecture)
- 核心思想 :为解决高并发、高波动性场景下的可扩展性问题。使用元组空间(Tuple Space) 作为共享内存,所有处理单元(Processing Unit)从中存取数据,避免直接访问 centralized数据库。
- 适用场景:高频交易、在线游戏、社交网络Feed流。
七、软考综合应用与总结
- 选择题:直接考查各种架构模型的定义、特点、优缺点对比(尤其是分层、C/S/B/S、SOA vs. 微服务)。
- 案例分析题 :
- 给出一个业务场景(如"高并发电商平台"、"银行核心系统改造"、"多系统集成"),要求选择合适的架构模型并说明理由。
- 答题套路 :
- 如果是传统企业内部管理系统 -> 分层架构 / B/S。
- 如果需要集成多个遗留异构系统 -> SOA + ESB。
- 如果是互联网应用,要求快速迭代、高扩展 -> 微服务 + API网关 + 容器化。
- 如果业务中有大量异步、实时通知场景 -> 事件驱动(EDA)。
- 要求分析现有架构的瓶颈,并提出重构方案(如从单体到微服务的迁移策略和挑战)。
- 论文题 :
- 可能围绕"论微服务架构的优缺点与实践 "、"企业级系统集成架构的设计 "、"高可用可扩展网站架构演化"等主题。
- 写作时,必须清晰地描述你所选用的架构模型,并详细论述你是如何根据业务需求和质量属性进行权衡的,以及实践中遇到的挑战和解决方案。
总结 :架构师的核心能力不是记住所有模型,而是深刻理解每种模型背后的设计哲学 和权衡取舍,从而在复杂的现实约束中做出最合适的选择。