浅谈软件架构(二)
cnyinlinux
之前发布过的博文,已经对C/S和B/S作了讨论,本文将讨论的是集群—Cluster。
1. C/S
2. B/S
3. Cluster (HA)
4. Cloud
5. Distributed
6. APNS-like
7. P2P
集群的技术是近年来计算机应用大规模普及,以及性能要求逐渐提高的形势下提出来的。简而言之,集群就是一批独立计算机联合运作处理某一高要求任务的技术。其建立在网络互连的基础上,核心是节点间任务分配——调度算法。
集群有几个显著特点:
A.提高性能
B.降低成本
C.高扩展性
D.高可靠性
集群与分布式的功能还是有区别的,关于分布式架构在别文讨论。
从应用场景和特性分为以下几种,本文将分别介绍各自特点。
1)双机热备(高可用HA)
2)科学集群
3)负载均衡
一,双机热备,也被叫做高可用集群(HA)。这种方式也称为集群。它指的是具备同样功能且数据共享的多台机器之间构成相互备份的物理结构,每一时刻对外提供业务的机器只有1台,其他多台构成它的备份,若业务机出现故障,其他备份机立马接管任务,对外而言丝毫感受不到业务主机的故障。这样维修人员可以立马修复故障机,修好后成为新的备份机。这样就构成了相互备份的小集团,极大提高了实时业务的可靠性。
这种结构要求各机器的业务数据是共享的,保证每一台备份机接管任务后能够延续之前的业务,保证数据的一致性。通常备份集团的机器数量为2台,所以称之为双机热备。其中的“热”字指的是在线切换,也就是说业务不停机,做到无缝切替。其中如何做到故障后立即切换呢?那就是心跳侦测技术。在热备的机器之间构建的有心跳线,实时侦测对方的状态,也称为死活监视。备份机一旦发现对方心跳停止,立即将自己切到激活模式提供服务。当然也存在主动切换,比如要升级软件时,无需重启,先将备份机更新,然后切换状态,然后在更新曾经的业务机,这样就实现了业务不间断升级。其中对外提供业务的机器我们成为active,另一台处于备份的成为stand-by。从下图中可以看到HA的工作原理。
心跳线可以有网线构成,类似于TCP连接健康监测。也可以由硬件层面单独设计接口,这样效率会更高,一般高可用集群服务器都采用专用心跳线的方式。
负载死活监视和角色切换模块一般也集成在系统层面,也就是由厂商直接提供套件。
其原理就是个网络程序,实时维护与对方的心跳感应。需要切换时直接通知应用程序实现角色切换(应用程序设计时也兼顾了两种角色)。
二,科学集群。它是一种并行计算拓扑,为提高复杂算法的执行速率,将计算任务拆分为多个任务,分布在不同机器上运算,然后整合各部分运算结构,构成整体运算任务。
如下图,数台图形工作站仪器完成动画效果渲染任务,构成了一个运算集群网络。
三,负载均衡集群。随着互联网逐渐统治生活的各个领域,用户量大幅攀升,对互联网服务的速度和质量提出了新的要求。比如搜索引擎,电商等门户网站,每天都有大量用户访问。在这个快节奏生活的时代,人们的耐性往往不高,如果用户在访问电商网站时迟迟刷新不了请求页面,用户将失去购买欲望,对于商家而言,大量用户流失必然是不可接受的结果。这就对电商平台提出了很高的要求,使其能够快速响应用户请求。负载均衡技术就是在这样的前提下产生的。
负载均衡集群,如今已经被广泛应用到各门户网站。从其名字可知,它就是一种将负载均匀分发到不同业务主机的一种技术。拿搜索引擎来说,比如某搜索引擎“易搜”,当你在想易搜主页请求某搜索任务时,只需要访问它的主页,www.esou.com,输入你的搜索请求就是了。全球不计其数的用户请求都发给了esou的主机,它真的能够承担起那么多的搜索任务吗?答案是不能。
它又如何能做到响应那么多用户的请求呢?后台用到了集群技术。我们对照着下图来做说明。大家在访问esou主机的时候,请求数据最先到达的是均衡器,它也是一台计算机。收到请求后它将请求发送给其中一台服务器,该服务器完成后将结果送回。用户与服务器之间多了一个主持任务的服务器,每次任务由它分配。这样就加强了处理任务的灵活性。当想要增加主机时,只需将主机接入服务网络,向均衡器注册就完成了。现在问题来了,均衡器又以什么标准决定每次任务给谁呢?这就是负载均衡的调度算法该做的事情。它时刻关注着每台服务器的负载,每次有任务时在负载较轻的服务器队列中选中一台。这样就保证了多台服务器都处在负载均衡的状态提供服务,最大限度地保证服务最优进行。
本文目的是向读者展示集群技术的基础概念。关于深层次的集群实现和控制,请读者查阅相关资料。比如红帽的集群套件,IBM的HA技术等等,都支持高可用集群。其官网也都提供大量资料。http服务器的新秀——nginx,也提供http访问的负载均衡。关于nginx的资料更是满天飞。本文不作详细讨论了。
本文结束,敬请关注后续其他博文。