首页技术文章正文

传统单体架构存在哪些问题?

更新时间:2022-06-13 来源:黑马程序员 浏览量:

传统单体应用架构模型

通常我们所使用的传统单体应用架构都是模块化的设计逻辑,程序在编写完成后会被打包并部署为一个具体的应用,而应用的格式则依赖于相应的应用语言和框架。

例如,在网上商城系统中,Java Web工程通常会被打成WAR包部署在Web服务器上,而普通Java工程会以JAR包的形式包含在WAR包中。

传统单体应用架构模型(模拟电商系统,包括用户界面StoreFrontUI、用于检查信用、维护库存和发货订单的一些后端服务):

传统单体架构模型

传统单体应用架构主要优点:

1、易于开发

当前开发工具的功能目标是支持单片应用程序的开发,这对于一个传统的单体应用来说非常容易实现。

2、部署简单

只需将应用部署为简单的WAR文件即可部署,并且只需要部署一个单体应用即可。

3、易于伸缩

可以通过在负载均衡器后运行应用程序的多个副本来伸缩应用程序。伴随着用户人数的增加,一台机器已经满足不了系统的负载,此时我们就会考虑系统的水平扩展。

传统单体应用架构主要缺点:

1、应用复杂度增加,更新、维护困难

一个简单的应用会随着时间的推移而逐渐变大,那么开发团队将会面临很多问题,其中最主要问题就是这个应用太复杂,以至于任何单个开发者都很难进行二次开发或维护,特别是那些刚加入团队的开发人员,应用程序可能难以理解和修改。

2、易造成系统资源浪费

虽然使用负载均衡的方式可以对项目中的服务容量进行水平扩展,这样导致其他不需要扩展的服务也进行了相应的扩展,但这种扩展是不需要的,因此这种方式会极大的浪费资源。

3、影响开发效率

当一个应用越犬时,启动时间就会越长。开发和调试的过程中,如果有很大一部分时间都要在等待中渡过,那么必然会对开发效率有极大的影响。

4、应用可靠性低

传统单体应用架构在运行时的可靠性比较低,当所有模块都运行在一个进程中时,如果任何一个模块中出现了一个Bug,可能会导致整个进程崩溃,从而影响到整个应用。

5、不利于技术的更新

传统单体应用架构一旦选定使用某些技术,则后期的开发和扩展将在这些技术的基础上实现。如果需要更改某种技术,则可能需要将整个应用全部重新开发,这种成本是非常大的。


分享到:
在线咨询 我要报名
和我们在线交谈!