我在网上看到的一个图,特别有意思也很形象:
如果不是很明白那么看了下面的内容,再回头看这个图,你会豁然开朗的
什么是集群?
百度:
计算机集群简称集群是一种计算机系统,它通过一组松散集成的计算机软件和/或硬件连接起来高度紧密地协作完成计算工作。在某种意义上,他们可以被看作是一台计算机。集群系统中的单个计算机通常称为节点,通常通过局域网连接,但也有其它的可能连接方式。集群计算机通常用来改进单个计算机的计算速度和/或可靠性。一般情况下集群计算机比单个计算机,比如工作站或超级计算机性能价格比要高得多
头大,可以直接忽略
集群:同一个业务,部署在多个服务器上,不同的服务器运行同样的代码,干同一件事情。
举个例子:
将一个网站放在A服务器上,一旦A服务器访问量过大系统就会崩溃,但是如果把网站再发布到B服务器上,这样就有两台服务器在处理访问,分担了压力,如果这时A服务器崩溃,还有B服务器在工作。可以缓解高并发。
特点:
注意每台服务器都是运行的同一个系统(或者项目)。
集群技术的优点:
1.通过多台计算机完成同一个工作,达到更高的效率。
2.两机或多机内容工作过程等完全一样。如果一台死机,另一台可以起作用。
集群主要解决高并发很有效,解决高并发一个方式就是提高服务器的性能,比如cpu处理速度,增大缓存等等,但是往往成本会很高,另一种方式就是把配置一般的服务器多弄几个,这样不仅处理效率会有提高,而且还较少了服务器崩溃导致软件运作问题。
例如你是一个小超市的老板,为了解决收银问题,你可以花重金去聘请一个高效率的收银员,也可以花同样的价格甚至更少的钱去聘请两个效率一般的收银员。第一种一旦高效率收银员家里有事请假了,你这个超市就没办法进行下去,,但是第二种,就不需要担心这个问题,只需要担心万一只有一个在场,而结账的顾客太多怎么办。这样想,集群是不是就很清楚了?
但是假如你的软件很火,访问量已经超过你所有服务器形成的集群的最大访问量,而且再增加服务器的数量效果不明显的时候,怎么办?再为现有的服务器升级?那么我们看看分布式是怎么做的。
什么是分布式?
先看概念:
分布式系统是一组计算机,通过网络相互连接传递消息与通信后并协调它们的行为而形成的系统。组件之间彼此进行交互以实现一个共同的目标。
换句话说:
分布式:将一个业务拆分成多个子业务,部署在不同的服务器上,不同的服务器。运行不同的代码,为了同一个目的。
举个例子:
例如:我们平时自己做课设,前后台都要自己写,但是每个人擅长的领域不一样,就会导致这整个项目很难看,有的做出来页面很漂亮但是性能不高,有的做出来性能很好但是页面看不下去。那么这时候就可以实行“术业有专攻
”,你会前端,你就专门负责前端,你会java后台,前端的事情就不需要操心,整个项目的质量也会提高。那分布式是怎样的呢?就是将每个模块独立出来,访问量大的模块,我用性能好的服务器装,访问量小的模块我可以用差一点的服务器。这样一是降低了项目各个模块的耦合度,便于扩展和优化;二是合理利用了资源,哪一模块访问量过大性能跟不上的时候,就单独优化该模块的服务器即可。
特点:
将软件的功能拆分,模块之间独立,在使用这些模块的时候再组合起来就是一个系统了。
优点:
1.模块之间独立,各做各的事,便于扩展,复用性高。
2.高吞吐量。某个任务需要一个机器运行10小时,将该任务拆分成10个任务用10台机器分布式跑,可能只需要一两个小时就可以完成了。
它们俩既然这么厉害能不能合体?当然!
合体叫做:
分布式集群
举个例子:
假如你要做个大项目,前端需要2个人、测试1个、java后台5个人,这后台的5个人就相当于集群,java、前端、测试三者相对于整个项目而言属于分模块的(分布式)。
说到这里,其实就会明白,分布式和集群是可以嵌套的,比如java后台需求更多,那我再加5个人,将后台一部分给前五个用java开发,另外一大模块用python开发。
那么运用好分布式和集群,就可以使项目性能更加完善。
一般大型高并发系统架构,都会采用分布式集群部署,我们几乎每个人都在用的==12306==就是属于这种分布式集群的架构。
详细文章可以参看这篇:
链接: [“12306”的架构到底有多牛逼?](https://blog.csdn.net/ki8qzvka6gz4n450m/article/details/103017731).
当然这只是粗略从概念出发来理解,要深入学习还需要花很多功夫的哦。
欢迎关注松鼠的公众号:松鼠小码农
和松鼠一起学习。