java web开发中,传统的系统架构通常为三层架构:web层,service层,dao层。
web层负责页面数据的展示
service层负责业务逻辑的处理
dao层负责对数据库的操作
对于传统的企业项目,企业内部等一些不需要高并发的项目而言,该模式还是适用的。
相对于电商行业,处理高并发是一个需要面临的问题。对于tomcat而言,能支持300的并发已经是很高的一个值,tomcat默认配置并发量为150,最高1000(反正我是不信),硬件配置对其有一定的影响。有人说,没事,我就用硬件堆。确实能用硬件解决的问题就不要用软件来解决。
随着并发的增加,也就意味着需要做tomcat的集群。由于设置了session复制,随着tomcat集群节点的增加,除了成本的增加,站点的服务能力并没有明显的增加,站点的服务能力甚至会下降。这时候硬件战术失去了效用。
这是后我们就需要思考一下怎么解决这个问题?
当tomcat集群节点增加,理论上并发处理的能力应该会提高而不会下降,而出现下降的原因是由于多个节点之间采用的session复制,这才导致了这个问题。那么如何解决呢?
解决的办法就是将session复制抽离为一个独立的模块---单点登录系统。我们还可以想到,除了站点的首页,以及其他一些个别的页面有相对较高的并发量,其他页面的并发量不是那么高,这时我们可以根据功能模块,将这个项目分割为不同的独立的功能模块,根据每个功能模块并发量的不同配置不同的tomcat集群。--------这就是分布式。
所谓的分布式,就是讲一个项目分割成不同的功能模块,使用接口通信,降低模块之间的耦合度
但是该方式存在一个问题:如果模块1和模块2处理同一件事务,就会造成代码的冗余。
于是soa就出来了。
SOA:Service Oriented Architecture 面向服务的架构。
简单的说就是把项目拆分为服务层和表现层。
服务层:提供业务逻辑,对外提供服务
表现层:处理和页面的交互,调用服务层的业务逻辑