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

定义

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

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

优点

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

不足

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

  • 应用程序的启动时间可能会长达数分钟。这很快就会增加工程师在开发过程中浪费的大量时间。
  • 扩展应用程序开始变得困难。除了启动时间慢(可能会影响客户)之外,单体应用通常只能在一维进行扩展。由于应用程序涵盖了许多不同的用例,因此可以花费大量时间来优化配置以涵盖所有这些用例。这可能导致单体在资源方面(例如 CPU)变得非常昂贵。
  • 持续部署变得缓慢。即使您对特定部分进行了小的代码更改,也必须部署整个应用程序。随着应用程序复杂性的增加,这会变得越来越慢。部署时间超过一个小时的情况并非闻所未闻。
  • 对特定技术堆栈的长期承诺是必要的。如果您的整体应用程序是用 PHP 编写的,您必须继续使用 PHP,即使新的应用程序需求更适合新技术,或者如果您聘请了不同语言的专家,您也必须坚持使用 PHP。迁移到新语言将需要重写整个系统(或者如果您决定迁移到微服务,则需要重写部分系统。我们将在下一章中更多地讨论微服务)。
  • 改变变得困难。随着交付压力和开始开发的障碍越来越高,系统的模块化常常会变得模糊
相关推荐
llz_11224 分钟前
web-第二次课后作业
前端·后端·web
红尘散仙6 小时前
我把终端小说阅读器接上了 AI Agent:TRNovel 现在能用 skill 生成书源了
人工智能·后端·rust
卷毛的技术笔记8 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
_codemonster8 小时前
30分钟快速搭建 Spring Cloud Alibaba 微服务实战(一)
微服务·架构·毕业设计·课程设计
会编程的土豆8 小时前
Go 语言反射(Reflection)详解
开发语言·后端·golang
Cosolar8 小时前
从零写一个 Attention Is All You Need
人工智能·面试·架构
喵个咪8 小时前
GoWind Toolkit Go后端代码生成 完整全流程实战
后端·go·orm
basketball6169 小时前
Go 语言从入门到进阶:4. 数组和MAP使用方法总结
开发语言·后端·golang
qq_2518364579 小时前
SpringBoot+Vue 共享电池柜管理系统 完整实现 前后端分离项目实战 完整代码
vue.js·spring boot·后端
zhangxingchao9 小时前
AI 大模型核心六:量化、Workflow 与 Agent、多轮 RAG
前端·人工智能·后端