集群-分布式-微服务
**集群是个物理形态,分布式是个工作方式。**分布式是系统部署方式,微服务是架构设计方式。
-
集群:同一个业务,部署在多个服务器,一台服务器垮了,其它的服务器可以顶上来。
-
分布式:顾名思义服务是分散部署在不同的机器上的,一个服务可能负责几个功能,是一种SOA(Service-Oriented Architecture,面向服务的架构)架构的,服务之间也是通过rpc来交互或者是webservice来交互的。具体是一个业务分拆多个子业务,部署在不同的服务器上;分布式的每一个节点,都完成不同的业务,一个节点垮了,那这个业务就不可访问了。
-
微服务:服务就是很小的服务,小到一个服务只对应一个单一的功能,只做一件事,不同服务之间通过rpc调用,每个微服务都是由独立的小团队开发,测试,部署,上线,负责它的整个生命周期。
分布式和集群的联合:
好的设计应该是分布式和集群的结合,先分布式再集群,具体实现就是业务拆分成很多子业务,然后针对每个子业务进行集群部署,这样每个子业务如果出了问题,整个系统完全不会受影响
系统应用部署在超过一台服务器或虚拟机上,且各分开部署的部分彼此通过各种通讯协议交互信息,就可算作分布式部署;生产环境下的微服务肯定是分布式部署的,分布式部署的应用不一定是微服务架构的
分布式处理的问题是当一个应用、数据库太大,导致性能、开发效率等问题时,可以通过分布式的方式,将大模块拆解为小模块,从而可以缓解上述问题。被分布了的模块又可以与集群以及负载均衡结合,获得性能、高可用等特性。
分布式-微服务:
微服务相比分布式服务来说,它的粒度更小,服务之间耦合度更低,由于每个微服务都由独立的小团队负责,因此它敏捷性更高,分布式服务最后都会向微服务架构演化,这是一种趋势, 不过服务微服务化后带来的挑战也是显而易见的,例如服务粒度小,数量大,后期运维将会很难。
集群和负载均衡:
负载均衡的前提是集群,集群和负载均衡两者联系比较紧密,一个应用在性能遇到瓶颈,或者需要高可用的时候,可以通过集群的方式使用多台机器运行同一应用。集群加上负载均衡,可以将请求分配至不同的机器上,从而使机器的负载情况尽可能的平均。
集群可以利用多个计算机进行并行计算从而获得很高的计算速度,也可以用多个计算机做备份,从而使得任何一个机器坏了整个系统还是能正常运行。
集群类型:
1.高可用性集群(High Availability,简称HA cluster)
高可用的含义是最大限度地可以使用。此类集群实现的功能是保障用户的应用程序持久、不间断地提供服务,以便考虑计算硬件和软件的易错性,比如避免停机并保持系统可访问性。集群存在所有主机都称为节点,每个HA集群最低要求需有2个节点;正常来说,节点数最好为奇数。在生产环境中,HA集群的节点数至少为3个,可以降低发生脑裂的概率。
如果高可用性集群中的主节点发生了故障,那么这段时间内将由次节点代替它。次节点通常是主节点的镜像,所以当它代替主节点时,它可以完全接管其身份,并且因此使系统环境对于用户是一致的。
(1)主从方式 (非对称方式)
工作原理:主机工作,备机处于监控准备状况;当主机宕机时,备机接管主机的一切工作,待主机恢复正常后,按使用者的设定以自动或手动方式将服务切换到主机上运行,数据的一致性通过共享存储系统解决。
(2)双机双工方式(互备互援)
工作原理:两台主机同时运行各自的服务工作且相互监测情况,当任一台主机宕机时,另一台主机立即接管它的一切工作,保证工作实时,应用服务系统的关键数据存放在共享存储系统中。
(3)集群工作方式(多服务器互备方式)
工作原理:多台主机一起工作,各自运行一个或几个服务,各为服务定义一个或多个备用主机,当某个主机故障时,运行在其上的服务就可以被其它主机接管。
2.负载均衡集群(load balancing,LB)
负载均衡集群也是由两台或者两台以上的服务器组成。分为前端负载调度和后端服务两个部分。负载调度部分负责把客户端的请求按照不同的策略分配给后端服务节点,而后端节点是真正提供应用程序服务的部分。与HA Cluster不同的是,负载均衡集群中,所有的后端节点都处于活动动态,它们都对外提供服务,分摊系统的工作负载。
3.科学计算集群(High Performance,HP或者HPC Cluster)
标准计算系统主要通过串行计算来解决问题,它将工作负载划分为一系列任务,然后在同一处理器上逐个运行这些任务。并行计算是在多台计算机服务器或处理器上同时运行多个任务。
高性能计算集群,简称HPC集群,这类集群致力于提供单个计算机所不能提供的强大计算能力,包括数值计算和数据处理,并且倾向于追求综合性能。集群可由数百或数千个通过网络连接的计算服务器组成,每个服务器都称为一个节点。每个集群中的节点彼此并行工作,提高处理速度,从而实现高性能计算。
构建高性能计算的架构:计算服务器需要通过网络连接到一个集群中。软件程序和算法也需要同时在集群中的服务器上运行。集群通过网络连接到数据存储来捕获输出。这些组件可以无缝运行,从而完成多种多样的任务。
当然,要以最佳性能运行,每个组件都必须与其他组件保持同步。例如,存储组件必须能够在处理数据时尽快将数据馈送和载入计算服务器。同样,网络组件必须能够支持计算服务器和数据存储之间的高速数据传输。如果一个组件无法跟上其余组件的步伐,则整个 HPC 基础架构的性能将会受到影响。
在集群的这三种基本类型之间,经常会发生混合与交杂。于是,可以发现高可用性集群也可以在其节点之间均衡用户负载,同时仍试图维持高可用性程度。同样,可以从要编入应用程序的集群中找到一个并行集群,它可以在节点之间执行负载均衡。
**HA集群脑裂:**是指在一个高可用(ha)系统中,当联系着的两个节点断开联系时,本来为一个整体的系统,分裂为两个独立节点,这时两个节点开始争抢共享资源,结果会导致系统混乱,数据损坏。 对于无状态服务的ha系统,无所谓脑裂不脑裂;但对有状态服务(比如mysql)的ha,必须要严格防止脑裂。