http://www.cnblogs.com/Survivalist/p/8012266.html
架构拆分的演变:
一、传统项目的架构
all in one(所有模块在一起,技术也不分层),
注:像05年06年那会儿,就是这样,把代码写在jsp里面,那时候还没有分层的概念,把所有的东西都写在一起,这就叫做all in one
二、分层开发(mvc架构,服务器的分离部署)
三、集群的配置(一般it公司):
特点:
1.项目采用多台服务器集群部署
2.mysql数据库采用多台服务器集群部署
这种集群部署存在两个问题
1.session如何共享?
1)用Tomcat集群复制(广播模式)来共享session:这种解决方案是利用Tomcat来进行集群复制,把每个服务器上的session都共享式的都复制一遍,保证每个服务器上都有着一个用户的session数据
2)用第三方redis服务器来存储session
用这种方式来存储session的话,只需当前正在使用的项目把所有session都放在redis里面,当有其他项目需要使用时,就可以直接从redis中直接获取session,从而解决了这个问题
2.这么服务器,请求该往哪发送?
怎么解决选择哪个作为解释请求的服务器呢?
答案是:用nginx服务器来分发请求,实现负载均衡。
四、面向服务的分布式架构(SOA):
远程框架:
1、webservice
webservice实现面向服务架构 --SOA
特点:
1、web层拆分为一个独立的项目(war包),service层拆分为一个项目(war包)
web层和service层是远程调用关系
优点:
1、表现层和服务层采用集群部署(具有高可用性)
2、并发能力提高(10000+)
问题:
1、服务层网络抖动
2、服务层进程繁忙
2、dubbo 这种中间件的方式
使用dubbo实现面向服务分布式架构:SOA
特点:
表现层拆分为一个独立的项目(war),服务层拆分为一个独立的项目(war)
关系:表现层和服务层是远程调用RPC关系
表现层和服务层通信是NOI(new IO)异步通信
问题:new IO 和 io有什么区别?
new IO 有缓存,io没有缓存
好处:
当服务器启动时,service会把所有的对象通过dubbo注册给zookeeper,而以后每次需要
请求获取对象时,就可以直接从dubbo中异步获取,不需要再去访问service层,这样就解决了
服务层网络抖动和服务层进程繁忙的弊端。zookeeper可以看成是一个数据库,用来存储数据的
3、springcloud
分布式框架的优点:
1、大幅提高并发访问量(10000+)
2、可以节省成本(因为这种优化仅是从架构方面进行优化,而不需要去配置大量的服务器)
3、实现服务层与表现层的解耦合
架构拆分的演变:
一、传统项目的架构
all in one(所有模块在一起,技术也不分层),
注:像05年06年那会儿,就是这样,把代码写在jsp里面,那时候还没有分层的概念,把所有的东西都写在一起,这就叫做all in one
二、分层开发(mvc架构,服务器的分离部署)
三、集群的配置(一般it公司):
特点:
1.项目采用多台服务器集群部署
2.mysql数据库采用多台服务器集群部署
这种集群部署存在两个问题
1.session如何共享?
1)用Tomcat集群复制(广播模式)来共享session:这种解决方案是利用Tomcat来进行集群复制,把每个服务器上的session都共享式的都复制一遍,保证每个服务器上都有着一个用户的session数据
2)用第三方redis服务器来存储session
用这种方式来存储session的话,只需当前正在使用的项目把所有session都放在redis里面,当有其他项目需要使用时,就可以直接从redis中直接获取session,从而解决了这个问题
2.这么服务器,请求该往哪发送?
怎么解决选择哪个作为解释请求的服务器呢?
答案是:用nginx服务器来分发请求,实现负载均衡。
四、面向服务的分布式架构(SOA):
远程框架:
1、webservice
webservice实现面向服务架构 --SOA
特点:
1、web层拆分为一个独立的项目(war包),service层拆分为一个项目(war包)
web层和service层是远程调用关系
优点:
1、表现层和服务层采用集群部署(具有高可用性)
2、并发能力提高(10000+)
问题:
1、服务层网络抖动
2、服务层进程繁忙
2、dubbo 这种中间件的方式
使用dubbo实现面向服务分布式架构:SOA
特点:
表现层拆分为一个独立的项目(war),服务层拆分为一个独立的项目(war)
关系:表现层和服务层是远程调用RPC关系
表现层和服务层通信是NOI(new IO)异步通信
问题:new IO 和 io有什么区别?
new IO 有缓存,io没有缓存
好处:
当服务器启动时,service会把所有的对象通过dubbo注册给zookeeper,而以后每次需要
请求获取对象时,就可以直接从dubbo中异步获取,不需要再去访问service层,这样就解决了
服务层网络抖动和服务层进程繁忙的弊端。zookeeper可以看成是一个数据库,用来存储数据的
3、springcloud
分布式框架的优点:
1、大幅提高并发访问量(10000+)
2、可以节省成本(因为这种优化仅是从架构方面进行优化,而不需要去配置大量的服务器)
3、实现服务层与表现层的解耦合