跳到主要内容

N 层架构

逻辑层与物理层次有什么区别?​

  • Layer: 按职责拆分的逻辑模块,用于管理依赖关系,例如表现、业务和数据访问;
  • Tier: 独立部署的物理边界,通常通过网络通信,可以单独扩容或隔离故障;
  • 映射关系: 多个逻辑层可以部署在同一进程或机器,一个逻辑层也可以有多个部署实例;
  • 设计收益: 先明确职责,再决定是否值得付出网络成本把它们分开部署;

三层架构如何处理一次请求?​

表现层 → 业务逻辑层 → 数据访问层 → 数据存储
  • 表现层: 接收用户交互并呈现结果,负责把输入转换成业务能够理解的请求;
  • 业务层: 执行业务校验和规则,决定需要读取或修改哪些数据;
  • 数据访问层: 封装存储操作,把业务需求转换成具体查询和写入;
  • 边界要求: 上层可以依赖下层能力,下层不应反过来依赖某个具体界面;

开放层与封闭层怎样约束调用?​

形式允许调用主要权衡
封闭层只调用紧邻下层依赖清楚,但可能出现纯转发
开放层可跨过中间层访问更低层减少绕路,但耦合更难控制
  • 选择依据: 看中间层是否提供真实规则或隔离价值,不能只为了少一次函数调用破坏边界;
  • 网络影响: 如果每层都独立部署,纯转发会额外增加往返与故障点;

一层和两层结构什么时候足够?​

  • 一层: 所有组件在单个应用或服务器中运行,适合简单部署,仍可以有内部逻辑分层;
  • 两层: 客户端直接与数据或服务端通信,没有单独部署的中间业务层;
  • 简化价值: 小规模需求可以减少基础设施与排错成本,层数多本身不是设计质量的指标;

分开部署各层会增加哪些成本?​

  • 收益: 各层可独立扩容、维护和设置网络权限,有助于分工与隔离;
  • 延迟: 每跨一个网络边界都可能增加序列化、传输、排队与超时;
  • 运维: 多层需要更多实例、部署流程和监控,网络访问规则也更复杂;
  • 安全边界: 分层有利于控制访问路径,但逻辑分层本身不会自动变成防火墙;