本发明涉及计算机应用技术领域,特别涉及一种分布式集群系统。
背景技术:
现有技术中,常见的分布式集群存储系统在客户端下发数据后,会在后段存储中对数据进行合并等操作。而如果出现机器掉电、集群故障等情况,会造成数据丢失的情况发生。因此,如何避免数据丢失的情况发生,提高数据安全机制,提升用户体验,增加产品竞争力,是现今急需解决的问题。
技术实现要素:
本发明的目的是提供一种分布式集群系统,以通过在后端存储中增加的非易失性存储设备和非易失性存储设备管理模块,避免数据丢失的情况发生,提高数据安全机制,提升用户体验,增加产品竞争力。
为解决上述技术问题,本发明提供一种分布式集群系统,包括客户端和后端存储,所述后端存储,还包括:非易失性存储设备和非易失性存储设备管理模块;
所述非易失性存储设备用于存储所述客户端发送的直写数据;
所述非易失性存储设备管理模块用于对所述非易失性存储设备中的数据进行预设操作和响应所述客户端的读请求;其中,所述预设操作包括数据回放、数据回滚和数据合并后落盘。
可选的,该系统还包括:
共享内存管理模块,用于响应所述客户端发送的内存消息,对共享内存模块中的内存块进行统一的管理。
可选的,所述共享内存管理模块,包括:
管理单元,用于根据预设配置在所述共享内存模块中创建对应的共享内存块;其中,所述根据预设配置包括所述共享内存块的大小和个数。
可选的,该系统还包括:
本地硬盘,用于与所述共享内存模块进行数据交互,存放所述客户端的预读文件。
可选的,所述本地硬盘具体为本地ssd硬盘。
可选的,所述非易失性存储设备和非易失性存储设备管理模块具体为:nvram和nvramstore模块。
可选的,所述nvramstore模块具体位于所述后端存储的ecbackend和filestore之间。
本发明所提供的一种分布式集群系统,包括客户端和后端存储,所述后端存储,还包括:非易失性存储设备和非易失性存储设备管理模块;所述非易失性存储设备用于存储所述客户端发送的直写数据;所述非易失性存储设备管理模块用于对所述非易失性存储设备中的数据进行预设操作和响应所述客户端的读请求;其中,所述预设操作包括数据回放、数据回滚和数据合并后落盘;
可见,本发明通过非易失性存储设备存储客户端发送的直写数据,即使机器掉电也不会丢失数据,避免了数据丢失的情况发生,提高了数据安全机制,通过非易失性存储设备管理模块根据客户端的请求,对非易失性存储设备进行管理,使非易失性存储设备可以更好的融入后端存储,提升了用户体验,增加了产品竞争力。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据提供的附图获得其他的附图。
图1为本发明实施例所提供的一种分布式集群系统的结构图;
图2为本发明实施例所提供的另一种分布式集群系统的结构图;
图3为本发明实施例所提供的另一种分布式集群系统的拓扑图;
图4为本发明实施例所提供的另一种分布式集群系统的后端存储的拓扑图;
图5为本发明实施例所提供的另一种分布式集群系统的客户端直写的拓扑图;
图6为本发明实施例所提供的另一种分布式集群系统的客户端读操作的时序图;
图7为本发明实施例所提供的另一种分布式集群系统的本地硬盘读缓存加速的流程示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
请参考图1,图1为本发明实施例所提供的一种分布式集群系统的结构图。该系统可以包括:包括客户端1和后端存储2,后端存储2还包括:非易失性存储设备21和非易失性存储设备管理模块22;
非易失性存储设备21用于存储客户端1发送的直写数据;
非易失性存储设备管理模块22用于对非易失性存储设备21中的数据进行预设操作和响应客户端1的读请求;其中,预设操作包括数据回放、数据回滚和数据合并后落盘。
可以理解的是,非易失性存储设备21可以为非易失性随机访问存储器(non-volatilerandomaccessmemory,nvram),nvram是断电后仍能保持数据的一种随机存取存储器(random-accessmemory,ram)。nvram优势是容量大,占用pcie槽,而不占用dimm槽,内部集成移动数据的处理器,会代替cpu把数据移动到nvram里,不占用cpu处理周期;也可以为其他断电后仍能保持数据的存储设备。若非易失性存储设备21为nvram,则对应的非易失性存储设备管理模块22可以为nvramstore模块。对于非易失性存储设备21的具体装置的选择以及对应的非易失性存储设备管理模块22的具体设置,本实施例不做任何限制。
需要说明的是,本实施例中客户端1的数据写入方式可以为直写方式,把数据直接推送给后端存储2,不会在本地缓存中停留,使用非易失性存储设备21存储下发的数据。通过非易失性存储设备管理模块22管理非易失性存储设备21,可以把objectcacher(分布式存储中osd端的cache层,用于缓存前端发来的消息)中的部分功能移到非易失性存储设备管理模块22中,以实现数据读写、合并等功能,非易失性存储设备管理模块22基本取代了journal的功能,后续即使journal模块依然存在,也不需要再保存客户端1发来的原始数据。非易失性存储设备管理模块22可以为全局缓存保护机制的重点。
具体的,非易失性存储设备管理模块22可以位于在ecbackend(纠删后端处理模块)和filestore(对象存储实现模式,封装前端发来的io操作,将每个object视为一个文件)之间,接受客户端1直接写入的数据,通过后端存储2中的模块一层层传递后写入非易失性存储设备21,非易失性存储设备管理模块22可以申请一定空间的内存,对非易失性存储设备21中的数据进行回放(重启时)、回滚、数据合并后落盘等操作,同时也可以响应客户端1的读请求。对于非易失性存储设备21和非易失性存储设备管理模块22在后端存储2中的具体位置,以及非易失性存储设备管理模块22对非易失性存储设备21具体管理过程,本实施例不做任何限制。
优选的,客户端2的前端还可以包括用于响应客户端2发送的内存消息,对共享内存模块中的内存块进行统一的管理的共享内存管理模块,以减少重复读取数据所带来的内存浪费,提高资源利用率。
优选的,客户端2的前端还可以包括用于与共享内存模块进行数据交互,存放客户端2的预读文件的本地硬盘。通过增加的本地硬盘作为客户端读的二级缓存,提高小文件重读效率,提升产品性能。本地硬盘可以具体为固态硬盘(ssd),也可以为其他硬盘,本实施例对此不做任何限制。
本实施例中,本发明通过非易失性存储设备21存储客户端1发送的直写数据,即使机器掉电也不会丢失数据,避免了数据丢失的情况发生,提高了数据安全机制,通过非易失性存储设备管理模块22根据客户端1的请求,对非易失性存储设备21进行管理,使非易失性存储设备21可以更好的融入后端存储2,提升了用户体验,增加了产品竞争力。
请参考图2、图3、图4、图5、图6和图7,图2为本发明实施例所提供的另一种分布式集群系统的结构图;图3为本发明实施例所提供的另一种分布式集群系统的拓扑图;图4为本发明实施例所提供的另一种分布式集群系统的后端存储的拓扑图;图5为本发明实施例所提供的另一种分布式集群系统的客户端直写的拓扑图;图6为本发明实施例所提供的另一种分布式集群系统的客户端读操作的时序图;图7为本发明实施例所提供的另一种分布式集群系统的本地硬盘读缓存加速的流程示意图。该系统可以包括:客户端1、后端存储2、共享内存管理模块3、共享内存模块4和本地ssd硬盘5。
其中,所述后端存储2包括nvram211和nvramstore模块221。共享内存管理模块3用于响应客户端1发送的内存消息,对共享内存模块4中的内存块进行统一的管理。本地ssd硬盘5用于与共享内存模块4进行数据交互,存放客户端1的预读文件。
可以理解的是,共享内存管理模块3,可以作为一个单独的进程启动,围绕共享内存模块4中的共享内存提供内存管理、缓存配额、ssd缓存加速、信息统计,故障处理,内存数据老化及ssd数据激活等功能。对于共享内存管理模块3对共享内存模块4的具体管理过程和与客户端交互过程,可以由设计人员根据实用场景和用户需求自行设置,本实施例对此不做任何限制。
具体的,共享内存管理模块3在启动时可以通过管理单元根据预先配置的共享内存大小和个数,在共享内存模块4中创建一系列的共享内存块。客户端1的缓存管理模块可以在启动时将共享内存块加载到自己的进程空间,当需要从共享内存块中读数据时,根据从共享内存管理模块3获取的共享内存块的编号和偏移量,直接访问共享内存模块4中指定的内存块。客户端1启动之后会与之前已经启动的共享内存模块4建立连接并将申请好的共享内存块映射到自己的进程空间中。实际读取的时候,会先向共享内存模块4发出请求,获取相对的共享内存块的内存地址,然后再向后端集群发出读取请求,待数据返回之后将其放入指定的共享内存块,再做后续处理。
需要说明的是,本地ssd硬盘5可以作为小文件缓存,与共享内存模块4进行数据交换,存放预读文件的数据。对于本地ssd硬盘5的具体设置位置以及具体的接入方式,本实施例不做任何限制。
具体的,当收到客户端1的读数据请求时,首先判断共享内存模块4中的共享内存块中是否有数据,有数据时直接返回共享内存块的编号和偏移量。否则再判断共享内存和配额是否充足;共享内存和配额均充足时,申请内存块,然后判断本地ssd硬盘5中是否有数据;本地ssd硬盘5中有数据时,将数据拷贝到申请的内存块并向客户端1返回;ssd中没有数据时,也将申请的内存块返回给客户端1,用于客户端1发起向后端存储2实际读取数据的操作。
可以理解的是,本实施例所提供的分布式集群系统可以如图3所示,图中每个samba进程和nfs进程均可以为一个客户端1,共享内存管理和共享内存区域可以分别为共享内存管理模块3和共享内存模块4,二级ssd可以为本地ssd硬盘5,客户端1向后端存储2直写数据,经过后端存储2中的流程返回确认字符(ack)。对于后端存储2的具体结构可以如图4所示,mem和nvramstore可以分别为nvram211和nvramstore模块221。客户端1向后端存储2直写数据的具体过程可以如图5所示,客户端1先向各自的libicfsfs.so库写入数据,再通过libicfsfs.so库直接发送至后端存储2,经过后端存储2的处理流程返回确认字符(ack)。
需要说明的是,对于客户端1进行读操作时与共享内存管理模块3的具体访问过程,可以如图5所示,cliert和gbcm可以分别为客户端1和共享内存管理模块3。对于共享内存管理模块3的ssd读缓存加速功能的具体流程可以如图7所示。只要可以通过,共享内存管理模块3将多个客户端1的读缓存统一管理,减少重复读取数据所带来的内存浪费,提高资源利用率,对于共享内存管理模块3的具体管理过程,本实施例不做任何限制。
本实施例中,本发明实施例通过共享内存管理模块3,将多个客户端1的读缓存进行统一管理,减少了重复读取数据所带来的内存浪费,提高了资源利用率;通过将本地ssd硬盘5作为客户端读的二级缓存,提高小文件重读效率,提升了产品性能,提升了用户体验。
说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。
专业人员还可以进一步意识到,结合本文中所公开的实施例描述的各示例的模块,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
以上对本发明所提供的分布式集群系统进行了详细介绍。本文中应用了具体个例对本发明的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本发明的方法及其核心思想。应当指出,对于本技术领域的普通技术人员来说,在不脱离本发明原理的前提下,还可以对本发明进行若干改进和修饰,这些改进和修饰也落入本发明权利要求的保护范围内。