深入理解Spring Cloud与微服务构建(第2版)
上QQ阅读APP看书,第一时间看更新

1.1 单体架构及其存在的不足

1.1.1 单体架构简介

在软件设计中,经常提及和使用经典的3层模型,即表示层、业务逻辑层和数据访问层。

•表示层:用于直接和用户交互,也称为交互层,通常是网页、UI等。

•业务逻辑层:即业务逻辑处理层,例如用户输入的信息要经过业务逻辑层的处理后,才能展现给用户。

•数据访问层:用于操作数据库,用户在表示层会产生大量的数据,通过数据访问层对数据库进行读写操作。

虽然在软件设计中划分了经典的3层模型,但是对业务场景没有划分。一个典型的单体应用就是将所有的业务场景的表示层、业务逻辑层和数据访问层放在一个工程中,最终经过编译、打包,部署在一台服务器上。例如,典型的J2EE工程是将表示层的JSP、业务逻辑层的Service、Controller和数据访问层的Dao,打成war包,部署在Tomcat、Jetty或者其他Servlet容器中运行。经典的单体应用如图1-1所示。

▲图1-1 经典的单体应用架构

在一个小型应用的初始阶段,访问量较小,应用只需要一台服务器就能够部署所有的资源,例如将应用程序、数据库、文件资源等部署在同一台服务器上。最典型的就是LAMP系统,即服务器采用Linux系统,开发应用程序的语言为PHP,部署在Apache服务器上,采用MySQL数据库。在应用程序的初始阶段,采用这种架构的性价比是非常高的,开发速度快,开发成本低,只需要一台廉价的服务器。此时的服务器架构如图1-2所示。

▲图1-2 LAMP应用服务器示意图