单体架构

什么是单体架构

一个归档包(例如war格式或者Jar格式)包含了应用所有功能的应用程序 这是一种比较传统的架构风格。

单体架构示例图(常见图)

单体架构的缺陷

1.复杂性高 1. 整个项目包含的模块非常多,模块的边界模糊依赖关系不清晰代码质量参差不齐,整个项目非常复杂。 2. 每次修改代码都心惊胆战,甚至添加一个简单的功能,或者修改一个BUG都会造成隐含的缺陷。 2.技术债务逐渐上升 1. 随着时间推移、需求变更和人员更迭,会逐渐形成应用程序的技术债务,并且越积越多。 2. 已使用的系统设计或代码难以修改,因为应用程序的其他模块可能会以意料之外的方式调用它。 3.部署速度逐渐变慢 1. 随着代码的增加,构建和部署的时间也会增加。 2. 而在单体应用中,每次功能的变更或缺陷的修复都会导致重新部署整个应用。 3. 全量部署的方式耗时长、影响范围大、风险高,这使得单体应用项目上线部署的频率较低 4. 从而又导致两次发布之间会有大量功能变更和缺陷修复,出错概率较高。 4.扩展能力受限,无法按需伸缩 单体应用只能作为一个整体进行扩展,无法结合业务模块的特点进行伸缩。 5.阻碍技术创新 1. 单体应用往往使用统一的技术平台或方案解决所有问题,团队的每个成员都必须使用相同的开发语言和架构,想要引入新的框架或技术平台非常困难。


  • 由于单体架构的缺陷日益明显,所以越来越多的公司采用微服务架构范式解决上面提到的单体架构中的问题。

不同于构建单一、庞大的应用,微服务架构将应用拆分为一套小且互相关联的服务。