服务器集群:
1.集群概念
集群就是一组相互独立的计算机,通过高速的网络组成一个计算机系统。服务器集群就是指将很多服务器集中起来一起进行同一种服务,在客户端看来就像是只有一个服务器。
2.集群的特点和优势
1)高性能
比如上千台服务器同时计算运行,远大于单机的运行效率。
2)性价比优势
利用通用廉价的服务器代替小型机,例如:阿里轰轰烈烈的去IOE(去掉IBM的小型机、Oracle数据库、EMC存储设备,代之以自己在开源软件基础上开发的系统)
3)可伸缩性
马上即将开始的阿里双11,除了提前预估服务器外,在极端的情况下,可以实现动态的服务器扩容。
3.集群的分类
一般分为如下三类:
- 负载均衡集群(Load balancing clusters)简称LBC
- 高可用性集群(High-availability clusters)简称HAC
- 高性能计算集群(High-perfomance clusters)简称HPC
大家平时接触最多的就是负载均衡集群,常用的有 Nginx 把请求分发给后端的不同web服务器,还有就是数据库集群,负载均衡就是,为了保证服务器的高可用,高并发。
负载均衡
在服务器集群中,需要有一台服务器充当调度者的角色,用户的所有请求都会首先由它接收,调度者再根据每台服务器的负载情况将请求分配给某一台后端服务器去处理。那么在这个过程中,调度者如何合理分配任务,保证所有后端服务器都将性能充分发挥,从而保持服务器集群的整体性能最优,这就是负载均衡。
负载均衡更加详细的内容可以查看:
阿里P8架构师谈:负载均衡的原理、分类、实现架构,以及使用场景
分布式
分布式是指将不同的业务分布在不同的地方,而集群指的是将几台服务器集中在一起,实现同一业务。分布式中的每一个节点,都可以做集群,而集群并不一定就是分布式的。
分布式一致性
分布式系统中,解决了负载均衡的问题后,另外一个问题就是数据的一致性了。
在分布式集群中,很难保障数据的一致性。在以往的单节点服务中,通常使用锁来实现,当发生并发冲突时 通过对锁的持有获得对象的操作权,从而保证数据在同一时刻只允许被一个请求操作。但是在集群中,若同样采用锁的机制,那么需要一台节点用来管理分配锁,当其他节点进行请求前,首先去获取锁从而获得执行权。但是这样会产生单节点问题,即若管理锁的节点down掉,那么整个集群将无法工作。同时,由于锁的机制会使整个集群变成串行化单节点的形式,失去了集群的意义。
所以,在集群中需要一种高容错的分布式一致性算法,因此提出了Paxos算法。
Paxos是一种基于消息传递且具有高度容错性的一致性算法,在分布式当中应用的十分广泛。
更多分布式数据一致性内容可以查看:阿里P8架构师谈:分布式数据库数据一致性的原理、与技术实现方案