集群和分布式系统简介
集群的概念
(一)集群的相关术语
-
服务硬件:指提供计算服务的硬件,比如PC机、PC服务器。
-
服务实体:服务实体通常指服务软体和服务硬体。
-
节点(node):运行Heartbeat进程的一个独立主机称为节点,节点是HA的核心组成部分,每个节点上运行着操作系统和Heartbeat软件服务。
-
资源(resource):资源是一个节点可以控制的实体,当节点发生故障时,这些资源能够被其他节点接管。如: 磁盘分区、文件系统、IP地址、应用程序服务、共享存储
-
事件(event):事件也就是集群中可能发生的事情,例如节点系统故障、网络连通故障、网卡故障和应用程序故障等。这些事件都会导致节点的资源发生转移,HA的测试也是基于这些事件进行的。
(二)集群的概念
集群(cluster)就是一组计算机,它们作为一个整体向用户提供一组网络资源,这些单个的计算机系统就是集群的节点。或者说集群是为了解决某个特定问题将多台计算机组合起来形成的单个系统。
-
当单台服务器的性能达不到实际生产需求时,提升服务性能的方式:
● Scale UP:垂直扩展,向上扩展,增强,性能更强的计算机运行同样的服务
● Scale Out:水平扩展,向外扩展,增加设备,并行地运行多个服务调度分配问题,Cluster- 目前垂直扩展不再提及:
● 随着计算机性能的增长,其价格会成倍增长
● 单台计算机的性能是有上限的,不可能无限制地垂直扩展
● 多核CPU意味着即使是单台计算机也可以并行的。那么,为什么不一开始就并行化技术?
- 目前垂直扩展不再提及:
集群的特点
(三)集群的特点
-
1.可扩展性:集群的性能不限于单一的服务实体,新的服务实体可以动态的加入到集群,从而增强集群的性能。
-
2.高可用性:集群通过服务实体冗余使客户端免于轻易遭遇到“out of service”警告。当一台节点服务器发生故障的时候,这台服务器上所运行的应用程序将在另一节点服务器上被自动接管。消除单点故障对于增强数据可用性、可达性和可靠性是非常重要的。
-
3.负载均衡:负载均衡能把任务比较均匀的分布到集群环境下的计算和网络资源,以便提高数据吞吐量。
-
4.错误恢复:如果集群中的某一台服务器由于故障或者维护需要而无法使用,资源和应用程序将转移到可用的集群节点上。这种由于某个节点中的资源不能工作,另一个可用节点中的资源能够透明的接管并继续完成任务的过程叫做错误恢复。
集群的分类
(四)集群的分类
- 负载均衡集群(Load Balance Cluster,LBC)侧重于数据库的横向扩展,提升数据库的性能。
- 高可用性集群(High Availability Cluster,HAC)侧重保证数据库应用持续不断。大部分的数据库集群侧重与此。
- 高安全性集群(High Security Cluster,HSC)侧重于容灾。
- 高性能集群(High Performance Computing,HPC) 高性能:www.top500.org
与高可用集群相关的评价参数:
-
HA:High Availiablity,高可用,SPOF(single Point Of failure)
-
● MTBF:Mean Time Between Failure 平均无故障时间
● MTTR:Mean Time To Restoration( repair)平均恢复前时间
● A=MTBF/(MTBF+MTTR) (0,1):99%,99.5%,99.9%,99.99%,99.999%● 一般的话可达到:==99.99%==、==99.95%== 的高可用性 ● 以99.99%为例:一个月可故障时间:(60*24*30)*(1-0.9999)=4.32min
分布式系统
分布式系统的概念
- 用最简单的方式定义,分布式系统就是让终端用户把一组工作在一起的计算机当做一个单独的机器来使用。这些机器共享状态,并发操作,并且单个机器出现问题不会影响到整个系统的正常工作。常见的分布式系统实现:DNS(上级域只存放下级子域的相关信息,并不会存储所有域名和与之对应的ip地址)
分布式系统的作用
- 分布式计算机系统的体系结构可用处理机之间的耦合度为主要标志来加以描述。耦合度是系统模块之间互联的紧密程度,它是数据传输率、响应时间、并行处理能力等性能指标的综合反映,主要取决于所选用体系结构的互联拓扑结构和通信链路的类型。
分布式系统的特点
-
分布式系统(distributed system)具有高度的内聚性和透明性。
●内聚性:每一个节点高度自治,有本地的数据库管理系统;
●透明性:每一个数据库分布节点对用户来说是透明的,用户是感觉不到"分布"的,即用户不需要知道关系是否分割、有无副本、数据位于哪个节点、事物在哪个站点上执行等;
分布式系统的分类
(一)按功能分:
- 分布式存储: Ceph,GlusterFS,FastDFS,MogileFS
- 分布式计算:hadoop,Spark
分布式系统的特征
-
(1)分布性。分布式系统由多台计算机组成,它们在地域上是分散的,可以散布在一个单位、一个城市、一个国家,甚至全球范围内。整个系统的功能是分散在各个节点上实现的,因而分布式系统具有数据处理的分布性。
-
(2)自治性。分布式系统中的各个节点都包含自己的处理机和内存,各自具有独立的处理数据的功能。
-
(3)并行性。一个大的任务可以划分为若干个子任务,分别在不同的主机上执行。
-
(4)全局性。分布式系统中必须存在一个单一的、全局的进程通信机制,使得任何一个进程都能与其他进程通信,并且不区分本地通信与远程通信。同时,还应当有全局的保护机制。系统中所有机器上有统一的系统调用集合,它们必须适应分布式的环境。在所有CPU上运行同样的内核,使协调工作更加容易。
分布式系统的优点
- (1)资源共享
- (2)加快计算速度
- (3)可靠性高
- (4)通信方便
集群与分布式系统
集群和分布式
- 集群:同一个业务系统,部署在多台服务器上。集群中,每一台服务器实现的功能没有差别,数据和代码都是一样的。
- 分布式:一个业务被拆成多个子业务,或者本身就是不同的业务,部署在多台服务器上。分布式中,每一台服务器实现的功能是有差别的,数据和代码也是不一样的,分布式每台服务器功能加起来,才是完整的业务。
- 分布式是以缩短单个任务的执行时间来提升效率的,而集群则是通过提高单位时间内执行的任务数来提升效率。
- 对于大型网站,访问用户很多,实现一个群集,在前面部署一个负载均衡服务器,后面几台服务器完成同一业务。如果有用户进行相应业务访问时,负载均衡器根据后端哪台服务器的负载情况,决定由给哪一台去完成响应,并且一台服务器垮了,其它的服务器可以顶上来。分布式的每一个节点,都完成不同的业务,如果一个节点垮了,那这个业务可能就会失败。
集群设计原则
-
可扩展性—集群的横向扩展能力
-
可用性—无故障时间(SLA)
-
性能—访问响应时间
-
容量—单位时间内的最大并发吞吐量(C10K 并发问题)
-
基础设施层面:
● 提升硬件资源性能—从入口防火墙到后端web server均使用更高性能的硬件资源
● 多域名—DNS 轮询A记录解析
● 多入口—将A记录解析到多个公网IP入口
● 多机房—同城+异地容灾
● CDN(Content Delivery Network)—基于GSLB(Global Server Load Balance)实现全局负载均衡,如:DNS -
业务层面:
● 分层:安全层、负载层、静态层、动态层、(缓存层、存储层)持久化与非持久化
● 分割:基于功能分割大业务为小服务
● 分布式:对于特殊场景的业务,使用分布式计算
分布式的设计
- 分布式应用-服务按照功能拆分,使用微服务
- 分布式静态资源–静态资源放在不同的存储集群上
- 分布式数据和存储–使用key-value缓存系统
- 分布式计算–对特殊业务使用分布式计算,比如Hadoop集群