漫话:如何给女朋友解释什么是分布式和集群?

原文链接:https://juejin.im/post/5b94c9bce51d450e4967b1cc


某天,下班较早,我正在玩吃鸡,已经到决赛圈了,这时候,女朋友满脸求知欲的朝我走过来。





我头也不抬,直接抛出一句:


分布式(distributed)是指在多台不同的服务器中部署不同的服务模块,通过远程调用协同工作,对外提供服务。


集群(cluster)是指在多台不同的服务器中部署相同应用或服务模块,构成一个集群,通过负载均衡设备对外提供服务。




集中式系统


我和女朋友来到一家小饭店,开始点菜:红烧鱼、糖醋排骨、酸辣土豆丝,好了就这么多了。


现在,我们和这家饭店之间的就是用户和系统的关系。我们要求他给我们做出一顿丰盛的晚餐。我们不关心他后厨的一切事情。只要它能在短时间内提供美味的菜品就好了。


上面,我们对这个饭店提出来两个要求:上菜时间短、菜品美味。除了这些,顾客可能还有其他要求,比如菜品要干净卫生、酸辣土豆丝可以多放些辣椒等。


映射到计算机系统中,用户提出的要求就是:


上菜时间短   -> 性能
干净卫生    -> 安全性
菜品多放辣椒 -> 扩展性
菜品美味    -> 可用性
复制代码


上面说的这家小饭店,只有一个厨师。就是一个集中式系统。

一个集中式部署的电子商务应用


如果饭店内只有我们一个顾客的话,以上几条基本都可以满足的。但是,如果到了晚饭时间,突然顾客变多了,这些顾客的要求可能就没办法全都满足了。


饭店内人满为患,这家小饭店只有一个厨师的情况下,他需要保证所有菜品美味、卫生,又要保证所有菜品可以准时准备好,又要给不同用户满足定制化要求。这种挑战是及其大的。


以上,映射到计算机软件中,也是一样的。随着业务量的增长,网站的高可用、易伸缩、可扩展、安全等目标就会受到极大的挑战。


集群部署


随着饭店的生意越来越好,老板意识到只有一个厨师会存在很大问题。


首先,在客流量高峰期,一个厨师无法满足所有顾客的要求。


其次,厨师变成了一个单点,就是他不能生病,一旦他生病了,整个饭店就无法营业了。


这可愁坏了老板,一时之间不知道该如何是好了。但是,老板有个聪明的老婆,他提了一个建议。




然后,为了提高饭店的待客能力。老板决定多雇佣几个厨师。


有了多个厨师了之后。店内顾客的点菜,就可以分配给后厨的多个厨师来做。


具体如何分配,这就是需要一定的策略了。可以选择分配给空闲的厨师、也可以按顺序轮流分配。


虽然,饭店有多个厨师,但是用户并不知道这些事情,他只知道自己的点菜需求,可以得到满足就可以了。他也不需要关心到底是哪位厨师给自己做的菜。除非菜品出现了质量问题时,就需要找到指定的厨师来问责了。


以上,映射到计算机软件中,也是一样的。集中式系统只有一台计算机提供服务,集群就是有多台计算机提供同样的服务。


一个集群部署的电子商务应用


用户的请求通过负载均衡分配给集群中的各个机器。整个系统对于用户来说就像是一台机器在提供服务一样。


分布式部署


在饭店雇佣了多个厨师之后,饭店的服务能力确实提升了很多。顾客也越来越多。


但是,最近店内经常会有顾客投诉某个菜品的味道和自己之前吃到过的不一样了。


经过店长的仔细调查,发现是由于这家店的厨师除了要负责炒菜以外,还需要负责洗菜、切菜、备菜,甚至是刷碗。


这就使得厨师没办法专注于炒菜了,他会被很多其他的琐事而牵绊,导致无法专心炒菜,影响了菜品的质量。


而且,由于最近店内的顾客也越来越多,几个厨师还是忙不过来。


这时候,老板就要想办法继续提升饭店的服务能力。他想着要继续雇佣几个厨师。


还是饭店老板那个聪明的老婆,又给他出了一个更好的主意。




这就是一种分布式的思想。


通过把一件大的事情,拆分成多个小事情,分别交给不同的人来做。


这样术业有专攻,洗菜的可以把菜洗的更干净、厨师也可以专注炒菜,把菜炒的更加美味。


饭店从多个厨师的配置,变成了多个洗菜工+配菜师+厨师的配置。这家饭店的服务能力大大提升。再也没有顾客投诉菜品问题了。


对于顾客来说,他们还是不知道后厨的这些变化的,他甚至不知道自己点的菜是多个人配合的结果。


以上,映射到计算机软件中,也是一样的。除了通过集群部署的方式提升系统能理外,还可以通过分布式部署的方式。

一个分布式部署的电子商务应用


把一个大的系统拆分成多个子系统,每个子系统负责自己专注的事情,然后通过网络进行通信和协调,对用户来说,就像访问的是同一台机器一样。






随着饭店的发展,慢慢的从只有一个厨师演变成有多个厨师,进而演变成有洗菜工、配菜师、厨师等多个职位。


这个网站架构发展也类似。网站初期,只需要搭建一个集中式的单体应用就可以了,如果业务量有很大增长,先考虑增加机器,通过集群部署提升能力。接着,就可以考虑分布式了。



转载于:https://juejin.im/post/5b94c9bce51d450e4967b1cc

展开阅读全文
博主设置当前文章不允许评论。

什么集群

08-21

一、什么是集群?rnrn  集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提rnrn供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故rnrn障恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都rnrn是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,rnrn协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有恢复服务rnrn器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并rnrn通过系统级的冗余提供固有的可靠性和可用性。rnrn二、集群的分类:rnrn1、高性能计算科学集群: rnrn  以解决复杂的科学计算问题为目的的IA集群系统。是并行计算的基础,它可以不使用专门的由十至rnrn上万个独立处理器组成的并行超级计算机,而是采用通过高速连接来链接的一组1/2/4 CPU的IA服务器,rnrn并且在公共消息传递层上进行通信以运行并行应用程序。这样的计算集群,其处理能力与真正超级并行rnrn机相等,并且具有优良的性价比。 rnrn2、负载均衡集群: rnrn  负载均衡集群为企业需求提供更实用的系统。该系统使各节点的负载流量可以在服务器集群中尽可rnrn能平均合理地分摊处理。该负载需要均衡计算的应用程序处理端口负载或网络流量负载。这样的系统非rnrn常适合于运行同一组应用程序的大量用户。每个节点都可以处理一部分负载,并且可以在节点之间动态rnrn分配负载,以实现平衡。对于网络流量也如此。通常,网络服务器应用程序接受了大量入网流量,无法rnrn迅速处理,这就需要将流量发送给在其它节点。负载均衡算法还可以根据每个节点不同的可用资源或网rnrn络的特殊环境来进行优化。 rnrn3、高可用性集群: rnrn  为保证集群整体服务的高可用,考虑计算硬件和软件的容错性。如果高可用性群集中的某个节点发rnrn生了故障,那么将由另外的节点代替它。整个系统环境对于用户是一致的。 rnrn  实际应用的集群系统中,这三种基本类型经常会发生混合与交杂。rnrn 三、典型集群:rnrn科学计算集群:rnrn1、Beowulfrn当谈到 Linux 集群时,许多人的第一反映是 Beowulf。那是最著名的 Linux rnrn科学软件集群系统。实际上,它是一组适用于在 Linux 内核上运行的公共软件包的通称。其中包括rnrn流行的软件消息传递 API,如“消息传送接口”(MPI) 或“并行虚拟机”rnrn(PVM),对 Linux 内核的修改,以允许结合几个以太网接口、高性能网络驱动器,对虚拟内存管理器rnrn的更改,以及分布式进程间通信 (DIPC) 服务。公共全局进程标识空间允许使用 DIPC 机制从任何节rnrn点访问任何进程。rnrn2、MOSIXrnrnBeowulf类似于给系统安装的一个支持集群的外挂软件,提供了应用级的集群能力。而MOSIX是彻底修rnrn改Linux的内核,从系统级提供了集群能力,它对应用而言是完全透明的,原有的应用程序,可以不经改rnrn动,就能正常运行在MOSIX系统之上。集群中的任何节点都可以自由地加入和移除,来接替其它节点的工rnrn作,或是扩充系统。MOSIX 使用自适应进程负载均衡和内存引导算法使整体性能最大化。应用程序进rnrn程可以在节点之间实现迁移,以利用最好的资源,这类似于对称多处理器系统可以在各个处理器之间切换rnrn应用程序。由于MOSIX通过修改内核来实现集群功能,所以存在兼容性问题,部分系统级应用程序将无法rnrn正常运行。rnrn rnrn负载均衡/高可用性集群rnrn3、LVS(Linux Virtual Server)rnrn这是一个由国人主持的项目。rnrn它是一个负载均衡/高可用性集群,主要针对大业务量的网络应用(如新闻服务、网上银行、电子商务等)。rnrnLVS是建立在一个主控服务器(通常为双机)(director)及若干真实服务器(real-server)所组成rnrn的集群之上。real-server负责实际提供服务,主控服务器根据指定的调度算法对real-server进rnrn行控制。而集群的结构对于用户来说是透明的,客户端只与单个的IP(集群系统的虚拟IP)进行通信,rnrn也就是说从客户端的视角来看,这里只存在单个服务器。rnrnReal-server可以提供众多服务,如ftp, http, dns, telnet, nntp, smtp 等。主控服务器负责对Real-Server进rnrn行控制。客户端在向LVS发出服务请求时,Director会通过特定的调度算法来指定由某个Real-Serverrnrn来应答请求,而客户端只与Load Balancer的IP(即虚拟IP,VIP)进行通信。rnrnrnrn其他集群:rnrn现在集群系统可谓五花八门,绝大部分的OS开发商,服务器开发商都提供了系统级的集群产品,最典型的rnrn是各类双机系统,还有各类科研院校提供的集群系统。以及各类软件开发商提供的应用级别的集群系统,如rnrn数据库集群,Application Server 集群,Web Server集群,邮件集群等等。rnrn 论坛

没有更多推荐了,返回首页