首页 理论教育 单体架构的优点和应用场景

单体架构的优点和应用场景

时间:2023-11-23 理论教育 版权反馈
【摘要】:单体架构比较初级,典型的三级架构由前端、中间业务逻辑层和数据库层组成。图2-3单体架构1.单体架构的优点单体架构的应用比较容易部署、测试,在项目的初期,单体框架能以较好的状态运行。

单体架构的优点和应用场景

单体架构比较初级,典型的三级架构由前端(Web/手机端)、中间业务逻辑层和数据库层组成。这是一种典型的Java Spring MVC或者Python Django架构的应用。单体架构如图2-3所示。

图2-3 单体架构

1.单体架构的优点

单体架构的应用比较容易部署、测试,在项目的初期,单体框架能以较好的状态运行。

2.单体架构的缺点

随着需求的不断增加,越来越多的人加入开发团队,代码库也在飞速地膨胀,单体框架应用变得臃肿,并且可维护性、灵活性逐渐降低,维护成本越来越高。(www.xing528.com)

复杂性高:以一个百万行级别的单体应用为例,整个项目包含的模块非常多,而且模块的边界模糊、依赖关系不清晰、代码质量参差不齐,模块混乱地堆砌在一起。每次修改代码都必然面临巨大的风险,甚至添加一个简单的功能或修改一个Bug都会带来隐含的缺陷。

技术债务:随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。“不坏不修”,这在软件开发中非常常见,在单体应用中这种思想更甚。已使用的系统设计或代码难以被修改,因为程序本身中的其他模块可能会以意料之外的方式使用它。

部署频率低:随着代码量的增多,构建和部署的时间逐步增加。而在单体应用框架中,每次功能的变更或缺陷的修复都会导致需要重新部署整个应用。全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低。而部署频率低又导致两次发布之间会有大量的功能变更和缺陷修复,出错率比较高。

可靠性差:一个Bug极有可能会导致整个应用的崩溃,如死循环、内存溢出等。

扩展能力受限:单体应用只能作为一个整体进行扩展,无法根据业务模块的需要进行选择性的改变。例如,应用中有的模块是计算密集型的,它需要强劲的CPU;有的模块则是I/O密集型的,需要更大的内存。由于这些模块部署在一起,不得不在硬件的选择上做出妥协。

阻碍技术创新:单体应用往往使用统一的技术平台或方案解决所有的问题,团队中的每个成员都必须使用相同的开发语言和框架,要想引入新框架或新技术平台会非常困难。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈