传统单体应用架构模型
通常我们所使用的传统单体应用架构都是模块化的设计逻辑,程序在编写完成后会被打包并部署为一个具体的应用,而应用的格式则依赖于相应的应用语言和框架。
例如,在网上商城系统中,Java Web工程通常会被打成WAR包部署在Web服务器上,而普通Java工程会以JAR包的形式包含在WAR包中。
传统单体应用架构模型(模拟电商系统,包括用户界面StoreFrontUI、用于检查信用、维护库存和发货订单的一些后端服务):
传统单体应用架构主要优点:
1、易于开发
当前开发工具的功能目标是支持单片应用程序的开发,这对于一个传统的单体应用来说非常容易实现。
2、部署简单
只需将应用部署为简单的WAR文件即可部署,并且只需要部署一个单体应用即可。
3、易于伸缩
可以通过在负载均衡器后运行应用程序的多个副本来伸缩应用程序。伴随着用户人数的增加,一台机器已经满足不了系统的负载,此时我们就会考虑系统的水平扩展。
传统单体应用架构主要缺点:
1、应用复杂度增加,更新、维护困难
一个简单的应用会随着时间的推移而逐渐变大,那么开发团队将会面临很多问题,其中最主要问题就是这个应用太复杂,以至于任何单个开发者都很难进行二次开发或维护,特别是那些刚加入团队的开发人员,应用程序可能难以理解和修改。
2、易造成系统资源浪费
虽然使用负载均衡的方式可以对项目中的服务容量进行水平扩展,这样导致其他不需要扩展的服务也进行了相应的扩展,但这种扩展是不需要的,因此这种方式会极大的浪费资源。
3、影响开发效率
当一个应用越犬时,启动时间就会越长。开发和调试的过程中,如果有很大一部分时间都要在等待中渡过,那么必然会对开发效率有极大的影响。
4、应用可靠性低
传统单体应用架构在运行时的可靠性比较低,当所有模块都运行在一个进程中时,如果任何一个模块中出现了一个Bug,可能会导致整个进程崩溃,从而影响到整个应用。
5、不利于技术的更新
传统单体应用架构一旦选定使用某些技术,则后期的开发和扩展将在这些技术的基础上实现。如果需要更改某种技术,则可能需要将整个应用全部重新开发,这种成本是非常大的。