集群和分布式
分布式与集群
分布式:一个任务分给多几个机器去做,减少单个任务的执行时间。
集群:提高单位时间内执行任务数。
例如:一个任务由10个子任务组成。
分布式方案:提供10台服务器,每台服务器只处理一个子任务
集群方案:同样提供10台服务器,每台服务器都能独立处理这个任务。假设有10个任务同时到达,10个服务器将同时工作。
传统的系统架构就是经典的三层结构,就一个项目跑在一个tomcat中,但是随着用户数量的增加,一个服务器一个tomcat肯定是不靠谱的,如果乡村教师马云在杭州一个小地方,搞了一台服务器,一个tomcat,跑天猫的代码,然后让我们去访问,那我们估计是不可能看到网站首页的,一直处于宕机状态。哈哈!
这时候可以使用集群的架构,就是说现在马云狠着买了5台服务器,每台服务器都跑天猫的代码,然后又搞了一个Nginx做负载均衡,这时候我们的请求由五台服务器完成的,第一次请求是第一台服务器响应,第二次请求是由第二台服务器响应,这样可以应对的并发量就是之前的5倍,马云很开心,美滋滋。
总结:多台服务器跑的都是一套完整的代码,这就叫集群。
随着淘宝的做大,功能也日益完善,加了很多的功能,在把一个项目都让一套tomcat跑,tomcat说它也很累,能不能少跑点代码,这时候分布式系统架构就产生了,我们把天猫这个大项目按功能划分为很多的模块,比如说单独一个系统处理订单,一个处理用户登录,一个处理后台等等,然后每一子系统都单独跑在一个tomcat中,和起来就是一个完整的天猫项目,这样对每一个tomcat就相对轻松一点。(如果某个子系统的压力还是很多,可以考虑对这个子系统再做集群)
总结:多台服务器合起来跑的才是一套完整代码,这就叫分布式。
SOA:Service Oriented Architecture面向服务的架构。也就是把工程拆分成服务层、表现层两个工程。服务层中包含业务逻辑,只需要对外提供服务即可。表现层只需要处理和页面的交互,业务逻辑都是调用服务层的服务来实现。
这样做的好处就是,系统之间的调用很方便,A系统要用到B系统,直接调用B系统的服务层就可以了。