share nothing和share disk是两种常见的分布式数据库模型。
share nothing架构下,每个结点都有自己的CPU、内存、存储。跨结点的数据访问通过结点之间的网络通讯来完成。
share disk架构下,每个结点有自己的CPU和内存,但是共享同一个存储。也就是说,存储只有一份,放在单独的分布式文件系统上,由文件系统本身来保证其可用性,一般由高端的专门存储设备来完成。
大多数分布式数据库都是share nothing的。比较典型的share disk数据库有oracle RAC和DB2 PureScale。mysql cluster的结点之间不共享存储(每个结点有自己的存储),所以属于share nothing。
share nothing和share disk各有利弊,无法简单地认为谁优谁劣,也不存在谁才是“真正的”分布式数据库的问题。二者当然都可以实现事务。一般来说,share disk的实现更复杂,价格也更昂贵。
Cluster技术发展多年了,但其实并没有一个非常准确的定义和分类,不同的人有不同的理解。
其实,叫什么无所谓,只要能够对用户有益就可以了 :-)
就个人理解而言,cluster有以下几种,当然前面说过,不同的人有不同的理解,大家可以充分讨论。我的这些分类更偏重于工程而不是技术性。
1 HA集群
实现高可用性,但对单个应用性能没有提高,市场上大部分产品都是属于这类,技术上也较简单。
2 IP负载均衡集群
利用IP技术实现对通用IP应用的支持。这种技术并不是很新,最早是在硬件上面采用的,Linux出现后才有了很多纯软件的模式,这也是open source带来的好处吧
3并行计算集群
包括了一些象PVM,beowulf这样的信息传递机制和API库,也有任务调度产品,当然技术上最难的是并行编译/并行系统等更智能化的产品
4应用负载均衡集群
虽然cluster的最高目的是实现真正的与应用程序无关的动态负载均衡,但由于技术上的限制,现在都只能在特殊的应用中实现,需要修改应用程序,所以并没有通用产品,大多是厂商有自己的并行版本。例如oracle paraller server
以上基本是按照工程或者说产品的角度划分的,和技术上划分应该有一定区别。
下面是一篇很早以前写的东西,当时是为了媒体宣传写的,有一些商业味道在里面,有些地方技术上也不完全正确。现在给大家附上是想交换一下观点。并不是宣传Turbolinux公司的产品(本人是Turbolinux员工),确实是实在懒得改了,虽然这种商业性文章在公共社区里发表犯了大忌。只是供大家参考,关于Turbolinux产品优劣不参与讨论。请大家理解。
一直是不参与linux社区讨论的,这次是因为对cluster接触了比较长的时间,已经有了很大的兴趣,所以注册了来灌水。
随着Internet/Intranet应用的日益广泛,计算机系统的重要性也日益上升。低故障率和高性能向来是人们追求的主要目标,但对于单台服务器来讲,这两个问题是无法解决的。
l 可用性——很多服务器都宣称已经达到了99%的可用性。这个数字意味着什么呢?也就是说每年会有1%的非预计停机时间,让我们来具体算一下。 365(天 / 年)× 24(小时 / 天) × 1% = 876 (小时 / 年)。这每年876小时的停机时间对于要求24×7连续服务的企业来说简直就是灾难。
l 高性能——假设一般的桌面机每秒能够处理几千个请求,而IA服务器每秒能够处理几万个请求。那么对于需要每秒处理几十万个请求的企业来说,如果不采用集群技术,唯一的选择就是购买更加高档的中、小型计算机。如果这样做,虽然系统性能只提高了十倍,但其购买价格和维护费用就将会上升几十倍甚至更多。
集群技术的出现和发展则很好的解决了这两个问题。
一.集群
集群就是由一些互相连接在一起的计算机构成的一个并行或分布式系统,从外部来看,它们仅仅是一个系统,对外提供统一的服务。
集群技术本身有很多种分类,市场上的产品也很多,都没有很标准的定义。一般可以分为以下几种:
1 基于冗余的集群
严格来讲,这种冗余系统并不能叫做真正的集群,因为它只能够提高系统的可用性,却无法提高系统的整体性能。
有以下几种类型。
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
2 基于应用程序切换的集群
特点是当集群中的某个节点故障时,其它节点可以进行应用程序一级的切换,所以所有节点在正常状态下都可以对外提供自己的服务,也被成为静态的负载均衡方式。
性能价格比高,但也无法实现无缝切换,而且对单个应用程序本身无法做到负载均衡。
典型市场产品: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
3 基于并行计算的集群
主要应用于科学计算、大任务量的计算等环境。有并行编译、进程通讯、任务分发等多种实现方法。
典型市场产品:TurboLinux enFuzion,Beowulf,Supercomputer Architectures,Platform
4 基于动态负载均衡的集群
所有节点对外提供相同的服务,这样可以实现对单个应用程序的负载均衡,而且同时提供了高可用性。
性能价格比极高,但目前无法支持数据库。
典型市场产品:TurboCluster Server,Linux Virtual Server,F5 BigIP,Microsoft Windows NT Load Balance Service
二.负载均衡
负载均衡是提高系统性能的一种前沿技术。还是沿用前面的例子,一台IA服务器的处理能力是每秒几万个,显然无法在一秒钟内处理几十万个请求,但如果我们能够有10台这样的服务器组成一个系统,如果有办法将所有的请求平均分配到所有的服务器,那么这个系统就拥有了每秒处理几十万个请求的能力。这就是负载均衡的基本思想。
实际上,目前市场上有多家厂商的负载均衡产品。由于其应用的主要技术的不同,也就有着不同的特点和不同的性能。
1轮询DNS
轮询DNS方案可以说是技术上最简单也最直观的一种方案。当然,这种方案只能够实现负载均衡的功能,却无法实现对高可用性的保证。
它的原理是在DNS服务器中设定对同一个Internet主机名的多个IP地址的映射。这样,在DNS收到查询主机名的请求时,会循环的将所有对应的IP地址逐个返回。这样,就能够将不同的客户端连接定位到不同的IP主机上,也就能够实现比较简单的负载均衡功能。但是,这种方案有两个比较致命的缺点:
l 只能够实现对基于Internet主机名请求的负载均衡,如果是直接基于IP地址的请求则无能为力。
l 在集群内有节点发生故障的情况下,DNS服务器仍会将这个节点的IP地址返回给查询方,也就仍会不断的有客户请求试图与已故障的节电建立连接。这种情况下,即使你手工修改DNS服务器的对应设置,将故障的IP地址删除,由于Internet上所有的DNS服务器都有缓存机制,仍会有成千上万的客户端连接不到集群,除非等到所有的DNS缓存都超时。
2硬件解决方案
有些厂商提供对负载均衡的硬件解决方案,制造出带有NAT(网络地址转换)功能的高档路由器或交换机来实现负载均衡功能。NAT本身的原理就是实现多个私有IP地址对单个公共IP地址的转换。代表产品是Cicso公司和Alteon公司的某些高档硬件交换机系列。这种方案有如下缺点:
l 由于采用了特殊的硬件,使得整个系统中存在非工业标准部件,极大的影响系统的扩充和维护、升级工作。
l 价格极其昂贵,和软件的解决方案根本是数量级上的差别。
l 一般只能实现对节点系统一级的状态检查,无法细化到服务一级的检查。
l 由于采用NAT机制,集群管理节点本身要完成的工作量很大,很容易成为整个系统的瓶颈。
l 此特殊硬件本身就是单一故障点。
l 实现异地节点的集群非常困难。
3协商式处理(并行过滤)
这种方案的原理是客户请求会同时被所有的节点所接收,然后所有节点按照一定的规则协商决定由哪个节点处理这个请求。此种方案中比较显著的特点就是整个集群中没有显著的管理节点,所有决定由全体工作节点共同协商作出。代表产品是Microsoft公司的Microsoft Load Balancing Service这种方案的特点是:
l 由于各节点间要进行的通讯量太大,加重了网络的负担,一般需要增加节点通讯的专用网络,也就加大了安装和维护的难度和费用。
l 由于每个节点都要接收所有的客户请求并进行分析,极大的加大了网络驱动层的负担,也就减低了节点本身的工作效率,同时也时网络驱动层很容易成为节点系统的瓶颈。
l 由于要更改网络驱动层的程序,所以并不是一个通用的方案,只能够实现对特殊平台的支持。
l 在小量节点的情况下协商的效率还可以接受,一旦节点数量增加,通讯和协商将变得异常复杂和低效,整个系统的性能会有非线性的大幅度下降。所以此类方案,一般在理论上也只允许最多十几个的节点。
l 无法实现异地节点的集群。
l 由于集群内没有统一的管理者,所以可能出现混乱的异常现象。
4流量分发
流量分发的原理是所有的用户请求首先到达集群的管理节点,管理节点可以根据所有服务节点的处理能力和现状来决定将这个请求分发给某个服务节点。当某个服务节点由于硬件或软件原因故障时,管理节点能够自动检测到并停止向这个服务节点分发流量。这样,既通过将流量分担而增加了整个系统的性能和处理能力,又可以很好的提高系统的可用性。
通过将管理节点本身做一个子集群可以消除由于管理节点自身的单一性带来的单一故障点。有些传统技术人员认为,因为所有的客户流量都将通过管理节点,所以管理节点很容易成为整个系统的瓶颈。但TurboCluster Server通过先进的直接路由或IP隧道转发机制巧妙的解决了问题。使得所有对客户响应的流量都由服务节点直接返回给客户端,而并不需要再次通过管理节点。众所周知,对于服务提供商而言,进入的流量要远远小于流出的流量,所以管理节点本身将不再是瓶颈。
流量分发的具体实现方法有直接路由、IP隧道和网络地址转换三种方法。TurboCluster Server目前支持效率最高的前两种。由于这种先进的结构和技术,使得TurboCluster Server集群内的服务节点数并没有上限,而且对大量节点的协同工作的效率也能够非常好的保证。
三.市场前景
集群技术已经发展了多年,其中的分支也非常多。目前集群技术正逐渐走向分层结构,以后也肯定会有专门用户前端、后端的集群产品出现。
随着计算机应用地位的逐渐提升,系统安全和重要性的日益增加,集群技术必将会有着极为广阔的应用前景。
1 分布式存储部分是做为mysql的一种存储引擎实现的(NDB),上层SQL没有感知,所以SQL层应该没有支持分布式并行查询处理。OceanBase的基于代价的查询优化器对于大查询会充分发挥分布式数据库的并行处理能力。再如OB分布式执行计划可以下压到存储所在机器。而ndb node实现存储引擎接口没有复杂的查询处理能力。
2 Mysql cluster中主备同步是用两阶段提交实现的,这个有点无语。另外REDO日志异步写入,延时一秒。也就是说宕机会丢一秒的事务,想象一下双十一每秒17万笔交易丢失……这块是它的整体架构导致事务层实现机制的问题。
btw,mysql cluster属于分布式数据库,mysql主从几节点都不是分布式数据库。
数据库结构和空间管理
一个ORACLE数据库是数据的集合,被处理成一个单位。一个ORACLE数据库有一个物理结构和一个逻辑结构。
物理数据库结构(physical database structure)是由构成数据库的 *** 作系统文件所决定。每一个ORACLE数据库是由三种类型的文件组成:数据文件、日志文件和控制文件。数据库的文件为数据库信息提供真正的物理存储。
逻辑数据库结构是用户所涉及的数据库结构。一个ORACLE数据库的逻辑结构由下列因素决定:
l 一个或多个表空间
l 数据库模式对象(即表、视图、索引、聚集、序列、存储过程)
逻辑存储结构如表空间(dataspace)、段(segment)和范围将支配一个数据库的物理空间如何使用。模式对象(schema object)用它们之间的联系组成了一个数据库的关系设计。
1) 物理结构
(1) 数据文件
每一个ORACLE数据库有一个或多个物理的数据文件(data file)。一个数据库的数据文件包含全部数据库数据。逻辑数据库结构(如表、索引)的数据物理地存储在数据库的数据文件中。数据文件有下列特征:
l 一个数据文件仅与一个数据库联系。
l 一旦建立,数据文件不能改变大小
l 一个表空间(数据库存储的逻辑单位)由一个或多个数据文件组成。
数据文件中的数据在需要时可以读取并存储在ORACLE内存储区中。例如:用户要存取数据库一表的某些数据,如果请求信息不在数据库的内存存储区内,则从相应的数据文件中读取并存储在内存。当修改和插入新数据时,不必立刻写入数据文件。为了减少磁盘输出的总数,提高性能,数据存储在内存,然后由 ORACLE后台进程DBWR决定如何将其写入到相应的数据文件。
(2) 日志文件
每一个数据库有两个或多个日志文件(redo log file)的组,每一个日志文件组用于收集数据库日志。日志的主要功能是记录对数据所作的修改,所以对数据库作的全部修改是记录在日志中。在出现故障时,如果不能将修改数据永久地写入数据文件,则可利用日志得到该修改,所以从不会丢失已有 *** 作成果。
日志文件主要是保护数据库以防止故障。为了防止日志文件本身的故障,ORACLE允许镜象日志(mirrored redo log),以致可在不同磁盘上维护两个或多个日志副本。
日志文件中的信息仅在系统故障或介质故障恢复数据库时使用,这些故障阻止将数据库数据写入到数据库的数据文件。然而任何丢失的数据在下一次数据库打开时,ORACLE自动地应用日志文件中的信息来恢复数据库数据文件。
(3) 控制文件
每一ORACLE数据库有一个控制文件(control file),它记录数据库的物理结构,包含下列信息类型:
l 数据库名;
l 数据库数据文件和日志文件的名字和位置;
l 数据库建立日期。
为了安全起见,允许控制文件被镜象。
每一次ORACLE数据库的实例启动时,它的控制文件用于标识数据库和日志文件,当着手数据库 *** 作时它们必须被打开。当数据库的物理组成更改时,ORACLE自动更改该数据库的控制文件。数据恢复时,也要使用控制文件。
2) 逻辑结构
数据库逻辑结构包含表空间、段、范围(extent)、数据块和模式对象。
(1) 表空间
一个数据库划分为一个或多个逻辑单位,该逻辑单位称为表空间(TABLESPACE)。一个表空间可将相关的逻辑结构组合在一起。DBA可利用表空间作下列工作:
l 控制数据库数据的磁盘分配。
l 将确定的空间份额分配给数据库用户。
l 通过使单个表空间在线或离线,控制数据的可用性。
l 执行部分数据库后备或恢复 *** 作。
l 为提高性能,跨越设备分配数据存储。
数据库、表空间和数据文件之间的关系如下图所示:
Database
SYSTEM DATA
Tablespace Tablespace
DTATAFILE1
(2MB) DATAFILE2
(2MB) DATAFILE3
(2MB)
Driver1 Driver2
。每个数据库可逻辑划分为一个或多个表空间
。每一个表空间是由一个或多个数据文件组成,该表空间物理地存储表空间中全部逻辑结构的数据。DBA可以建立新的表空间,可为表空间增加数据文件或可删除数据文件,设置或更改缺省的段存储位置。
每一个ORACLE数据库包含有一个名为SYSTEM的表空间,在数据库建立是自动建立。在该表空间中总包含有整个数据库的数据字典表。最小的数据库可只需要SYSTEM表空间。该表空间必须总是在线。表和存储的PL/SQL程序单元(过程、函数、包和触发器)的全部存储数据是存储在SYSTEM表空间中。如果这些PL/SQL对象是为数据库建的,DBA在SYSTEM表空间中需要规划这些对象所需要的空间。
表空间利用增加数据文件扩大表空间,表空间的大小为组成该表空间的数据文件大小的和。
DBA可以使ORACLE数据库中任何表空间(除SYSTEM表空间外)在线(ONLINE)或离线(OFFLINE)。表空间通常是在线,以致它所包含的数据对数据库用户是可用的。当表空间为离线时,其数据不可使用。在下列情况下,DBA可以使其离线。
。使部分数据不可用,而剩余的部分允许正常存取
。执行离线的表空间后备
。为了修改或维护一应用,使它和它的一组表临时不可用。
包含有正在活动的回滚段的表空间不能被离线,仅当回滚段不正在使用时,该表空间才可离线。
在数据字典中记录表空间的状态,在线还是离线。如果在数据库关闭时一表空间为离线,那么在下次数据库装配和重新打开后,它仍然保持离线。
当出现某些错误时,一个表空间可自动地由在线改变为离线。通过使用多个表空间,将不同类型的数据分开,更方便DBA来管理数据库。
ORACLE 数据库中一表空间是由一个或多个物理数据文件组成,一个数据文件只可与一个表空间想联系。当为一表空间建立一数据文件时,ORACLE建立该文件,分配指定的磁盘空间容量。在数据文件初时建立后,所分配的磁盘不包含任何数据。表空间可以在线或离线。在ORACLE中还允许单独数据文件在线或离线。
(2) 段、范围和数据块
ORACLE通过段、范围和数据块逻辑数据结构可更细地控制磁盘空间的使用。
段
段(SEGMENT)包含表空间中一种指定类型的逻辑存储结构,是由一组范围组成。在ORACLE数据库中有几种类型的段:数据段、牵引段、回滚段和临时段。
数据段:对于每一个非聚集的表有一数据段,表的所有数据存放在该段。每一聚集有一个数据段,聚集中每一个表的数据存储在该段中。
索引段:每一个索引有一索引段,存储索引数据。
回滚段:是由DBA建立,用于临时存储要撤消的信息,这些信息用于生成读一致性数据库信息、在数据库恢复时使用、回滚未提交的事务。
临时段:当一个SQL语句需要临时工作区时,由ORACLE建立。当语句执行完毕,临时段的范围退回给系统。
ORACLE对所有段的空间分配,以范围为单位。
范围
一个范围(EXTENT)是数据库存储空间分配的一个逻辑单位,它由连续数据块所组成。每一个段是由一个或多个范围组成。当一段中间所有空间已完全使用时,ORACLE为该段分配一个新的范围。
为了维护的目的,在数据库的每一段含有段标题块(segment header block)说明段的特征以及该段中的范围目录。
数据块
数据块(data block)是ORACLE管理数据文件中存储空间的单位,为数据库使用的I/O的最小单位,其大小可不同于 *** 作系统的标准I/O块大小。
数据块的格式:
公用的变长标题
表目录
行目录
未用空间
行数据
(3) 模式和模式对象
一个模式(schema)为模式对象(scehma object)的一个集合,每一个数据库用户对应一个模式。模式对象为直接引用数据库数据的逻辑结构,模式对象包含如表、视图、索引、聚集、序列、同义词、数据库链、过程和包等结构。模式对象是逻辑数据存储结构,每一种模式对象在磁盘上没有一个相应文件存储其信息。一个模式对象逻辑地存储在数据库的一个表空间中,每一个对象的数据物理地包含在表空间的一个或多个数据文件中。
表
表(table)为数据库中数据存储的基本单位,其数据按行、列存储。每个表具有一表名和列的集合。每一列有一个列名、数据类型、宽度或精度、比例。一行是对应单个记录的列信息的集合。
视图
一个视图(view)是由一个或多个表(或其他视图)中的数据的一种定制的表示,是用一个查询定义,所以可认为是一个存储的查询(stored query)或是一个虚表(virtual table)。视图可在使用表的许多地方使用。
由于视图是由表导出的,视图和表存在许多类似,视图象表最多可定义254列。视图可以被查询,而在修改、插入或删除时具有一定的限制,在视图上执行的全部 *** 作真正地影响视图的基本表中的数据,受到基本表的完整性约束和触发器的限制。
视图与表不同,一个视图不分配任何存储空间,视图不真正地包含数据。由查询定义的视图相应于视图引用表中的数据。视图只在数据字典中存储其定义。
引入视图有下列好处:
。通过限制对表的行预定义集合的存取,为表提供附加的安全性
。隐藏数据复杂性。
。为用户简化命令
。为基本表的数据提供另一种观点。
。可将应用隔离基本表定义的修改
。用于不用视图无法表示的查询。
。可用于保存复杂查询。
聚集
聚集(cluster)是存储表数据的可选择的方法。一个聚集是一组表,将具有同一公共列值的行存储在一起,并且它们经常一起使用。这些公共列构成聚集码。例如:EMP表各DEPT表共享DEPTNO列,所以EMP表和DEPT表可聚集在一起,聚集码的列为DEPTNO列,该聚集将每个部门的全部职工行各该部门的行物理地存储在同一数据块中。
索引
索引(index)是与表和聚集相关的一种选择结构。索引是为提高数据检索的性能而建立,利用它可快速地确定指定的信息。ORACLE索引为表数据提供快速存取路径。索引适用于一范围的行查询或指定行的查询。
索引可建立在一表的一列或多列上,一旦建立,由ORACLE自动维护和使用,对用户是完全透明的。索引是逻辑地和物理地独立于数据,它们的建立或删除对表没有影响,应用可继续处理。索引数据的检索性能几乎保持常数,而当一表上存在许多索引时,修改、删除和插入 *** 作的性能会下降。
索引有唯一索引各非唯一索引。唯一索引保证表中没有两行在定义索引的列上具有重复值。ORACLE在唯一码上自动地定义唯一索引实施UNIQUE完整性约束。
组合索引是在表的某个列上所建立的一索引。组全索引可加快SELECT语句的检索速度,在其WHERE子句中可引用组合索引的全部或主要部分 。所以在定义中给出列的次序,将经常存取的或选择最多的列放在首位。
在建立索引时,将在表空间自动地建立一索引段,索引段空间分配和保留空间的使用受下列方式控制:
索引段范围的分配常驻该索引段的存储参数控制。
其数据块中未用空间可受该段的PCTFREE参数设置所控制。
序列生成器
序列生成器(sequence generator)产生序列号。在多用户环境下该序列生成器特别有用,可生成各返回序列号而不需要磁盘I/O或事务封锁。
序列号为ORACLE整数,最多可有38个数字。一个序列定义指出一般信息:序列的名字、上升或下降、序列号之间间距和其它信息。对所有序列的确的定义以行存储在SYSTEM表空间中的数据字典表中,所以所有序列定义总是可用。由引用序列号的SQL语句使用序列号,可生成一个新的序列号或使用当前序列号。一旦在用户会话中的SQL语句生成一序列号,该序列号仅为该会话可用。序列号生成是独立于表,所以同一序列生成器可用于一个和多个表。所生成序列号可用于生成唯一的主码。
cluster是群集的意思,cluster环境就是集群环境,比如基本的双机热备,是用来实现负载均衡和高可用性的技术,具体你可以看下百度百科,我就不做搬运工了
>
对于高斯数据库而言,一个列存表只能同时使用Partial、Cluster和Key三种方式进行创建。这是因为Partial、Cluster和Key都是高斯数据库中非常重要的概念,它们各自具有不同的作用和特点,可以在不同场景下发挥重要作用。
Partial是高斯数据库中对于数据进行分区的一种方式,通过将数据划分为多个子集,可以提高查询效率,降低系统负载压力。
Cluster是指将表按照某个列进行聚类,将相似的记录放在一起存储,可以提高查询效率,减少IO *** 作次数。
Key则是指表中的关键字,可以用来唯一标识每条记录,也可以用来建立索引,提高查询效率。
由于Partial、Cluster和Key各自具有不同的作用和特点,在实际应用中需要根据需求进行选择,不能同时使用多种方式进行创建。因此,在高斯数据库中,一个列存表只能创建Partial+Cluster+Key或者任意两种方式的组合,而不能同时使用三种方式进行创建。
集群概念
集群(Cluster)是由两台或多台节点机(服务器)构成的一种松散耦合的计算节点集合,为用户提供网络服务或应用程序(包括数据库、Web服务和文件服务等)的单一客户视图,同时提供接近容错机的故障恢复能力。集群系统一般通过两台或多台节点服务器系统通过相应的硬件及软件互连,每个群集节点都是运行其自己进程的独立服务器。这些进程可以彼此通信,对网络客户机来说就像是形成了一个单一系统,协同起来向用户提供应用程序、系统资源和数据。除了作为单一系统提供服务,集群系统还具有恢复服务器级故障的能力。集群系统还可通过在集群中继续增加服务器的方式,从内部增加服务器的处理能力,并通过系统级的冗余提供固有的可靠性和可用性。集群计算机按功能和结构可以分成以下几类:
1、 高可用性集群 High-availability (HA) clusters
一般是指当集群中有某个节点失效的情况下,其上的任务会自动转移到其他正常的节点上。还指可以将集群中的某节点进行离线维护再上线,该过程并不影响整个集群的运行。计思想就是要最大限度地减少服务中断时间。这类集群中比较著名的有Turbolinux TurboHA、Heartbeat、Kimberlite等。
2、负载均衡集群 Load balancing clusters
提供和节点个数成正比的负载能力,这种集群很适合提供大访问量的Web服务。负载均衡集群往往也具有一定的高可用性特点。Turbolinux Cluster Server、Linux Virtual Server都属于负载均衡集群。主流架构Nginx+Keepalived(利于动静分离)、LVS+Keepalived。
3、高性能计算集群 High-performance (HPC) clusters
按照计算关联程度的不同,又可以分为两种。一种是任务片方式,要把计算任务分成任务片,再把任务片分配给各节点,在各节点上分别计算后再把结果汇总,生成最终计算结果。另一种是并行计算方式,节点之间在计算过程中大量地交换数据,可以进行具有强耦合关系的计算。这两种超级计算集群分别适用于不同类型的数据处理工作。有了超级计算集群软件,企业利用若干台PC机就可以完成通常只有超级计算机才能完成的计算任务。这类软件有TurbolinuxEnFusion、SCore等。
高可用性集群与负载均衡集群的工作原理不同,适用于不同类型的服务。通常,负载均衡集群适用于提供静态数据的服务,如>
以上就是关于为什么说 MySQL Cluster 是 shared-nothing 架构的全部的内容,包括:为什么说 MySQL Cluster 是 shared-nothing 架构的、什么是cluster技术、Mysql Cluster 与 OceanBase 有哪些区别哪个更优秀等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)