`

聊聊数据库集群技术的两三事~

阅读更多
摘要: 如今“大数据”这个词已经变得非常流行,虽然这个概念如何落地不得而知。但可以确定的是,随着物联网、移动应用的兴起,数据量相比过去会有几何级的提升,因此数据库所需要解决的问题不再仅仅是记录程序正确的处理结 ...
 
 
简介
当今世界是一个信息化的世界,我们的生活中无论是生活、工作、学习都离不开信息系统的支撑。而信息系统的背后用于保存和处理最终结果的地方就是数据库。因此数据库系统就变得尤为重要,这意味着如果数据库面临问题,则意味着整个应用系统也会面临挑战,从而带来严重的损失和后果。
 
如今“大数据”这个词已经变得非常流行,虽然这个概念如何落地不得而知。但可以确定的是,随着物联网、移动应用的兴起,数据量相比过去会有几何级的提升,因此数据库所需要解决的问题不再仅仅是记录程序正确的处理结果,还需要解决如下挑战:
 
当数据库性能遇到问题时,是否能够横向扩展,通过添加服务器的方式达到更高的吞吐量,从而充分利用现有的硬件实现更好的投资回报率。
 
是否拥有实时同步的副本,当数据库面临灾难时,可以短时间内通过故障转移的方式保证数据库的可用性。此外,当数据丢失或损坏时,能否通过所谓的实时副本(热备)实现数据的零损失。
 
数据库的横向扩展是否对应用程序透明,如果数据库的横向扩展需要应用程序端进行大量修改,则所带来的后果不仅仅是高昂的开发成本,同时也会带来很多潜在和非潜在的风险。
 
面对上述挑战一个显而易见的办法是将多个服务器组成一组集群,这样一来就可以充分利用每一台服务器的资源并将客户端负载分发到不同服务器上,随着应用程序负载的增加,只需要将新的服务器添加到集群即可。
 
本篇文章将对集群的概念、形式以及目前主流的数据库集群技术进行探讨。
 
数据库集群的形式
数据库的集群和扩展不像应用程序扩展那样容易,因为从数据库端来说,一旦涉及到了集群,往往会涉及到数据库层面的同步,因此从是否存在数据冗余这个角度来讲,我们可以从大面上把数据库集群分为以下两种形式:
 
Share-Disk架构
Share-Disk架构是通过多个服务器节点共享一个存储来实现数据库集群,两台机器最简单的Share-Disk架构如图1所示。
1
图1.简单的Share-Disk架构
 
在此基础之上,Share-Disk架构又分为单活和双活,双活即为集群中的每一个节点都可以同时对外提供服务,而单活为集群中只有一个节点可对外提供服务,集群中的其他服务器作为冗余在“活”的节点出现故障时接替该服务器成为对外提供服务的节点。该类架构最典型的产品就是SQL Server Failover Cluster(SQL Server故障转移集群)、NEC的EXPRESSCLUSTER、ROSE的ROSE HA。这种方式的弊端也是显而易见的,如下:
 
硬件资源的严重浪费,同一时间集群中只有一台服务器活着,其他服务器只能作为冗余服务器。
 
集群无法提升性能,因为只有一台服务器可用。
 
存储方面存在单点故障,除非在存储层级保证高可用,通常需要昂贵的SAN存储。
 
因此该类方案仅仅可以做到服务器层面的高可用,无法带来性能的提升,也无法解决存储单点故障的问题。因此如果不搭配其他高可用或负载均衡的技术,存在的意义并不是很大。
 
另一类技术是Share-Disk中的双活的技术,与单活技术不同的是,双活的技术虽然也是共享磁盘,但集群中的所有节点都可以对外提供服务,典型的产品就是Oracle的RAC。RAC的技术性非常的高,因此需要水平比较高的人来运维系统。RAC设计的初衷并不是为了性能,而是为了高可用和可扩展性,如果应用程序不是针对RAC架构设计和开发的,则将应用程序迁移到RAC上由于block contention (block busy waits)可能会导致性能的急剧下降,并且节点越多性能下降越明显。
 
Share-Nothing架构
Share-Nothing架构又分为两种,首先是分布式架构。将数据库中的数据按照某一标准分布到多台机器中,查询或插入时按照条件查询或插入对应的分区。
 
另一种是每一个节点完全独立,节点之间通过网络连接,通常是通过光钎等专用网络。如图2所示。
2
图2.Share-Nothing冗余架构
 
在Share-Nothing架构中,每一个节点都拥有自己的内存和存储,都保留数据的完整副本。通常来说,又可以分为两种,可以负载均衡和不可以负载均衡。
 
首先谈谈不可负载均衡的集群,在不可负载均衡的技术中,集群中的节点会被分为主节点和辅助节点,主节点向外提供服务,辅助节点作为热备(二阶段事务提交)或暖备(不需要保证事务同步),同时有可能使得辅助节点提供只读的服务。使用这个架构的技术包括:SQL Server AlwaysOn,SQL Server Mirror,Oracle Data Guard这种架构带来的好处包括:
 
辅助节点数据和主节点保持同步或准同步,当搭配第三方仲裁后,可以实现自动的故障转移,从而实现了高可用。
 
辅助节点由于和主节点完全独立且数据同步或准同步,因此主节点出现数据损坏后,可以从辅助节点恢复数据(自动或手动)。
 
由于Share-Nothing架构使用了本地存储(或SAN),相较于Share-Disk架构在慢速网络时有非常大的性能优势。
 
当然,弊端也显而易见,因为辅助节点无法对外提供服务或只能提供只读服务,因此该类集群的弊端包括:
 
扩展能力非常有限。
 
对性能没有提升,因为涉及到各节点的数据同步,甚至带来性能的下降。
 
辅助节点如果可读,虽然提升性能,但需要修改前端应用程序,对应用程序不透明。
 
另一类Share-Nothing架构中,是允许负载均衡的。所谓负载均衡就是就是将对数据库的负载分布到集群中的多个节点上,在集群中的每一个节点都可以对外提供服务,从而达到更高的吞吐量,更好的资源利用率和更低的响应时间。前端通过代理进行调度。使用该类架构的技术包括:MySQL上的Amoeba(架构如图3),MySQL上的HA Proxy(如图4所示),格瑞趋势(www.grqsh.com)在SQL Server上的Moebius集群(如图5所示)。
 3
图3.Amoeba
5
图4.HA Proxy
4
图5.Moebius集群
 
可负载均衡的Share-Nothing架构的好处是每台服务器都能提供服务,能充分利用现有资源,达到更高的吞吐量。其中Amoeba中可能会涉及到数据分片,数据分片的好处是对于海量数据的处理更加高效,但同时也引入了其他问题,比如说需要应用程序端对应数据分片进行调整、跨分片节点查询的处理问题、每一个数据分片节点是否能够承受各自业务负载的高峰问题等。该类架构需要实施的人员水平比较高,且需要应用层面做调整,因此更适合于互联网企业。
 
另一类不涉及到数据分片的架构,比如一类可以使用组合方案,比如说Oracle RAC+F5。另一类是使用单个厂商提供的方案,比如说SQL Server上的Moebius。这类方案集群中的每个节点都会对外提供服务,因此有如下好处:
 
由于每一个节点都可以对外提供服务,因此可以提升性能。
 
扩展性得到提升,可以通过向集群添加节点直接进行Scale-Out扩充。
 
由于前端应用通过代理连接到集群,而集群中的每一个节点都保持完整的数据集,因此不存在分片不到位反而造成性能下降的问题,因此对应用程序端完全透明。
 
但相比较于MySQL的数据分片,该类方案的弊端也显而易见,因为每一个节点都需要完整的数据集,因此需要占用更多的存储空间。
 
小结
本文从一个比较高的层面谈到了数据库集群技术。从数据库应用层面的Share-Disk集群直到集群的最高形式-能够提供负载均衡的集群,并列举了一些主流的商用产品。集群的存在意义是为了保证高可用、数据安全、扩展性以及负载均衡。如果现在的集群产品不能包含这几个特性,而业务场景也需要,也可以将和一些现有的技术结合来实现,但毕竟不是每一个人都是数据库专家,即使给你一堆工具和材料你也做不出来iPhone,因此在系统设计之初就对数据库方面的方案有所考虑会免去很多麻烦。

 

from  http://it.dataguru.cn/article-8954-1.html 

分享到:
评论

相关推荐

    主流数据库集群技术深入探讨

    【数据库集群技术详解】 数据库集群技术是通过将多个数据库服务器联合起来,形成一个高可用、高性能的系统,以解决数据库的处理速度、可用性、安全性及扩展性等问题。集群技术通常分为两类:基于数据库引擎的集群...

    数据库集群技术分析和比较

    数据库集群技术是应对现代信息化需求的关键解决方案,尤其是在处理大规模电子事务时。数据库集群通过将多个数据库服务器连接起来,旨在解决速度、可用性、安全性及可扩展性这四大挑战。随着IT应用的深化和网络的快速...

    数据库集群技术

    数据库集群技术是现代IT基础设施中不可或缺的一部分,尤其在大规模数据处理和高并发访问场景下,其重要性愈发凸显。数据库集群技术旨在通过整合多台服务器的资源,形成一个统一的、高可用、高性能的数据库系统,以...

    集群分类数据库集群数据库集群

    【集群技术概述】 集群技术是一种将多个独立的计算机节点通过高速网络互连,形成一个统一、协调工作的系统,以提供高可用性和高性能的服务。这种技术有效地解决了单台服务器的可用性和性能瓶颈问题,使得企业能够以...

    数据库集群技术.pdf

    【数据库集群技术】是应对企业信息系统发展中的挑战而产生的关键技术,它通过整合多个数据库资源,以提高处理速度、确保数据可用性、增强数据安全性及实现数据集的可扩展性。数据库集群是解决企业数据处理需求日益...

    数据库集群系统负载均衡技术的应用

    使用了三层体系架构模式,基于中间件技术而设计的,其中间件为一个构建在普通硬件上的数据库集群中间件,把网络内的各种异构数据库进行连接,组建起数据库集群系统,从而降低了集群的复杂性,提供给应用程序单纯的数据库...

    数据库集群搭建代码

    总结,数据库集群的搭建涉及到多方面的技术,包括但不限于数据复制、分区、负载均衡和故障恢复。通过代码实现这些功能,可以创建一个高效、稳定且可靠的数据库集群环境。而Quartz.NET则在其中起到调度后台任务,保证...

    教案数据库集群技术.pdf

    【数据库集群技术详解】 数据库集群技术是现代企业信息系统中不可或缺的一部分,它旨在解决传统单一数据库面临的挑战,包括处理速度、可用性、数据安全性和可扩展性。随着企业规模的扩大和数据量的爆炸式增长,...

    Oracle RAC数据库集群PPT教案.pptx

    Oracle RAC 数据库集群技术详解 Oracle RAC 数据库集群技术是指通过多个服务器节点的集群来提供高可用性、负载均衡和可扩展性的数据库解决方案。该技术可以满足企业对高性能、可靠性和可扩展性的需求。 为什么要...

    基于MongoDB的高可用性分布式数据库集群技术研究.pdf

    本文讨论的是MongoDB在实现高可用性分布式数据库集群中的技术应用,强调了分片技术和复制集的故障自动恢复功能,这两项技术对于构建和维护企业级、高可用性的数据库集群至关重要。 分片技术是MongoDB中用于处理高...

    数据库集群技术有哪些?.doc

    数据库集群技术是现代大型企业级应用中不可或缺的一部分,它通过将多台服务器组织成一个集群,以实现更高的性能、负载均衡以及系统可用性。数据库集群技术主要包括以下几类: 1. 高性能集群(HPC):这类集群主要...

    DBTWin数据库集群安装使用手册

    DBTWin数据库集群安装使用手册 DBTWin数据库集群安装使用手册是关于DBTWin V4.2数据库集群软件的安装和使用手册。该手册详细介绍了DBTWin集群软件的安装、配置、测试和注意事项等内容。下面是该手册中的一些重要...

    SQL_Server_数据库集群

    数据库集群是一种将多台数据库服务器组织起来共同提供服务的技术。理想中的数据库集群能够实现以下几点: 1. **扩展性能**:当需要更高的数据库处理速度时,可以通过简单地增加数据库服务器的数量来实现,这种方式...

    oracle数据库集群安装详细步骤

    Oracle数据库集群安装是一个复杂而精细的过程,涉及到多个层面的技术知识,包括数据库系统、操作系统、集群软件和存储解决方案等。在本篇文章中,我们将深入探讨Oracle数据库集群安装的详细步骤,特别是涉及ARC...

    Oracle数据库集群技术的策略研究.pdf

    Oracle数据库集群技术是一种高效、高可用性的解决方案,它允许多个数据库服务器协同工作,共同管理和处理数据,以提高系统的稳定性和性能。在当前信息化社会中,随着数据量的急剧增长,企业对信息系统的需求不仅局限...

Global site tag (gtag.js) - Google Analytics