1.传统的项目的架构
无论有多少个需求和功能都放在了一个,一套MVC架构中,所以造成的缺点非常明显
1.代码耦合度非常高
2.后期维护的成本很高(当你要修改 查寻商品 的代码的时候,需要将整个项目全部停掉。)
3.由于部署在一个服务器上,所以并不能实现高并发的需求。
2.并发
使用集群,来实现并发访问。
1.将项目部署到多个服务器上,就可以实现并发访问。
2.不能解决代码耦合度高的问题
3.不能解决维护成本高的问题
4.而且思考这么一个问题,当用户发送一个登录请求,被Nginx分配到 Tomcat1服务器上,存储在Tomcat1服务器上的 session中,但是当用户再次发送一个其他请求,
却被分配到Tomcat2服务器上,此时Tomcat2中的Session中并没有用户信息,所以还要再登陆。那假如有100个呢?
5.当然也可以解决,需要session共享,是以session广播的形式,比较消耗资源,宽带。
如果要达到10000并发
需要20台服务器做tomcat集群。当tomcat集群中节点数量增加,服务能力先增加后下降。
所以集群中节点数量不能太多,一般也就5个左右。
3.分布式架构
将每一个功能模块都拆分成一个个系统,分别部署,有的使用频率非常高的系统,就让部署的服务器多一些,这样并发量也就高了。但是还是有它的缺陷。
集群:相当于同一个工程代码拷贝多份部署到多台服务器,每台服务器单独独立部署运行。
分布式架构:
把系统按照模块拆分成多个子系统;多个子系统相互协作才能完成业务流程系统之间需要进行通信。
优点:
1、把模块拆分,使用接口通信,降低模块之间的耦合度。
2、把项目拆分成若干个子项目,不同的团队负责不同的子项目。
3、增加功能时只需要再增加一个子项目,调用其他系统的接口就可以。
4、可以灵活的进行分布式部署。(每个系统进行集群部署)
缺点:
1、系统之间交互需要使用远程通信,需要开发接口,增加工作量。
2、各个模块有一些通用的业务逻辑无法公用。(比如查询系统和后台管理系统,都会有一个查询的功能,其业务逻辑是一样的,但是无法实现代码的复用,在两个系统中都分别进行了开发)
4.SOA的项目架构
SOA:Service Oriented Architecture面向服务的架构。也就是把工程都拆分成服务层工程、表现层工程。
服务层中包含业务逻辑,只需要对外提供服务即可。
表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。工程都可以独立部署。
用自己的话说就是:前面的传统项目架构,分布式的架构 其针对的是 某个功能,某个逻辑业务来进行开发。但SOA则不是,SOA针对的是某个对象来进行开发(服务层)。比如 商品服务,订单服务,搜索服务..........商品中有搜索,删除,增加等许多功能,当变现层需要什么,就去调用相应的服务。
这是项目的整体架构:
其实可以这样理解,服务层其实就是原来的Controller层,处理页面的。而服务层就相当于 原来的Service层和Dao层。单他们是解耦和的,分别部署的。