基于内存数据库的存储集群的关键技术研究*
2012-06-27张良王纯李炜
张良, 王纯, 李炜
(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)
基于内存数据库的存储集群的关键技术研究*
张良1,2, 王纯1,2, 李炜1,2
(1 北京邮电大学网络与交换技术国家重点实验室,北京 100876;2 东信北邮信息技术有限公司,北京 100191)
基于磁盘数据库的存储集群由于内外存交换开销过大,无法支撑数据的实时存储与处理,因此使用基于内存数据库的存储集群成为目前很多业务数据存储的设计方案。本文主要研究了基于内存数据库的存储集群中的数据库代理、单点故障恢复等关键技术。
内存数据库;存储集群;数据库代理;单点故障恢复
随着Internet 技术的快速发展,接入网速度不断提高,主干带宽不断扩容,用户规模不断扩大,传统影响网络速度的因素不断减少,目前影响网络速度的主要瓶颈集中在访问距离和服务器承载负荷能力方面。同时,随着网站访问量日渐增大、内容不断丰富和用户期望值不断提高,用户应用需要提供更快的访问速度和承受更大的负荷量,所有这些都依赖于网站服务器的基础设施。目前,最常用的解决方案是采用像MySQL的磁盘数据存储集群来处理海量数据的存储和访问,但这种解决方案存在的最大问题是访问的效率不高,也成为服务器端的处理性能上的最大瓶颈,而目前常用的优化方案是采用基于内存数据库的存储集群架构。
基于内存数据库的存储集群既在数据存储量上能满足现有互联网业务的需求,同时,在访问性能上相较于磁盘数据库有了很大提高。因此,采用基于内存数据库的存储集群架构基本满足现有的海量数据、高并发系统的需要,也在互联网业务中得到了广泛的应用。
1 存储集群概述
存储集群是指由若干个“通用存储设备”组成的用于存储的集群,组成集群存储的每个存储系统的性能和容量均可通过“集群”的方式得以叠加和扩展。传统的存储系统由于受到诸如控制器性能,总线性能,磁盘驱动器的数量,所连接服务器的数量,内存大小,NAS(Network Attached Storage)头的性能等物理组成的限制,以及诸如支持文件系统的容量,元数据和数据处理通路的耦合,快照或复制的数量等功能上的局限,造成了存储系统瓶颈的出现。一旦遇到存储系统的瓶颈,就会有两种选择:一是采用硬件更加强大的单个存储系统;二是采用若干个普通性能的存储系统来组成“存储的集群”。“集群”作为一项已被广泛使用的体系结构,如果采用到存储上组成“集群存储”,就可提供按比例增加的存储资源的性能、容量、可靠性及可用性,突破了单机设备的种种限制。
目前业内常用的存储集群基于的是诸如MySQL这样的磁盘数据库,它的整体设计架构相对简单,如图1所示。
图1 基于磁盘数据库的存储集群架构
对于应用程序来说,整个存储集群架构是透明的,应用程序在查询数据和更新数据时,只需向数据库代理发送请求,由数据库代理向各个数据片执行查询和更新操作。当然,各个分区片的分片规则和分片标识等都是由数据库代理决定。对于以MySQL作为数据存储的数据库分片,其代理最常用的就是Amoeba(变形虫),Amoeba是一款开源软件,是MySQL的分布式数据库的前端代理,主要在应用层访问MySQL时充当SQL路由,能实现负载均衡、高可用性、SQL过滤、读写分离、可路由相关请求到目标数据库、可并发请求多台数据库并合并结果等功能。
这种框架虽然能够解决大数据量存储问题,但是并发访问的性能并不高。因此,可以对此框架做修改,使用内存数据库来替代磁盘数据库。当然,对于复杂的业务逻辑数据,使用key-value内存数据库不能满足需求,在这种框架下,可以使用关系型的内存数据库。但是,因为内存数据库的数据的易失性,在发生单点故障时需要做数据的恢复,因此内存数据库需要持久化和备份功能,具体的架构如图2所示。
图2 基于内存数据库的存储集群架构
此框架是基于图1框架的基础上,添加了内存数据库层,从而解决了数据访问的性能问题。同时,对内存数据库定时的持久化,能确保在内存数据库故障时,成功恢复内存数据库中的数据。同时,内存数据库作为全量数据缓存与磁盘数据库之间必须同步,保持两者之间的数据一致性。
基于内存数据库的集群存储的架构,是现有具有大量业务数据存储和访问的系统的比较理想的解决方案。本文主要研究此架构中的关键技术包括分布式数据库代理和单点故障恢复。
2 分布式数据库代理
在基于内存数据库的存储集群中,数据库代理通常分为两类,一类是内存数据库自带的,这种内存数据库本身就具有集群功能,例如Mongodb,它的分片集群就是很好的存储集群架构,只需要做相应的配置即可;另一类就如MySQL集群一样,使用的是独立的分布式数据库代理。不管使用哪类数据库代理,都必须具有前端路由、数据分片、负载均衡等功能。前端路由功能是指当应用程序向存储集群发起数据更新或者查询操作时,数据库代理会接收请求,并向相应的分片节点中发送相应的操作;而数据分片是在应用程序向存储集群插入数据时,数据库代理通过散列或者其它策略,指定到某个分片节点上存储数据;负载均衡是指数据库代理要做到各个分片节点被访问的次数以及占据的数据量达到一个平衡状态。分布式数据库代理的内部模型如图3所示。
分布式数据库代理主要分并发访问控制、数据分片和路由等3个模块,当应用程序向存储集群发送请求,并发访问控制模块接收请求,并对请求排序,按照时间点的顺序处理请求,并向其它模块发送处理命令。数据分片模块,在对存储的数据分片后,并在索引系统中记录。路由模块接到数据查询或者更新命令时,查询索引系统,查找到要查询和更新的节点编号,进而查询和更新数据。
图3 分布式数据库代理模型
3 单点故障恢复
内存数据库虽然在访问性能上相比磁盘数据库有很大提升,但由于主存中信息的易失性, 在系统出现故障时, 内存数据库中的数据将丢失, 为此, 内存数据库必须提供高效、可靠的恢复机制以使在发生系统故障的时候能将数据库恢复, 通常内存数据库采用检查点和日志的方法来实现系统恢复。检查点和日志的方法一般都是内存数据库自带的,内存数据库的持久化的数据文件和日志文件与内存数据库服务处在同一台服务器上,因此,在发生较大的毁灭性故障时,数据是无法恢复的。因此本文在原有的基础上,添加磁盘数据库层,用于内存数据库的另一个拷贝,并与内存数据库服务节点分离,处于单独的节点。同时,考虑单点故障时,数据访问服务会中断,因此对内存数据库采用主从机制,在主节点出现故障时,能切换到从节点上,使数据访问得以继续。添加从节点和磁盘数据库层的设计框架如图4所示。
MP是内存数据库的主节点,MS是从节点,H是磁盘数据库节点。当数据库代理发送数据更新和插入操作时,由主节点负责,而数据的查询由从节点执行,这样读写分离可以提高访问性能。同时,在MP节点出现故障,数据库代理可以把对主节点的操作平滑转移到从节点。另外主从节点上都会有数据的全持久化和日志增量备份,当节点上内存数据库服务出现故障,可以从节点的数据文件或者日志中恢复。但如果是整个节点被破坏,那么就需要从磁盘数据库节点上来恢复数据。
图4 单点故障恢复功能模型
此方法确保了在发生单点故障时,数据能够快速的恢复,并且服务不被中断。
4 结束语
本文主要研究了基于内存数据库的存储集群的分布式数据库代理和单点故障恢复等关键技术的实现原理,从而说明了基于内存数据库的存储集群架构在技术上的可行性,阐明了基于内存数据库的存储集群能够解决海量高并发系统的高性能数据存储和访问问题,其核心优势在于:
(1)高性能:是通过内存数据库提供高性能关系数据库存取服务;
(2)持久化:通过两级数据库及异步写日志或者磁盘文件完成持久化;
(3) 高可用性:通过主备节点实现MDB的高可用性;二级磁盘数据库以及持久化日志文件和磁盘文件可以实现数据的快速恢复。
[1] 周游弋,董道国,金城. 高并发集群监控系统中内存数据库的设计与应用[J]. 计算机应用与软件,2011,28(6):128-130.
[2] 肖迎元,刘云生,邓华锋,刘小峰. 适合分布式实时内存数据库的全局一致性模糊备份策略[J]. 计算机科学,2006,33(8):151-154.
[3] 章宏灿,薛巍,舒继武. 一种可扩展分布式RAID存储集群系统[J]. 计算机研究与发展,2008,45(4):741-746.
[4] 林春. 分布式内存数据库的恢复[J]. 航空计算技术, 2003,33(2):90-92.
[5] 王文林,廖建新,朱晓民. 基于VoiceXML的语音平台缓存一致性控制算法[J] .电子学报,2007,4(4):1-3.
[6] 许贵平,蔡博克. 支持实时内存数据库不间断服务的恢复技术[J]. 计算机工程,2008.3,34(6):70-71.
[7] 姚恒,薛质. 基于增量日志的数据复制[J]. 信息安全与通信保密,2007.6.
Key technology research of storage cluster based on memory database
ZHANG Liang1,2, WANG Chun1,2, LI Wei1,2
(1 State Key Laboratory of Networking and Switching Technology, Beijing University of Posts and Telecommunications, Beijing 100876, China; 2 EBUPT Information Technology Co., Ltd., Beijing 100191, China)
Storage cluster which based on disk resident database are unable to store and process data in real time due to considerable overheads caused by I/O swapping operations. Therefore storage cluster which based on memory database are a better design proposal. This paper mainly studies the key technologies of the storage cluster which based on memory database including database proxy, the single node recovery.
memory database; storage cluster; database proxy; single node recovery
TN915
A
1008-5599(2012)10-0081-04
2012-09-16
国家自然科学基金(No. 61072057,61101119,61121001,60902051);长江学者和创新团队发展计划资助(No. IRT1049);国家科技重大专项(No. 2011ZX03002-001-01,移动互联网总体架构研究)。