分布式与集群
- 分布式:
将任务划分为多份由不同的服务器来处理。分布式是相对于集中式来说的,分布式系统具有更好的可扩展性。某个任务节点的失败不影响其他任务节点的处理。
比如:有9个人要买车票,去A的3人,去B的3人,去C的3人。购买一张票的处理时间为1分钟,那么一个窗口需要9分钟。采用分布式就是将去A的人分配到A窗口排队买票,将去B的人分配到B窗口排队买票,将去C的人分配到C窗口排队买票,那么只需要3分钟就可以处理完。后来业务增加了,可以购买去D的车票,我只需要开一个D窗口处理就可以了,而不用影响A,B,C窗口的处理。这就是分布式的可扩展性。如果C窗口的售票员生病来不了了,那么乘客就不能买到去往C的车票了。
- 集群:
表示可以独立完成某个任务的个体的集合。每个个体都可以处理任务。
比如:有9个人要买车票,去A的3人,去B的3人,去C的3人。购买一张票的处理时间为1分钟,那么一个窗口需要9分钟。采用集群就是多开几个窗口,每个窗口都可以售票A,B,C。如果业务增加了D,那么窗口A,B,C都要能够处理D的业务。如果C窗口的售票员生病来不了了,那么只是将压力分给了其他几个窗口而已。对业务无影响。
假如乘客去往A的人数一直比较多,而去往C的人数比较少,那么采用分布式的A售票员不是很累吗,怎么去协调这个资源呢,
如果采用集群方式处理,那么怎么确保车票A的资源的数据共享呢。每来一个A乘客,售票员都要问下其他人,票还有吗。如果这样的集群单元非常多,也是很耗时间的吧
解决:我们可以先采用分布式,对于乘客多的A,可以进行集群处理,多开几个窗口出来处理A,另外找一个调度员,专门告诉他们哪里可以买票,哪里人少。
如果客流继续扩大,车站处理不了了,不能添加窗口了怎么办,有人说对车站升级,扩大,添加窗口不就行了,当然可以。我们还可以另外在建多个这样的售票站是不是也可以做到呢。
- 从上面的2个例子可以看出
分布式的优点: 高扩展性,新增业务对原有业务无影响。
分布式的缺点:也是由其优点决定的,单个处理节点失效将直接导致业务的无法处理,对业务的处理无法做到负载均衡
集群的优点: 横向扩展,业务量的提升可以通过添加节点解决。
集群的缺点:业务的改变将影响所有处理节点,也是没有做到负载均衡。资源共享的问题。
2者结合使用确实解决了,售票员上不了班而不能售票的问题,也解决了增加业务不用所有售票员都要学习新技能的问题。控制客流我们也有调度员,但是资源共享的问题怎么解决呢?办法来了,我们对资源也做集群处理资源E,资源F,都可以出A票,E售票员与F售票员都在处理A票,E售票员从E资源取票,F售票员从F资源取票,那么我来一个监控人员,他来做一个协调,他不停的监控资源E,资源F,如果发现哪个资源票快不够了,那么就将剩下的票重新分配一下。是不是解决了呢。
今天写了好多字啊。