当我们提到单体应用架构,我们在说什么?

定义

单体应用程序或单体架构可能是您以前听说过的一个术语,因为它可能是开发企业应用程序最流行的模式。如果系统的所有不同组件都封装到一个单元中,例如,如果用户界面、多个域和基础设施服务组合到一个可部署单元中,我们将其称为单体应用程序。

单体架构是软件程序的一种传统模式,它是作为一个统一的单元构建的,自成一体,独立于其他应用程序。单体 "一词通常被归结为庞大而冰冷的东西,这与软件设计中的单体架构的真实情况相差无几。单体架构是一个单一的大型计算网络,它只有一个代码库,将所有业务关注点结合在一起。 要对这种应用程序进行更改,需要通过访问代码库、构建和部署服务端接口的更新版本来更新整个堆栈。这就使得更新既受限制又耗时。

优点

  • 便于开发:当使用一个代码库构建应用程序时,所有代码和关注点都存在于一个地方,您无需过多担心分布式系统中远程过程调用可能带来的故障
  • 容易部署:一个可执行文件或目录使部署更容易。它们部署起来很简单。只有一个可部署的,并且它的要求应该很好理解。
  • 性能:在中心化代码库中
  • 便于测试:
  • 便于调试:当所有代码都位于一个位置,可以更轻松地跟踪请求并发现问题

不足

随着应用程序复杂性和/或规模的增长,这些缺点往往会出现:

  • 应用程序的启动时间可能会长达数分钟。这很快就会增加工程师在开发过程中浪费的大量时间。
  • 扩展应用程序开始变得困难。除了启动时间慢(可能会影响客户)之外,单体应用通常只能在一维进行扩展。由于应用程序涵盖了许多不同的用例,因此可以花费大量时间来优化配置以涵盖所有这些用例。这可能导致单体在资源方面(例如 CPU)变得非常昂贵。
  • 持续部署变得缓慢。即使您对特定部分进行了小的代码更改,也必须部署整个应用程序。随着应用程序复杂性的增加,这会变得越来越慢。部署时间超过一个小时的情况并非闻所未闻。
  • 对特定技术堆栈的长期承诺是必要的。如果您的整体应用程序是用 PHP 编写的,您必须继续使用 PHP,即使新的应用程序需求更适合新技术,或者如果您聘请了不同语言的专家,您也必须坚持使用 PHP。迁移到新语言将需要重写整个系统(或者如果您决定迁移到微服务,则需要重写部分系统。我们将在下一章中更多地讨论微服务)。
  • 改变变得困难。随着交付压力和开始开发的障碍越来越高,系统的模块化常常会变得模糊
相关推荐
珠海西格电力8 小时前
零碳园区的能源供给成本主要包括哪些方面?
大数据·分布式·微服务·架构·能源
神奇的程序员8 小时前
重构了自己5年前写的截图插件
前端·javascript·架构
养肥胖虎8 小时前
Docker学习笔记:后端、数据库和反向代理怎么一起跑起来
后端·nginx·docker·postgresql·go·部署
Luhui Dev8 小时前
Anthropic 2026 最新 Agent Harness 架构完整拆解:Managed Agents
人工智能·架构·agent·luhuidev
晓杰'8 小时前
从0到1实现 Balatro 游戏后端(2):NestJS框架搭建与项目结构设计
后端·websocket·typescript·node.js·游戏开发·项目实战·nestjs
无所事事O_o9 小时前
二次验证码TOTP 使用说明
后端·二次验证码·谷歌验证器
xifangge20259 小时前
【深度架构】Claude Code + Opus 4.6 全流程调优:API 路由重定向技术与 Agentic 编程流实战(附零成本接入方案)
架构·claudecode·opus4.6
ltl9 小时前
Multi-Head Attention:为什么要分多个头
后端
ltl10 小时前
Scaled Dot-Product:那个根号 d_k 是怎么来的'
后端
闵孚龙10 小时前
Claude Code API通信层全解析:重试、流式、降级、Fast Mode、Prompt Cache 与 Files API 的底层工程
人工智能·架构·prompt