您所在的位置: 成果库 数据存储方法和装置

数据存储方法和装置

发布时间: 2022-03-07

基本信息

合作方式: 技术服务
成果类型: 发明专利
行业领域:
新一代信息技术产业,信息传输、软件和信息技术服务业
成果介绍

数据存储方法和装置

技术领域

本发明涉及数据处理技术领域,具体而言,涉及一种数据存储方法和装置。

背景技术

对于现有的大数据并发状况的数据存储,经常出现存储系统响应慢、请求超时或服务阻塞等问题进而影响用户体验,此外,大数据高并发情况下的实时入库可能导致数据库连接数耗尽出现异常,使得待存储的数据对象无法入库而被丢弃。

发明内容

有鉴于此,本发明实施例提供一种数据存储方法和装置,能有效解决上述问题。

本发明较佳实施例提供一种数据存储方法,应用于分布式数据服务器集群中的第一数据服务器,所述分布式数据服务器集群还包括与所述第一数据服务器通信连接的多个第二数据服务器,所述方法包括:

接收各应用服务器发送的数据存储请求并提取所述数据存储请求中包含的待存储数据的主键信息,将所述主键信息广播给各所述第二数据服务器;

接收各所述第二数据服务器根据所述主键信息判断自身是否保存有与所述主键信息对应的待存储数据的判断结果;

所述第一数据服务器基于在第一预设时长内接收到的各所述第二数据服务器发送的判断结果,选取满足存储需求的第二数据服务器作为目标数据服务器;

当所述目标数据服务器中保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据对所述目标数据服务器中以保存的数据对象进行更新;

当所述目标数据服务器中未保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述第二数据服务器。

进一步地,所述第一数据服务器中保存有第一数据索引表,在执行根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述第二数据服务器的步骤之前,所述方法还包括:

接收与所述数据存储请求对应的待存储数据;

对所述存储数据进行索引号设置,并将所述待存储数据、所述主键信息和所述索引号之间的对应关系存放至所述第一数据索引表中,以及将所述待存储数据缓存至缓存队列中。

进一步地,根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述目标数据服务器的步骤包括:

根据所述主键信息查询对应的索引号,根据所述索引号从缓存队列中调用对应的待存储数据存储至所述目标数据服务器。

进一步地,在执行接收各应用服务器发送的数据存储请求并提取所述数据存储请求中包含的待存储数据的主键信息的步骤之前,所述方法还包括:

创建用于执行与应用服务器之间数据传输动作的第一数据轮询线程,以及创建用于执行与多个第二数据服务器之间数据传输动作的多个第二数据轮询线程,所述第二数据轮询线程与所述第二数据服务器一一对应。

进一步地,所述方法包括:

针对每个第二数据轮询线程,当所述第二数据轮询线程在第二预设时长内未接收到数据存储指令,则调用资源对象锁对进行线程锁定。

进一步地,所述第一数据服务器中设置有用于记录已经保存的各数据对象与各所述第二数据服务器的存储位置关系的第二索引表;所述方法还包括:

接收应用服务器发送的数据访问请求,

根据所述数据访问请求中包含的数据主键信息从所述第二索引表获取对应的待读取数据的索引号以及存储位置关系;

基于所述索引号和所述存储位置关系从第二数据服务器调用待存储数据并发送给所述应用服务器。

本发明较佳实施例还提供一种数据存储装置,应用于分布式数据服务器集群中的第一数据服务器,所述分布式数据服务器集群还包括与所述第一数据服务器通信连接的多个第二数据服务器,所述装置包括:

数据广播模块,用于接收各应用服务器发送的数据存储请求并提取所述数据存储请求中包含的待存储数据的主键信息,将所述主键信息广播给各所述第二数据服务器;

判断结果接收模块,用于接收各所述第二数据服务器根据所述主键信息判断自身是否保存有与所述主键信息对应的待存储数据的判断结果;

目标选取模块,用于所述第一数据服务器基于在第一预设时长内接收到的各所述第二数据服务器发送的判断结果,选取满足存储需求的第二数据服务器作为目标数据服务器;

数据存储模块,用于当所述目标数据服务器中保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据对所述目标数据服务器中以保存的数据对象进行更新;以及

所述数据存储模块还用于当所述目标数据服务器中未保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述第二数据服务器。

进一步地,述第一数据服务器中保存有第一数据索引表,所述装置还包括:

数据接收模块,用于接收与所述数据存储请求对应的待存储数据;

数据存储设置模块,用于对所述存储数据进行索引号设置,并将所述待存储数据、所述主键信息和所述索引号之间的对应关系存放至所述第一数据索引表中,以及将所述待存储数据缓存至缓存队列中。

进一步地,所述数据存储模块包括还用于根据所述主键信息查询对应的索引号,根据所述索引号从缓存队列中调用对应的待存储数据存储至所述目标数据服务器。

进一步地,所述装置还包括:

线程创建模块,用于创建用于执行与应用服务器之间数据传输动作的第一数据轮询线程,以及创建用于执行与多个第二数据服务器之间数据传输动作的多个第二数据轮询线程,所述第二数据轮询线程与所述第二数据服务器一一对应。

与现有技术相比,本发明实施例提供的数据存储方法和装置,其中,通过第一数据服务器进行数据存储请求的转发处理和待存储数据的缓存,能够实现对待存储数据的异步存储,同时,本发明还能够有效解决现有技术中存在的在大数据高并发情况下出现的系统宕机、数据丢失等问题,大幅提升用户体验。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例中所需要使用的附图作简单地介绍,应当理解,以下附图仅示出了本发明的某些实施例,因此不应被看作是对范围的限定,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他相关的附图。

图1为本发明实施例提供的数据存储方法的应用场景示意图。

图2为图1在所示的第一数据服务器的方框结构示意图。

图3为本发明实施例提供的数据存储方法的流程示意图。

图4为本发明实施例提供的数据存储方法的另一流程示意图。

图5为本发明实施例提供的数据存储装置的方框结构示意图。

图标:10-分布式数据服务器集群;11-第一数据服务器;110-数据存储装置;111-数据广播模块;112-判断结果接收模块;113-目标选取模块;114-数据存储模块;115-数据接收模块;116-数据存储设置模块;117-线程创建模块;120-存储器;130-存储控制器;140-处理器;12-第二数据服务器;20-应用服务器。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本发明实施例的组件可以以各种不同的配置来布置和设计。

因此,以下对在附图中提供的本发明的实施例的详细描述并非旨在限制要求保护的本发明的范围,而是仅仅表示本发明的选定实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。

如图1所示,为本发明实施例提供的数据存储方法的应用场景示意图,该应用场景包括分布式数据服务器集群10和多个应用服务器20,所述分布式数据服务器集群10包括第一数据服务器11和多个第二数据服务器12,所述第一数据服务器11用于对所述应用服务器20发送的数据存储请求进行转发,以及对待存储数据对象进行缓存等,多个所述第二数据服务器12用于根据接收到或监控到的所述第一数据服务器11发送的数据存储指令进行数据存储。应注意,在本实施例中,所述分布式数据服务器集群10由多级可拓展的数据服务器构成,如,当各所述第二数据服务器12中的存储能力已经无法实现对待存储数据对象的存储时,可基于所述第二数据服务器12增加多个第三服务器,此时第二数据服务器12相当于本实施例中的第一数据服务器11,第三服务器相当于本实施例中的第二数据服务器12。

详细地,所述第一数据服务器11可以是但不限于智能手机、个人电脑、平板电脑、个人数字助理、移动上网设备等等,本实施例在此不做限制。可选地,如图2所示,为所述第一数据服务器11的方框结构示意图,该第一数据服务器11包括数据存储装置110、存储器120、存储控制器130以及处理器140。其中,所述存储器120、存储控制器130、处理器140各元件相互之间直接或间接地电性连接,以实现数据的传输或交互。例如,这些元件之间通过一条或多条通讯总线或信号线实现电性连接。所述数据存储装置110包括至少一个可以软件或固件的形式存储于所述存储器120中或固化在所述第一数据服务器11中的操作系统中的软件功能模块。所述处理器140在所述存储控制器130的控制下访问所述存储器120,以用于执行所述存储器120中存储的可执行模块,例如所述数据存储装置110所包括的软件功能模块及计算机程序等。

可以理解,图2所示的结构仅为示意,所述第一数据服务器11还可包括比图2中所示更多或者更少的组件,或者具有与图2所示不同的配置。图2中所示的各组件可以采用硬件、软件或其组合实现。

此外,所述第二数据服务器12也可以是智能手机、个人电脑、平板电脑、个人数字助理、移动上网设备等在的内存等,本实施例在此不做限制。此外,所述第二数据服务器12的结构可参照第一数据服务器11,本实施例在此不再赘述。

所述应用服务器20用于生产待待存储的数据对象以及进行存储指令的发送等,因此,在本实施例中,所述应用服务器20可以是但不限于智能手机、个人电脑、平板电脑、个人数字助理、移动上网设备等。应注意,本实施例中,所述应用服务器20可以为多个。

进一步地,如图3所示,为本发明实施例提供的数据存储方法的流程示意图,该数据存储方法应用于上述的第一数据服务器11,下面将结合图3对所述数据存储方法的具体步骤和流程进行详细阐述。应理解的是,本实施例中给出的数据存储方法不以下面所述的步骤和流程的顺序为限制。

步骤S10,接收各应用服务器20发送的数据存储请求并提取所述数据存储请求中包含的待存储数据的主键信息,将所述主键信息广播给各所述第二数据服务器12;

步骤S20,接收各所述第二数据服务器12根据所述主键信息判断自身是否保存有与所述主键信息对应的待存储数据的判断结果;

步骤S30,所述第一数据服务器11基于在第一预设时长内接收到的各所述第二数据服务器12发送的判断结果,选取满足存储需求的第二数据服务器12作为目标数据服务器;

步骤S40,当所述目标数据服务器中保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据对所述目标数据服务器中以保存的数据对象进行更新;

步骤S50,当所述目标数据服务器中未保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述第二数据服务器12。

上述步骤S10-步骤S50中,通过采用第一数据服务器11和第二数据服务器12实现数据异步存储的方式,将数据存数请求的响应和数据存储过程分开,能够有效避免大数据高并发情况下的实时入库可能导致数据库连接数耗尽而出现异常,使得待存储的数据对象无法入库而被丢弃的问题发生。

本实施例中,在执行上述步骤S10-步骤S50之前,所述数据存储方法还包括:创建用于监听以及执行与应用服务器20之间数据传输动作的第一数据轮询线程,以及创建用于执行与多个第二数据服务器12之间数据传输动作的多个第二数据轮询线程,所述第二数据轮询线程与所述第二数据服务器12一一对应。通过采用所述第一数据轮询线程和多个所述第二数据轮询线程之间的并行处理方式,能够有效提高数据存储的实时性,同时还可大幅提高数据存储效率,避免大数据并发情况下的数据存储响应慢、系统宕机等问题发生。

可以理解的是,所述第一数据轮询线程(生产者)用于持续监听轮询所述应用服务器20中是否存在待入库的数据对象(如接收数据存储请求等),若接收到数据存储请求则所述第一数据服务器11通过多个第二数据轮询线程将该数据存储请求以广播的形式发送给各第二数据服务器12以使各第二数据服务器12根据自身状态和接收到的主键信息反馈判断结果,以及所述第二数据轮询线程还用于将临时缓存在所述第一数据服务器11中的待存储数据存储至相应的第二数据服务器12中。

进一步地,步骤S10中,通过所述第一数据轮询线程循环监听是否存在数据存储请求,若存在,则进行接收并对该数据存储请求进行分析,以得到待存储数据的主键信息,然后以广播的形式将所述主键信息发送各第二数据服务器12。其中,本实施例中采用广播的形式进行主键信息的发送,能够有效减少数据传输延时,提高数据传输效率和存储效率。

步骤S20中,所述第二数据服务器12根据主键信息判断自身是否保存有与该主键信息对应的待存储数据这一过程,能够在保证上述判断结果的准确性的同时,有效降低数据处理量,同时,还可有效避免数据存储中出现的重复存储的问题发生。应注意的是,所述判断结果中还包括但不限于第二数据服务器12中的剩余存储空间信息以及是否保存有与所述主键信息对应的待存储信息判断结果等,本实施例在此不做限制。

步骤S30中,所述第一预设时长可根据实际需求进行灵活设置,如,1秒、***秒等。在选取满足存储需求的第二数据服务器12时,若某个第二数据服务器12中保存有与所述主键信息对应的待存储数据,那么可判定该第二数据服务器12满足存储需求,并将其作为目标数据服务器;反之,则可选取剩余存储空间最大的第二数据服务器12作为目标数据服务器作为目标数据服务器。应注意的是,在实际实施时,还可根据待存储数据的数据类型、实时性要求等以及第二数据服务器12的剩余空间中的一个或多个条件进行目标数据服务器的选取,本实施例在此不再赘述。

步骤S40和步骤S50是根据判断结果的不同执行不同的存储操作,其中,如图3所示,在执行步骤S40和步骤S50之前,所述数据存储方法还包括以下步骤:

步骤S60,接收与所述数据存储请求对应的待存储数据;

步骤S70,对所述存储数据进行索引号设置,并将所述待存储数据、所述主键信息和所述索引号之间的对应关系存放至所述第一数据索引表中,以及将所述待存储数据缓存至缓存队列中。

详细地,在步骤S60和步骤S70中,所述第一数据服务器11中保存有第一数据索引表,该第一数据索引表用于查询缓存在第一数据服务器11中的数据对象以使第二数据轮询线程根据第一数据索引表实现数据存储。可选地,所述步骤S60和步骤S70由所述第一数据轮询线程执行,且可在步骤S10之后进行,,本实施例在此不做具体限制。由于本实施例中基于缓存技术,并采用第一数据轮询线程和第二数据轮询线程并行的设计模式,能够解决在大数据并发情况下的存储系统压力过大的问题,同时,本发明还基于索引号查询的方式进行入库,能够有效避免数据重复入库以及相关服务重启后数据丢失导致无法继续入库等问题发生,有效提高用户体验。

基于上述步骤S60和S70的描述,那么,步骤S50中根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述目标数据服务器的步骤包括:根据所述主键信息查询对应的索引号,根据所述索引号从缓存队列中调用对应的待存储数据存储至所述目标数据服务器。

在一个实施方式中,为了大幅提高数据存储过程中的响应速度,改善用户使用体验,可在步骤S60执行完毕后(即待存储数据缓存至所述第一数据服务器11后),反馈数据存储完成信息给应用服务器20并显示。此外,在进行数据存储时,可在将缓存在所述第一数据服务器11中的待存储数据通过第二数据轮询线程存储完成后,可对第一数据服务器11中的数据对象进行删除,以降低资源浪费,提高存储空间利用率。

进一步地,在一个实施例中,所述数据存储方法还可包括针对每个第二数据轮询线程,当所述第二数据轮询线程在第二预设时长内未接收到数据存储指令,则调用资源对象锁对进行线程锁定。具体地,所述第一数据轮询线程和所述第二数据轮询线程之间可通过资源对象锁进行通信,来实现第二数据轮询线程(生产者)和第一数据轮询线程(消费者)之间数据对象生产或消费的监听。详细地,若当前不存在需要异步入库的数据,此时可根据资源对象锁对相应的第二数据轮询线程做wait操作,等待第一数据轮询线程接收应用服务器20发送的数据存储请求并根据资源对象锁notify(通知)该第二数据轮询线程解锁准备执行数据入库操作。

实际实施时,通过资源对象锁实现对所述第二数据轮询线程的锁定,能够有效避免现有技术中出现的无限制高负荷使用数据库服务器(如第二数据服务器12等)而占用系统计算资源,影响数据库服务器上其他数据库服务或应用。同时,通过上述设置,还可有效避免现有技术中出现的因数据库服务器瓶颈而导致相关服务系统宕机,停止响应的问题发生。

进一步地,基于对上述数据存储方法的描述和设计,如图5所示,本发明实施例中还给出一种应用于第一数据服务器11的数据存储装置110,该数据存储装置110包括数据广播模块111、判断结果接收模块112、目标选取模块113、数据存储模块114、数据接收模块115、数据存储设置模块116和线程创建模块117。

所述数据广播模块111,用于接收各应用服务器20发送的数据存储请求并提取所述数据存储请求中包含的待存储数据的主键信息,将所述主键信息广播给各所述第二数据服务器12;本实施例中,关于数据广播模块111的描述具体可参考上述步骤S10的详细描述,也即,所述步骤S10可以由所述数据广播模块111执行,因而在此不作更多说明。

所述判断结果接收模块112,用于接收各所述第二数据服务器12根据所述主键信息判断自身是否保存有与所述主键信息对应的待存储数据的判断结果;本实施例中,关于判断结果接收模块112的描述具体可参考上述步骤S20的详细描述,也即,所述步骤S20可以由所述判断结果接收模块112执行,因而在此不作更多说明。

所述目标选取模块113,用于所述第一数据服务器11基于在第一预设时长内接收到的各所述第二数据服务器12发送的判断结果,选取满足存储需求的第二数据服务器12作为目标数据服务器;本实施例中,关于目标选取模块113的描述具体可参考上述步骤S30的详细描述,也即,所述步骤S30可以由所述目标选取模块113执行,因而在此不作更多说明。

所述数据存储模块114,用于当所述目标数据服务器中保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据对所述目标数据服务器中以保存的数据对象进行更新;以及所述数据存储模块114还用于当所述目标数据服务器中未保存有与所述主键信息对应的数据对象,则根据所述主键信息从缓存队列中调用对应的待存储数据并存储至所述第二数据服务器12。本实施例中,关于数据存储模块114的描述具体可参考上述步骤S40和步骤S50的详细描述,也即,所述步骤S40和步骤S50可以由所述数据存储模块114执行,因而在此不作更多说明。

所述数据接收模块115,用于接收与所述数据存储请求对应的待存储数据;本实施例中,关于数据接收模块115的描述具体可参考上述步骤S60的详细描述,也即,所述步骤S60可以由所述数据接收模块115执行,因而在此不作更多说明。

所述数据存储设置模块116,用于对所述存储数据进行索引号设置,并将所述待存储数据、所述主键信息和所述索引号之间的对应关系存放至所述第一数据索引表中,以及将所述待存储数据缓存至缓存队列中。本实施例中,关于数据存储设置模块116的描述具体可参考上述步骤S70的详细描述,也即,所述步骤S70可以由所述数据存储设置模块116执行,因而在此不作更多说明。

所述线程创建模块117,用于创建用于执行与应用服务器20之间数据传输动作的第一数据轮询线程,以及创建用于执行与多个第二数据服务器12之间数据传输动作的多个第二数据轮询线程,所述第二数据轮询线程与所述第二数据服务器12一一对应。本实施例中,关于所述线程创建模块117的描述具体可参考上述步骤S10的详细描述,也即,所述步骤S10可以由所述线程创建模块117执行,因而在此不作更多说明。

综上所述,本发明实施例提供的数据存储方法和装置,其中,通过第一数据服务器11进行数据存储请求的转发处理和待存储数据的缓存,能够实现对待存储数据的异步存储,同时,本发明还能够有效解决现有技术中存在的在大数据高并发情况下出现的系统宕机、数据丢失等问题,大幅提升用户体验。

在本发明的描述中,术语“设置”、“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连,可以是两个元件内部的连通。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本发明中的具体含义。

在本发明实施例所提供的几个实施例中,应该理解到,所揭露的装置和方法,也可以通过其他方式实现。以上所描述的装置和方法实施例仅仅是示意性的,例如,附图中的流程图和框图显示了根据本发明的预设数量个实施例的装置、方法和计算机程序产品可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或代码的一部分。所述模块、程序段或代码的一部分包含一个或预设数量个用于实现规定的逻辑功能。

也应当注意,在有些作为替换的实现方式中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

成果亮点
团队介绍
成果资料