软件架构杂谈(二) --- Cluster (HA)

浅谈软件架构(二)

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的资料更是满天飞。本文不作详细讨论了。

本文结束,敬请关注后续其他博文。

时间: 2024-10-11 11:17:43

软件架构杂谈(二) --- Cluster (HA)的相关文章

软件架构杂谈(一)

浅谈软件架构(一) 这个世界上,被人们创造出来的软件架构大概已经有几百种之多了.当然,它们所处的层次,以及应用范围是不同的.本文讨论的是,工作在协议顶层--即应用层,且是机器间联网工作的软件架构.(由于内容荣杂,本文将分多个期次介绍,请读者关注后续博文) 开篇 行文将讨论的软件架构为以下7类: 1. C/S 2. B/S 3. Cluster (HA) 4. Cloud 5. Distributed 6. APNS-like 7. P2P 一,C/S架构. 这个词汇可谓老生常谈了.自高级语言编程

HDFS HA系列实验之二:HA+JournalNode+zookeeper

1:原理图 A:NN1.NN2(或者更多个NN节点)只有一个是Active状态,通过自带ZKFailoverController组件(zookeeper客户端)和zookeeper集群协同对所有NN节点进行检测和选举来达到此目的. B:Active NN 的EditLog 写入共享的JournalNode集群中,Standby NN通过JournalNode集群获取Editlog,并在本地运行来保持和Active NN 的元数据同步. C:如果不配置zookeeper,可以手工切换Active

HA集群之二:HA Cluster基础理论补充

1.HA Cluster的系统组成 RA:资源代理层 服务脚本 LRM:本地资源管理器层 接收crm的指令,负责每个节点来执行资源管理, CRM:集群资源管理器层 调用mesage layer的功能,负责策略生成:决定资源运行在哪个节点 实现软件:haresources,crm,pacemake,rgmanager message layer (集群事务信息层|基础架构层) 实现心跳信息传递.集群事务消息传递 实现软件:heartbeat,corosync,cman,keepalived 2.H

软件架构(二):同步与异步问题

一.       基本概念 一个大型的程序系统常常是由很多不能功能模块组成的.程序系统运行时不同功能模块要按一定顺序执行,以协同完成一件任务.功能模块协作运行完成一件任务存在同步和异步两种方式.如果在某一时间段,这个程序系统的所有功能模块都在为完成相同的一件任务而服务,某一个功能模块在完成一件任务的子任务后,需要等待其他功能模块完成子任务,这样只有当全部功能模块按顺序完成一件任务后,程序系统才能接收下一个任务,功能模块是串行运行,这称之为同步模式.反之,在某一时间段,这个程序系统的不同功能模块可

软件架构杂谈(四) --- P2P

浅谈软件架构(四) -- P2P ----cnyinlinux 本文将讨论一种特殊的软件架构--P2P网络.这与时下正流行的O2O有些神似,不过二者没有联系,也不是同类物种.O2O指的是互联网虚拟世界(Online)与显示世界(Offline)的协作模式.而P2P指的是同处在互联网世界中的两个节点(对等终端)之间的情仇爱恨.因此也有人称之为对等网络. 和今天热炒的"去中心化"有着不可割舍的关系.还有一个神奇的物种与它有着绝对关联关系--比特币.下面我们来研讨下P2P网络的原理. P2P

软件架构杂谈(三) --- APNS

浅谈软件架构(三) -- APNS ----cnyinlinux 本文将讨论的是常见软件架构中的三角关系--APNS. APNS是Apple Push Notification Service的简称,即苹果推送通知服务.它用在当前很火热的苹果手机系统中.当然,它不是在手机iOS上运行的一个软件,而是牵扯普通APP应用商和苹果官方服务以及iPhone三方的软件架构.故而我把它称为三角关系. 这是一种新的架构,或者说模式,它并非传统的节点-服务器模式.目前微软的WP系统也采用此种工作模式.它的目标是

oracle HA 高可用性详解(之二,深入解析TAF,以及HA框架)

oracle HA 高可用性详解(之一,client.server端服务详解):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle的会话能够自动重新连接,需要说明的是,这个能力是基于OCI的,是OCI的一个功能,JDBC Thin Driver无效,因为这种驱动不是构建在OCI库上的. 虽然这个功能发起于RAC,但TAF并不局限于RAC,单实例.DG环境都可以享受这个好处.Oralce声称其TAF能够保证用户会话自动的转移到另一个实例上.这

oracle HA 高可用性具体解释(之二,深入解析TAF,以及HA框架)

oracle HA 高可用性具体解释(之中的一个,client.server端服务具体解释):http://write.blog.csdn.net/postedit 我们已经看到TAF是的Oracle的会话可以自己主动又一次连接,须要说明的是.这个能力是基于OCI的,是OCI的一个功能,JDBC Thin Driver无效.由于这样的驱动不是构建在OCI库上的. 尽管这个功能发起于RAC.但TAF并不局限于RAC,单实例.DG环境都可以享受这个优点. Oralce声称其TAF可以保证用户会话自己

Linux HA集群

HA(High Availability,高可用)集群的主要目的是提高服务的在线率,也就是缩短平均无故障的时间.实际上就是当一个提供服务的服务节点不在线时,有另一个提供相同服务的节点可以继续提供服务,避免出现单点故障. HA集群相关概念 一.相关名词解释 1.在线率 在线率是衡量HA集群的一个重要指标,就算方式如下: 在线率=平均无故障时间/(平均修复时间 + 平均无故障时间) 所以提高系统的可用性: 1).增加平均无故障时间 2).缩短平均修复时间 (可以通过冗余机制实现) 2.资源 这里的资