架构风格种类咨询:除Layered、SOA、Microservices外还有哪些?
一、传统单体与分层衍生类
单体架构(Monolithic)
核心:所有功能模块打包为单一部署单元(如单个WAR/JAR包),共享数据库与运行环境。
特点:开发部署简单,但耦合度高,扩展性差,单点故障可能波及全系统。
差异:是分层架构的“容器”——分层是单体内部的逻辑职责划分,单体是整体部署形态;与微服务相比,微服务拆分为独立部署单元,单体则统一打包运行。分层架构(Layered)
核心:按职责垂直划分为多层(如表现层、业务逻辑层、数据访问层),层级间单向依赖,上层仅调用下层。
特点:实现关注点分离,代码维护性好,但层级过多会增加性能开销,本质仍属单体范畴(多数场景下)。
差异:是单体架构的内部组织方式,SOA、微服务则是打破单体边界的分布式架构。
二、分布式服务类
面向服务架构(SOA)
核心:将系统拆分为粗粒度服务,通过**企业服务总线(ESB)**实现服务间通信、路由与协议转换。
特点:服务复用性强,支持异构系统集成,但ESB易成为单点瓶颈,服务耦合度高于微服务。
差异:与微服务相比,SOA服务粒度更粗,依赖集中式ESB;微服务粒度更细,采用轻量级通信(HTTP/REST、gRPC),去中心化治理。微服务架构(Microservices)
核心:拆分为独立自治的小型服务,每个服务专注单一业务能力,独立部署、独立数据库,通过轻量级协议通信。
特点:高扩展性、独立迭代、故障隔离,但运维复杂度高,分布式事务处理难度大。
差异:对比SOA更去中心化;对比单体架构完全拆分,每个服务独立运行。无服务器架构(Serverless)
核心:开发者专注编写业务逻辑函数,由云厂商管理服务器资源,事件触发执行,按使用量付费。
特点:无需关注运维,弹性伸缩能力极强,但存在冷启动延迟、执行时长限制,适合短生命周期任务。
差异:与微服务相比,Serverless进一步抽象基础设施,服务粒度缩小到函数级别,无需管理服务器;微服务仍需关注服务实例的部署与运维。
三、数据与事件驱动类
事件驱动架构(EDA)
核心:以事件为核心,服务通过发布/订阅事件异步通信,事件触发业务流程。
特点:松耦合、异步化,适配高并发、实时性场景(如电商订单处理、实时数据分析)。
差异:与SOA的同步通信模式不同,EDA以异步事件为核心;微服务可结合EDA实现解耦,但EDA是通信模式层面的风格,可与其他架构结合使用。管道-过滤器架构(Pipe-and-Filter)
核心:系统由多个过滤器组件组成,数据通过管道传递,每个过滤器独立完成数据处理(清洗、转换、分析等)。
特点:组件复用性强,易于扩展,适合数据处理流水线(如ETL、日志分析)。
差异:与分层架构的线性依赖不同,管道-过滤器是流式数据处理,组件无层级依赖,仅关注数据转换。
四、特定场景与设计导向类
微内核架构(Microkernel)
核心:核心系统(微内核)提供基础功能,扩展功能通过插件动态加载。
特点:核心稳定,灵活性高,易于扩展新功能(如IDE、电商平台插件体系)。
差异:与微服务的区别是,微内核是单体内部的插件化扩展,微服务是分布式独立部署;与分层架构相比,微内核扩展无需修改核心代码,灵活性更强。六边形架构(Hexagonal/Ports and Adapters)
核心:将业务逻辑与外部依赖(数据库、UI、第三方服务)解耦,通过端口(Port)和适配器(Adapter)实现交互。
特点:业务逻辑独立于外部系统,易于测试和替换依赖(如切换数据库、更换前端框架)。
差异:与分层架构的垂直划分不同,六边形以核心业务逻辑为中心环形划分,更强调业务逻辑的独立性。CQRS架构(Command Query Responsibility Segregation)
核心:将数据读写操作分离,命令(修改数据)与查询(读取数据)使用不同模型与存储。
特点:优化读写性能,适配高并发读写场景(如社交平台、电商库存系统),但增加系统复杂度。
差异:是一种架构模式,可与微服务、EDA结合;与传统CRUD架构相比,读写分离更彻底,能独立优化读写性能。领域驱动设计(DDD)架构
核心:围绕业务领域建模,划分为多个限界上下文(Bounded Context),每个上下文对应独立业务领域。
特点:业务逻辑清晰,适合复杂业务场景,可与微服务结合(限界上下文对应微服务)。
差异:DDD是设计思想而非具体架构形态,指导分层、微服务等架构的设计,与纯技术导向的风格不同,更关注业务领域建模。
五、高性能与高可用优化类
缓存架构(Cache-centric)
核心:以缓存为核心优化性能,热点数据存储于缓存,减少后端存储访问。
特点:提升响应速度,降低后端压力,适合读多写少场景(如新闻网站、商品详情页)。
差异:属于架构优化手段,可与其他风格结合,并非独立系统架构,但属于架构设计的核心组成部分。主从复制与分片架构
核心:通过数据库主从复制实现读写分离,分片(Sharding)实现数据水平拆分,提升数据库性能与可用性。
特点:解决单库性能瓶颈,提升扩展性,适合数据量大、高并发场景。
差异:属于数据层架构设计,通常配合上层的微服务、单体等架构使用,专注数据存储层面的扩展。
内容的提问来源于stack exchange,提问作者ypolosov

