推行模块化设计

Last reviewed 2026-10-22 UTC

Google Cloud Well-Architected Framework 性能优化核心中的这一原则提供了相关建议,可帮助您推广模块化设计。模块化组件和清晰的接口可实现灵活伸缩、独立更新和未来的组件分离。

原则概览

了解应用组件与系统组件之间的依赖关系,以设计可伸缩的系统。

无论最初部署的是单体式架构还是微服务架构,模块化设计都能提供灵活性和弹性。通过将系统分解为具有清晰接口且定义明确的独立模块,您可以扩缩各个组件以满足特定需求。

有针对性的伸缩可通过以下方式帮助优化资源利用率并降低成本:

  • 仅为每个组件预配必要的资源,并为要求较低的组件分配较少的资源。
  • 在高流量时段添加更多资源,以维持用户体验。
  • 在不影响性能的情况下移除未充分利用的资源。

模块化还可提高可维护性。较小的独立单元更易于理解、调试和更新,这可以缩短开发周期并降低风险。

虽然模块化具有显著优势,但您必须评估潜在的性能权衡。模块之间的通信增加可能会导致延迟和开销。努力在模块化和性能之间取得平衡。高度模块化的设计可能并不普遍适用。如果性能至关重要,则更紧密耦合的方法可能更合适。系统设计是一个迭代过程,您需要不断检查和优化模块化设计。

建议

如需推广模块化设计,请考虑以下各部分中的建议。

针对松散耦合进行设计

设计松散耦合的架构。具有最少依赖项的独立组件可帮助您构建可伸缩且弹性强的应用。在规划服务边界时,您必须考虑可用性和可伸缩性要求。例如,如果某个组件的要求与其他组件不同,您可以将该组件设计为独立服务。为不影响主要服务响应时间的次要子进程或服务实施优雅失败方案。

针对并发和并行进行设计

将应用设计为支持同时执行多项任务,例如在用户与系统交互时处理多个用户请求或运行后台作业。将大型任务拆分为可由多个服务实例同时处理的较小块。借助任务并发,您可以使用自动扩缩等功能来增加以下产品中的资源分配:

平衡模块化,实现灵活的资源分配

尽可能确保每个组件仅使用特定操作所需的资源(例如内存、存储空间和处理能力)。资源过度分配可能会导致不必要的费用,而资源分配不足可能会影响性能。

使用定义完善的接口

确保模块化组件通过清晰、标准化的接口(例如 API 和消息队列)进行有效通信,以减少转换层或无关流量带来的开销。

使用无状态模型

无状态模型有助于确保您可以独立于之前的请求处理每个请求或与服务的交互。此模型有助于实现可伸缩性和可恢复性,因为您可以增加、缩减或重启服务,但不会丢失处理进行中请求或进程所需的数据。

选择互补技术

选择与模块化设计相辅相成的技术。评估编程语言、框架和数据库对模块化的支持。

如需了解详情,请参阅以下资源: