这是一个聚焦软件架构设计决策的技能,提供设计可维护、可扩展、健壮系统的原则与模式参考。适用场景包括:设计新系统或功能、在多种架构模式间取舍、做技术决策、评审系统设计、规划可扩展性以及重构遗留系统。
主要内容分为几部分。
架构原则:涵盖 SOLID 五项原则(单一职责、开闭、里氏替换、接口隔离、依赖倒置)及其违规信号;依赖规则——外层依赖内层,方向只能向内,由框架与驱动、接口适配器、应用业务规则、企业业务规则四层构成。
架构模式:分层架构(表示、应用、领域、基础设施,适合传统应用、需清晰分层,不适合高性能与事件驱动场景)、六边形架构/端口与适配器(适合可测试性与多接口需求,不适合简单 CRUD)、微服务架构(适合独立扩展、团队自治与多语言,不适合小团队与简单领域)、事件驱动架构(适合异步、解耦与审计,不适合强一致与简单流程)。
设计模式:创建型(工厂、建造者、单例、依赖注入)、结构型(适配器、装饰器、门面、仓储)、行为型(策略、观察者、命令、责任链),均附带用途与适用时机。
领域驱动设计:战略设计含限界上下文、通用语言、上下文映射;战术模式含实体、值对象、聚合、领域事件、仓储、领域服务。
系统设计考量:可扩展性(水平/垂直扩展、缓存、分片、读副本、CDN 及各自权衡)、韧性(熔断、退避重试、舱壁隔离、超时、降级)、数据一致性(ACID、Saga、事件溯源、CQRS)。
还提供技术决策参考:何时选用关系型、文档、键值、时序、图、搜索类存储;何时使用消息队列(异步、广播、调度、削峰、事件溯源);架构决策记录(ADR)模板;常见反模式(大泥球、金锤子、过早优化、分析瘫痪、分布式单体、贫血领域模型、上帝对象、泄漏抽象);以及最终决策前的检查清单。
限制:该技能为原则与模式的知识性指导,未提供具体代码实现、安装命令或执行步骤,具体落地需结合实际项目判断。