`
weitao1026
  • 浏览: 1052978 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

簇(cluster)

 
阅读更多
簇(cluster),我们知道磁盘是由一个一个扇区组成的,若干个扇区合为一个簇,文件存取是以簇为单位的,哪怕这个文件只有1个字节。每个簇在文件分配表中都有对应的表项,簇号即为表项号,每个表项占1.5个字节(磁盘空间在10MB以下)或2个字节(磁盘空间在10MB以上)。

文件占用磁盘空间,基本单位不是字节而是簇。一般情况下,软盘每簇是1个扇区,硬盘每簇的扇区数与硬盘的总容量大小有关,可能是4、8、16、32、64……同一个文件的数据并不一定完整地存放在磁盘的一个连续的区域内,而往往会分成若干段,像一条链子一样存放。这种存储方式称为文件的链式存储。由于硬盘上保存着段与段之间的连接信息(即FAT),操作系统在读取文件时,总是能够准确地找到各段的位置并正确读出。为了实现文件的链式存储,硬盘上必须准确地记录哪些簇已经被文件占用,还必须为每个已经占用的簇指明存储后继内容的下一个簇的簇号。对一个文件的最后一簇,则要指明本簇无后继簇。这些都是由FAT表来保存的,表中有很多表项,每项记录一个簇的信息。由于FAT对于文件管理的重要性,所以为了安全起见,FAT有一个备份,即在原FAT的后面再建一个同样的FAT。初形成的FAT中所有项都标明为“未占用”,但如果磁盘有局部损坏,那么格式化程序会检测出损坏的簇,在相应的项中标为“坏簇”,以后存文件时就不会再使用这个簇了。FAT的项数与硬盘上的总簇数相当,每一项占用的字节数也要与总簇数相适应,因为其中需要存放簇号

一个计算机集群是指一组连接起来的电脑,它们共同工作对外界来说就像一个电脑一样。集群一般由局域网连接,但也有例外。集群一般用于单个电脑无法完成的高性能计算,拥有较高的性价比。

baidu和google的后台服务器就是一个cluster

Cluster技术发展多年了,但其实并没有一个非常准确的定义和分类,不同的人有不同的理解。

其实,叫什么无所谓,只要能够对用户有益就可以了. :-)

就个人理解而言,cluster有以下几种,当然前面说过,不同的人有不同的理解,大家可以充分讨论。我的这些分类更偏重于工程而不是技术性。

  
HA集群

实现高可用性,但对单个应用性能没有提高,市场上大部分产品都是属于这类,技术上也较简单。

  


IP负载均衡集群

利用IP技术实现对通用IP应用的支持。这种技术并不是很新,最早是在硬件上面采用的,Linux出现后才有了很多纯软件的模式,这也是open source带来的好处吧



并行计算集群

包括了一些象PVM,beowulf这样的信息传递机制和API库,也有任务调度产品,当然技术上最难的是并行编译/并行系统等更智能化的产品



应用负载均衡集群

虽然cluster的最高目的是实现真正的与应用程序无关的动态负载均衡,但由于技术上的限制,现在都只能在特殊的应用中实现,需要修改应用程序,所以并没有通用产品,大多是厂商有自己的并行版本。例如oracle paraller server.

以上基本是按照工程或者说产品的角度划分的,和技术上划分应该有一定区别。


集群就是由一些互相连接在一起的计算机构成的一个并行或分布式系统,从外部来看,它们仅仅是一个系统,对外提供统一的服务。

集群技术本身有很多种分类,市场上的产品也很多,都没有很标准的定义。一般可以分为以下几种:

  


基于冗余的集群

严格来讲,这种冗余系统并不能叫做真正的集群,因为它只能够提高系统的可用性,却无法提高系统的整体性能。

有以下几种类型。

A. 容错机

特点是在一台机器内部对其所有的硬件部件都进行冗余(包括硬盘、控制卡、总线、电源等等)。

能够基本做到与软件系统无关,而且可实现无缝切换,但价格极其昂贵。

典型市场产品:Compaq NonStop(Tandem),Micron(NetFrame),Straus

B. 基于系统镜像的双机系统

特点是利用双机,将系统的数据和运行状态(包括内存中的数据)进行镜像,从而实现热备份的目的。

能够做到无缝切换,但因为采用软件控制,占用系统资源较大,而且由于两台机器需要完全一样的配置,所以性能价格比太低。

典型市场产品:Novell SFT III,Marathon Endurance 4000 for NT

C. 基于系统切换的双机系统

特点是利用双机,将系统的数据(仅指硬盘数据)进行镜像,在主机失效的情况下从机将进行系统一级的切换。

性能价格比适中,但无法实现无缝切换。

典型市场产品:Legato(Vinca) StandbyServer for NetWare,Savoir(WesternMicro)SavWareHA(Sentinel),Compaq StandbyServer

  


基于应用程序切换的集群

特点是当集群中的某个节点故障时,其它节点可以进行应用程序一级的切换,所以所有节点在正常状态下都可以对外提供自己的服务,也被成为静态的负载均衡方式。

性能价格比高,但也无法实现无缝切换,而且对单个应用程序本身无法做到负载均衡。

典型市场产品:Legato(Vinca) Co-StandbyServer for NT,Novell HA Server,Microsoft Cluster Server,DEC Cluster for NT,Legato Octopus,Legato FullTime,NeoHigh Rose HA,SUN Clusters,Veritas Cluster Server (FirstWatch),CA SurvivIT,1776

  


基于并行计算的集群

主要应用于科学计算、大任务量的计算等环境。有并行编译、进程通讯、任务分发等多种实现方法。

典型市场产品:TurboLinux enFuzion,Beowulf,Supercomputer Architectures,Platform

  


基于动态负载均衡的集群

所有节点对外提供相同的服务,这样可以实现对单个应用程序的负载均衡,而且同时提供了高可用性。

性能价格比极高,但目前无法支持数据库。

典型市场产品:TurboCluster Server,Linux Virtual Server,F5 BigIP,Microsoft Windows NT Load Balance Service

  


负载均衡

负载均衡是提高系统性能的一种前沿技术。还是沿用前面的例子,一台IA服务器的处理能力是每秒几万个,显然无法在一秒钟内处理几十万个请求,但如果我们能够有10台这样的服务器组成一个系统,如果有办法将所有的请求平均分配到所有的服务器,那么这个系统就拥有了每秒处理几十万个请求的能力。这就是负载均衡的基本思想。

实际上,目前市场上有多家厂商的负载均衡产品。由于其应用的主要技术的不同,也就有着不同的特点和不同的性能。

  


轮询DNS

轮询DNS方案可以说是技术上最简单也最直观的一种方案。当然,这种方案只能够实现负载均衡的功能,却无法实现对高可用性的保证。

它的原理是在DNS服务器中设定对同一个Internet主机名的多个IP地址的映射。这样,在DNS收到查询主机名的请求时,会循环的将所有对应的IP地址逐个返回。这样,就能够将不同的客户端连接定位到不同的IP主机上,也就能够实现比较简单的负载均衡功能。但是,这种方案有两个比较致命的缺点:

l 只能够实现对基于Internet主机名请求的负载均衡,如果是直接基于IP地址的请求则无能为力。

l 在集群内有节点发生故障的情况下,DNS服务器仍会将这个节点的IP地址返回给查询方,也就仍会不断的有客户请求试图与已故障的节点建立连接。这种情况下,即使你手工修改DNS服务器的对应设置,将故障的IP地址删除,由于Internet上所有的DNS服务器都有缓存机制,仍会有成千上万的客户端连接不到集群,除非等到所有的DNS缓存都超时。

  


硬件解决方案

有些厂商提供对负载均衡的硬件解决方案,制造出带有NAT(网络地址转换)功能的高档路由器或交换机来实现负载均衡功能。NAT本身的原理就是实现多个私有IP地址对单个公共IP地址的转换。代表产品是Cicso公司和Alteon公司的某些高档硬件交换机系列。这种方案有如下缺点:

l 由于采用了特殊的硬件,使得整个系统中存在非工业标准部件,极大的影响系统的扩充和维护、升级工作。

l 价格极其昂贵,和软件的解决方案根本是数量级上的差别。

l 一般只能实现对节点系统一级的状态检查,无法细化到服务一级的检查。

l 由于采用NAT机制,集群管理节点本身要完成的工作量很大,很容易成为整个系统的瓶颈。

l 此特殊硬件本身就是单一故障点。

l 实现异地节点的集群非常困难。

  


协商式处理(并行过滤)

这种方案的原理是客户请求会同时被所有的节点所接收,然后所有节点按照一定的规则协商决定由哪个节点处理这个请求。此种方案中比较显著的特点就是整个集群中没有显著的管理节点,所有决定由全体工作节点共同协商作出。代表产品是Microsoft公司的Microsoft Load Balancing Service这种方案的特点是:

l 由于各节点间要进行的通讯量太大,加重了网络的负担,一般需要增加节点通讯的专用网络,也就加大了安装和维护的难度和费用。

l 由于每个节点都要接收所有的客户请求并进行分析,极大的加大了网络驱动层的负担,也就减低了节点本身的工作效率,同时也时网络驱动层很容易成为节点系统的瓶颈。

l 由于要更改网络驱动层的程序,所以并不是一个通用的方案,只能够实现对特殊平台的支持。

l 在小量节点的情况下协商的效率还可以接受,一旦节点数量增加,通讯和协商将变得异常复杂和低效,整个系统的性能会有非线性的大幅度下降。所以此类方案,一般在理论上也只允许最多十几个的节点。

l 无法实现异地节点的集群。

l 由于集群内没有统一的管理者,所以可能出现混乱的异常现象。

  


流量分发

流量分发的原理是所有的用户请求首先到达集群的管理节点,管理节点可以根据所有服务节点的处理能力和现状来决定将这个请求分发给某个服务节点。当某个服务节点由于硬件或软件原因故障时,管理节点能够自动检测到并停止向这个服务节点分发流量。这样,既通过将流量分担而增加了整个系统的性能和处理能力,又可以很好的提高系统的可用性。

通过将管理节点本身做一个子集群可以消除由于管理节点自身的单一性带来的单一故障点。有些传统技术人员认为,因为所有的客户流量都将通过管理节点,所以管理节点很容易成为整个系统的瓶颈。但TurboCluster Server通过先进的直接路由或IP隧道转发机制巧妙的解决了问题。使得所有对客户响应的流量都由服务节点直接返回给客户端,而并不需要再次通过管理节点。众所周知,对于服务提供商而言,进入的流量要远远小于流出的流量,所以管理节点本身将不再是瓶颈。

流量分发的具体实现方法有直接路由、IP隧道和网络地址转换三种方法。TurboCluster Server目前支持效率最高的前两种。由于这种先进的结构和技术,使得TurboCluster Server集群内的服务节点数并没有上限,而且对大量节点的协同工作的效率也能够非常好的保证。

  


市场前景

集群技术已经发展了多年,其中的分支也非常多。目前集群技术正逐渐走向分层结构,以后也肯定会有专门用户前端、后端的集群产品出现。

随着计算机应用地位的逐渐提升,系统安全和重要性的日益增加,集群技术必将会有着极为广阔的应用前景。
分享到:
评论

相关推荐

    Oracle中聚簇表Cluster Table使用图文详解

    大家通常oracle中的cluster的理解是不准确的,经常和sql server中的cluster index混淆。Cluster是存储一组table的一种方法,这些table共享同一数据块中的某些相同column,并把不同table在这一共享column上值相同的...

    基于层次聚类的多维数据分析

    // 初始化,每个数据点为一个类簇 for (DataPoint dp : dataPoints) { Cluster c = new Cluster(); c.setClusterName(dp.getDataPointName()); c.getDataPoints().add(dp); clusters.add(c); } while (clusters....

    关于cluster table(簇表)BSEG

    ### 关于Cluster Table (簇表) BSEG 的详细介绍 #### Cluster Table 概念与特性 在SAP系统中,Cluster Table(簇表)是一种特殊的数据组织形式,它主要用于存储那些频繁进行更新操作的小型记录。簇表的主要特点是...

    ZIGBEE CLUSTER LIBRARY SPECIFICATION

    ZigBee簇库是ZigBee应用框架的一个关键部分,主要作用是规定了ZigBee设备间通信的簇(Cluster)数据结构和命令的集合。簇是针对特定功能的一组属性和命令的集合,用于定义设备的行为。ZigBee簇库的英文缩写为ZCL...

    K-means算法

    例如,对于由A1、A2、A3组成的簇Cluster1,其新的中心点K1的坐标是 (2,10)。 Step4:用新的中心点重新计算各点到中心点的距离,并重新聚类。这个过程可能会改变某些点的分类,直到所有的中心点不再变化,迭代结束。...

    ZigBee Cluster Library Specification

    该规范详细规定了ZigBee设备如何通过不同的簇(Cluster)进行通信,并为开发者提供了统一的操作接口,简化了开发流程。ZCL规范不仅包括了簇的定义,还包含了用于数据交换的服务和数据类型。 #### 二、ZigBee Cluster...

    matlab开发-clusterData

    在MATLAB中,`clusterData`函数是一种用于执行聚类分析的重要工具,它主要用于将数据分组到不同的类别中,而这些类别(或称为“簇”)是基于数据的相似性构建的。在这个场景中,"matlab开发-clusterData"项目可能是...

    35272043cluster_传感器_分簇_分簇算法_一个简单的无线传感器分簇算法_Leach_

    "35272043cluster_传感器_分簇_分簇算法_一个简单的无线传感器分簇算法_Leach_"这个主题涉及的核心知识点是无线传感器网络的分簇算法,特别是LEACH(Low-Energy Adaptive Clustering Hierarchy)算法,以及与之比较...

    ClusterView

    "ClusterView"是一款实用工具,主要用于查看和分析磁盘上的簇分配情况。在Windows操作系统中,文件系统如FAT或NTFS将硬盘空间划分为最小存储单元——簇,每个文件占用一个或多个连续的簇。这款工具可以帮助用户深入...

    聚类分析-文本自动聚类技术

    **聚类(簇Cluster)**:指的是一组数据对象的集合,在同一个簇中的对象具有较高的相似度,而不同簇之间的对象则差异较大。 **聚类分析**:是指按照一定的规律或标准对数据对象进行分类的过程。在这个过程中,我们并...

    Cluster_analysis:分析纳米团簇性质的工具

    在"Cluster_analysis-main"这个文件夹中,可能包含用于执行聚类分析的Python代码、纳米团簇的数据集、结果可视化文件等。这些文件可以帮助我们了解如何利用Python和特定的聚类算法来研究纳米团簇的性质,通过分析...

    07-5123-06-zigbee-cluster-library-specification (20).pdf

    根据标题和描述,我们可以推断该文件是一份关于ZigBee簇库规范(ZigBee Cluster Library Specification)的文档。ZigBee簇库是一个标准化的软件组件集合,允许在ZigBee设备之间进行高效、标准化的数据传输。这种数据...

    zigbee-cluster-library.zip

    2. **ZCL框架**:ZCL由多个簇(Cluster)组成,每个簇代表特定的功能或服务,如照明控制、温控或安全系统。簇分为服务器(Server)和客户端(Client)角色,服务器提供服务,客户端请求服务。 3. **簇的分类**:簇...

    ZigBee3.0 cluster-library

    ZigBee 3.0 Cluster Library是ZigBee协议栈的核心部分,包含了所有Cluster(簇)的定义。 Cluster是ZigBee网络中用来描述设备的功能和数据格式的结构。这些Cluster定义了设备能够进行的操作以及设备上能够存储的...

    Cluster2_cluster_源码

    集群在VANET中扮演着关键角色,它可以将网络分割成多个小的子网络,每个子网络由一个称为簇头(Cluster Head)的节点领导。这种结构有助于减轻网络负载,提高通信效率,增强数据安全性,并支持大规模网络的管理。 1...

    LEACH分簇算法实现和能量控制算法实现_grandmotherizi_leach协议算法matlab_leach能量_分簇_分

    在LEACH算法中,网络中的所有节点被随机分为多个簇,每个簇由一个簇头(Cluster Head,CH)节点领导。簇头的主要职责是收集簇内其他普通节点的数据,并将聚合后的信息向基站(Base Station,BS)转发。由于簇头的...

    ZigBee簇库规范

    《ZigBee簇库规范》是ZigBee无线传感网络的核心组成部分,它被称为ZigBee Cluster Library (ZCL)。ZigBee是一种基于IEEE 802.15.4标准的低功耗、短距离、自组织的无线通信技术,广泛应用于物联网(IoT)设备,如智能...

    AP-cluster

    在IT领域,特别是数据分析和机器学习中,"AP-Cluster" 指的可能是Affinity Propagation(亲和传播)聚类算法。这是一种非参数的、基于实例的聚类方法,由Scott D. Fowlkes和Jure Leskovec在2004年提出。与传统的K-...

    clusterData.zip

    在数据科学领域,聚类是一种无监督学习方法,旨在根据数据的内在相似性将数据点分组到不同的簇中。"clusterData.zip"是一个压缩包,其中包含了多种聚类数据集,包括但不限于典型的数据集和人脸识别数据集,这些都是...

    cluster 算法

    聚类(Cluster Analysis)是数据挖掘中的一个重要领域,它是一种无监督学习方法,旨在发现数据集中的自然群体或类别,而无需预先知道具体的分类信息。聚类算法通过对数据进行分组,使得同一组内的数据点彼此相似,而...

Global site tag (gtag.js) - Google Analytics