简单梳理一下 从古到今(?)项目架构的变化并阐述相应原理
一、单体应用架构(All-In-One)
web项目最早期的使用,也应用于现在一些很小简单项目,将所有的应用,数据库,文件作为一个整体打包部署在一台机器上。
优点:
1.功能集成在一个项目工程中 不容易出现技术难度高的bug
2.架构简单 前期开发成本低 周期短 部署简单 小型项目的首选
3.用人成本低 单个程序员就可以完成整个项目的开发维护
缺点:
1.不适用于大型项目(废话)不易拓展 维护 成本高!
2.系统性能拓展只能通过扩展集群节点,不仅麻烦,也有技术瓶颈
3.系统启动慢:一个启动进程包括所有的功能模块,启动周期重启周期过长
4.系统错误隔离性差,可用性差: 任何一个模块的错误都可能导致整个系统的雪崩
二、垂直应用架构(Vertical Application)
当项目的访问量逐渐增加,将多个功能拆分成不同的应用模块,从而减轻单一服务器的压力,各个项目可以独立拓展,具有一定的灵活性
优点:
1.项目架构相对还是简单,开发成本低,周期短,部署简单
2.通过垂直拆分,服务器压力骤减,负载均衡,可容纳更多的访问压力
3.功能拓展方便
缺点:
1.各个应用模块中必包含许多重复的功能,会导致重复开发工作
2.模块中互相有数据重复,需要互相调用,但是因为垂