集群的原理

1、集群的原理

通过一组协同工作的服务器可以实现数据的高并发、更稳定、高可用、时效性及鲁棒性的目的服务器集合。
鲁棒性
鲁棒是Robust的音译,是指在服务器在异常和危险情况下的生存能力,所谓“鲁棒性”,也是指控制系统在一定(结构,大小)的参数摄动下,维持其它某些性能的特性。根据对性能的不同定义,可分为稳定鲁棒性和性能鲁棒性。以闭环系统的鲁棒性作为目标设计得到的固定控制器称为鲁棒控制器。

1.1、集群的扩展方式

1.1.1、垂直扩展

原理:更换性能(硬件)更强的服务器
优点
①、垂直扩展时,技术难度低,便于实现;
②、服务器的拓扑结构无需更改;
缺点
①、服务器垂直扩展有上限瓶颈;以及应用程序运行的并发的上线瓶颈;
②、垂直扩展时,相应的服务会中断;
适用场景:小型的公司,并发量小且未来的无新业务上线;

1.1.2、水平扩展

原理:增加服务器的数量
优点
①、服务器的上限变高,可以支持更高的并发量;
②、水平扩展时,服务不会中断;
③、对于大型公司而言,性价比较高;
缺点
①、水平扩展时,技术难度相对较高;
②、架构比较复杂,不便于维护;
适用场景:中大型的公司,并发量大且未来的有新业务上线;
水平扩展的服务器架构是以前期的开发为前提的,在开发之前就应该确定了后期集群的搭建方案。
实例:DNS(由于缓存服务器影响服务器的性能平衡,用户会将第一次访问的域名和IP地址的对应方式记录到缓存中,导致失去负载均衡的意义)、amoeba、Nginx、Apache;

1.2、服务器的水平扩展

1.2.1、组成

①、Agent端;
作用:负载均衡,将用户的请求均衡分配至真实服务器上进行数据解析;
②、Real Server端;
作用:实际的处理用户的数据请求;
③、Mysql+Share端;
作用:记录并保存RS产生的数据,并且将多个RS的数据汇总,使每个RS的获取的都一致。

1.2.2、扩展类型

主要扩展Real Server的数量,但当Real Server的数量达到一定值时,Agent的并发能力已达到极限,再扩展Real Server的数量就没有意义了,

2、集群的分类

2.1、负载均衡集群(load balancing cluster):LBC

2.1.1、概念

将单台服务器的压力,通过增加服务器数量的方法将服务器压力均摊到更多服务器节点的服务器的搭建方式;

2.1.2、结构

在这里插入图片描述

①、前端组件/负载调度器
负载调度器在集群中是比较重要的角色,决定了集群的最高上限, 决定了集群的运行方式;
分类
软件/硬件
软件:amoeba、Nginx、Ha-Proxy(Linux-HA)、LVS
特点:造价低、性能相对较差
Ha-Proxy:是一个使用C语言编写的自由及开放源代码软件,其提供高可用性、负载均衡,以及基于TCP和HTTP的应用程序代理。
LVS(Linux Virtual Server):是一个虚拟的服务器集群系统。
硬件:ROSE、安瑞科技、F5(统治地位)
特点:造价高(硬件集成软件)、性能好、售后体系完善、操作简单
②、真实服务器
③、共享存储

2.1.3、作用

承担更大的并发压力。

2.1.4、弊端

当前端组件或负载调度器发生故障时,整个集群瘫痪,即集群不可用。

2.2、高可用集群(High Availability Cluster):HAC

2.2.1、概念

在负载均衡服务器的基础上,给前端组件/负载调度器添加一个热备服务器,并在两个服务器之间连接一个"心跳线",让热备服务器实时监控(发送ACK包)主负载调度器的状态,若主负载调度器已宕机,热备服务器立即”顶替“,变为主负载调度器。
尽可能的提高服务器的可用性。
心跳线:主要用于主从服务器之间,是连接工作机与备份机的网线;通过软件的方式监视工作机,备份机一旦发现工作机由于某种原因停止服务,则立即投入使用,以保证网络的畅通和服务的正常运行

2.2.2、结构

在这里插入图片描述

①、前端组件/负载调度器及热备负载调度器
②、真实服务器
③、共享存储

2.2.3、作用

在承担了高并发的基础上,还实现了该集群的高可用性,在主负载调度器宕机时能保证该集群能够继续使用。

2.2.4、弊端

①、负载调度器的利用率为50%;致使该集群的性价比相对不高。
两个负载调度器均有不同的业务,也互为热备,当另一个负载调度器宕机时,另外一个将其业务承接过来,(工作环境中不建议使用,数据访问量大会导致两台负载调度器都宕机)
耦合:是指两个或多个事物、软件或者集合之间存在紧密联系的程度;
强耦合:两个或多个集合之间有直接的关系;
弱耦合:两个或多个集合之间有间接的关系;
解耦:是指将两个集合的耦合程度降低或者"解开",使其不存在耦合或降低耦合程度;
在软件工程中,对象之间的耦合度就是对象之间的依赖性。对象之间的耦合越高,维护成本越高,因此对象的设计应使类和构件之间的耦合最小,把关联依赖降到最低,而不会产生牵一发而动全身的现象。
微服务(Microservice):Microservice架构模式就是将整个Web应用组织为一系列小的Web服务。这些小的Web服务可以独立地编译及部署,并通过各自暴露的API接口相互通讯。它们彼此相互协作,作为一个整体为用户提供功能,却可以独立地进行扩展。
②、脑分裂:热备负载调度器发送ACK包后,未收到回信(主负载调度器暂时没有空闲的I/O来处理其请求,或心跳线故障);导致该集群中存在两个主负载调度器,
脑分裂的后果
a、当前服务不可用;
一个集群中不能出现两个服务器上配置同一个IP,相互冲突,导致服务无法使用;
b、造成数据丢失;
两个服务器之间IP来回跳转,用户刚在A上写入数据,尚未保存到后端的数据库中,就跳到B服务器上,导致数据丢失。
脑分裂的解决方案
a、冗余心跳线;
b、增加心跳检测(多次间歇性探测);
c、电源交换机(通过网络命令闭合或关闭对应的接口电源)
实现方案:
软件:heartbeat(Linux-HA)、Keepalived
硬件:ROSE、安瑞科技、F5

2.2.5、高可用的标准

99%:及格线 一年宕机 87.6H
99.9%:一般公司的目标 一年宕机 8.76H
99.99%: 一年宕机 52.56min
99.999%:目前行业达到的最高标准; 一年宕机 5.256min
集群的可用性会与其构建成本成指数性相关,具体的搭建可以根据公司现状进行评估搭建。

2.3、高性能运算集群(High-PerformanceComputingCluster):HPCC

2.3.1、产生背景

对于特殊行业一些数据的预测值有时效性要求,例如对于天气情况的预测、卫星发射的轨道预测,导弹轨迹的预测、密码的破解等。
使用范围:军事、气象、动画渲染等方面,专一性、针对性比较强,

2.3.2、概念

提供单台计算机无法提供的计算能力的服务器集群

2.3.3、工作方式在这里插入图片描述

由于数据庞大,由负载调度器将一个数据拆分为多个数据片段,再将各个片段分发给真实服务器处理,然后交由一个服务器进行校验,最后再将数据片段组合到一起。

2.3.4、HPCC和LBC的区别

LBC:有负载调度器将数据按照算法分发给其中一台真实服务器
HPCC:有负载调度器将数据分片后分发给所有的真实服务器,
例:一个任务A,理论上可以拆分为10个a,现有11台性能相同的服务器;
搭建LBC: 处理了 1 个A, 2 节点参与运算,处理了 0 a;无数据包的拆分能力
搭建HPCC: 处理了 1 个A, 11 节点参与运算,处理了 10 a;


版权声明:本文为Damons_110原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。