web应用需要部署在服务器上,当一个服务器不够时,需要部署第二个。倘若还不够,这时需要进行集群。服务器集群一般4-5台,若超过,则性能可能下降。

当一条应用来的时候,首先访问jsp页面,然后请求controller,接着请求service,再请求dao,需要将controller,service,dao分层。之前,我们都是将三者放在一起,一个前台需要一个后台。这样会造成资源的浪费。按需求部署服务器,将三者分别置于三台服务器上,则每一台处理的服务量就减小了,既更大化的利用资源,又提高了速度。
将controller,service,dao层分割,每一层都放置一个集群,就可以根据每个服务器的请求量,分布相对数量的服务器。如请求数据库多一点,可将dao层再分割。这样就解决了访问量的问题,可以根据需求无限分层。

之前创建maven工程,直接就是webapp,当然,maven可以将一个工程划分模块。我们想要实现分割,首先创建一个总工程cube.shop,creat a simple project打包成pom。纯java文件,打成jar包,如果是一个父目录/工程打成pom,如果是一个web打成war包。

在cube.shop工程中的pom.xml需要将所有的包进行管理,以后所有的工程都是它的子工程/项目,这些子工程需要依赖父工程。
其他项目需要jar包,可将所有jar包的管理放在这个pom.xml中,需要什么就可以来取,以后子工程使用只需要groupId和artifactId,不需要version版本号。

controller与service之间通过zookeeper交互数据,Dao与service之间通过将dao层打包成jar包放在service中,而service和dao功能不同,虽然都会访问数据库,但service层偏于计算,dao偏于查询,二者对服务器性能要求不同,将其分层实现对功能的需求针对性。那么我们有疑问,为什么不能将service层打包放在controller层呢?当然可以。但是和service层交互数据的不止管理层,用户访问同样需要请求service层,这时,zookeeper相当于一个中介,建立在controller与service之间,用户与service之间,用于数据的交互。