一种数据处理方法、系统、电子设备及存储介质

文档序号:1627686 发布日期:2020-01-14 浏览:3次 >En<

阅读说明:本技术 一种数据处理方法、系统、电子设备及存储介质 (Data processing method, system, electronic equipment and storage medium ) 是由 刘志勇 于 2019-09-06 设计创作,主要内容包括:本申请公开了一种数据处理方法,所述数据处理方法包括获取目标时间段内缓存中待刷写数据的数量变化信息;其中,所述目标时间段为历史时刻至当前时刻对应的时间段,所述历史时刻早于当前时刻预设时长;根据所述数量变化信息确定线程变化量;其中,所述数量变化信息包括数据变化量,所述数据变化量与所述线程变化量正相关;根据所述线程变化量确定目标线程数量,并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据。本申请能够在保证并发能力的前提下实现高效刷写数据。本申请还公开了一种数据处理系统、一种存储介质及一种电子设备,具有以上有益效果。(The application discloses a data processing method, which comprises the steps of obtaining the quantity change information of data to be refreshed in a cache in a target time period; the target time period is a time period corresponding to a historical time to a current time, and the historical time is earlier than a preset time length of the current time; determining thread variation according to the quantity variation information; the quantity change information comprises data change quantity, and the data change quantity is positively correlated with the thread change quantity; and determining the number of target threads according to the thread variation, and processing the data to be flashed in the cache by starting the threads with the number of the target threads. According to the method and the device, efficient data flashing can be realized on the premise of ensuring the concurrency capability. The application also discloses a data processing system, a storage medium and an electronic device, which have the beneficial effects.)

一种数据处理方法、系统、电子设备及存储介质

技术领域

本申请涉及计算机技术领域,特别涉及一种数据处理方法、系统、一种存储介质及一种电子设备。

背景技术

在全闪存储中为实现数据的随机转顺序的存储方式,需要采用后分配地址的方式进行存储,即写IO下发的底层模块时,不附带具体的写入位置,而是当底层模块收到后写IO后再以追加写方式分配一个地址,然后将该地址记录到元数据中,建立起逻辑地址与实际地址的映射关系,从而保证以后可以通过元数据正确查询到IO的地址。为保证并发度,需要将物理空间切块后,把不同的块挂载到不同的线程上,在单个块内实现数据的追加写,而多线程的方式满足数据写入的并发度。其中,切分后的空间块称为条带。

为了提高系统性能,对于IO的处理需要采用多线程并发处理的方式,在相关技术处理过程中使用固定数量的线程处理待刷写任务,线程数量太少会导致处理IO的效率较低,影响系统性能;如果线程数量过多,则可能会因IO的处理太分散导致难以快速凑满条带,IO过于分散,影响写盘速率。

因此,如何在保证并发能力的前提下实现高效刷写数据是本领域技术人员目前需要解决的技术问题。

发明内容

本申请的目的是提供一种数据处理方法、系统、一种存储介质及一种电子设备,能够在保证并发能力的前提下实现高效刷写数据。

为解决上述技术问题,本申请提供一种数据处理方法,该数据处理方法包括:

获取目标时间段内缓存中待刷写数据的数量变化信息;其中,所述目标时间段为历史时刻至当前时刻对应的时间段,所述历史时刻早于当前时刻预设时长;

根据所述数量变化信息确定线程变化量;其中,所述数量变化信息包括数据变化量,所述数据变化量与所述线程变化量正相关;

根据所述线程变化量确定目标线程数量,并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据。

可选的,还包括:

当接收到上层主机发送的新待刷写数据时,将所述新待刷写数据存储至所述缓存中。

可选的,根据所述数量变化信息确定线程变化量包括:

根据所述数量变化信息确定数据变化趋势,通过查询关系对照表确定所述数据变化趋势对应的线程变化量;其中,所述关系对照表中存储有数据变化趋势与线程变化量的对应关系。

可选的,所述数据变化趋势包括平稳趋势、线性上升趋势、指数上升趋势、线性下降趋势或指数下降趋势。

可选的,所述获取目标时间段内缓存中待刷写数据的数量变化信息包括:

按照预设周期获取所述目标时间段内所述缓存中待刷写数据的负载状态;

根据每一周期对应的负载状态确定所述数量变化信息。

可选的,还包括:

当检测到所述缓存中待刷写数据的数量大于或等于最大预设数量时,生成反馈信息,以便阻止新待刷写数据存储至所述缓存。

可选的,根据所述线程变化量确定目标线程数量包括:

确定初始线程数量,并根据所述线程变化量修正所述初始线程数量得到所述目标线程数量。

本申请还提供了一种数据处理系统,该数据处理系统包括:

负载检测模块,用于获取目标时间段内缓存中待刷写数据的数量变化信息;其中,所述目标时间段为历史时刻至当前时刻对应的时间段,所述历史时刻早于当前时刻预设时长;

趋势预测模块,用于根据所述数量变化信息确定线程变化量;其中,所述数量变化信息包括数据变化量,所述数据变化量与所述线程变化量正相关;

线程调度模块,用于根据所述线程变化量确定目标线程数量,并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据。

本申请还提供了一种存储介质,其上存储有计算机程序,所述计算机程序执行时实现上述数据处理方法执行的步骤。

本申请还提供了一种电子设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器调用所述存储器中的计算机程序时实现上述数据处理方法执行的步骤。

本申请提供了一种数据处理方法,包括获取目标时间段内缓存中待刷写数据的数量变化信息;其中,所述目标时间段为历史时刻至当前时刻对应的时间段,所述历史时刻早于当前时刻预设时长;根据所述数量变化信息确定线程变化量;其中,所述数量变化信息包括数据变化量,所述数据变化量与所述线程变化量正相关;根据所述线程变化量确定目标线程数量,并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据。

本申请首先获取目标时间段内待刷写数据的数量变化信息,根据数量变化信息能够确定自身水位情况进而实现对于负载压力的趋势预测,进而根据数量变化信息确定线程变化量。本申请中数据变化量与线程变化量正相关,因此根据线程辩护量确定的目标线程数量能够根据缓存模块的自身水位变化情况调整当前线程数量。由于本申请中线程数量随待刷写数据的数量变化而改变,因此能够在保证并发能力的前提下实现高效刷写数据。本申请同时还提供了一种数据处理系统、一种存储介质和一种电子设备,具有上述有益效果,在此不再赘述。

附图说明

为了更清楚地说明本申请实施例,下面将对实施例中所需要使用的附图做简单的介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本申请实施例所提供的一种数据处理方法的流程图;

图2为本申请实施例所提供的一种数量变化信息方法的流程图;

图3为本申请实施例所提供的一种应用于存储系统的最优工作线程数量调节系统的原理示意图;

图4为本申请实施例所提供的一种数据处理系统的结构示意图。

具体实施方式

为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。

下面请参见图1,图1为本申请实施例所提供的一种数据处理方法的流程图。

具体步骤可以包括:

S101:获取目标时间段内缓存中待刷写数据的数量变化信息;

其中,本实施例可以应用于使用全闪存储的服务器中,数据缓存模块在接收到待刷写数据之后启用线程将待刷写数据刷写至底层模块(如数据组织模块)中。需要说明的是,数据缓存模块接收到的待刷写数据可以为上层主机下发的IO,以便减小写延时。也就是说,当待刷写数据到达数据缓存模块后,这些待刷写数据会临时存放到数据缓存模块中,同时数据缓存模块中的待刷写数据会批量向下层的数据组织模块进行下发。同时由于数据缓存模块中始终会保存有一定量的待刷写数据,因此数据缓存模块中的数量占缓存总容量的大小可以称之为水位,水位越高说明当前缓存面临的负载压力越大。

需要说明的是,本步骤中提到的目标时间段指历史时刻至当前时刻对应的时间段,所述历史时刻早于当前时刻预设时长,此处不限定时间段的具体时长。作为一种可行的实施方式,目标时间段可以为一段连续的时间段。

本步骤中获取的数量变化信息为描述数据缓存模块中存储的待刷写数据的变化状况的信息。数量变化信息可以包括历史时刻与当前时刻的数据变化量,也可以包括历史时刻至当前时刻过程中的数据量波动状况,还可以包括目标时间段内每一时间点的待刷写数据的数据量,在此不对数据变化信息的具体内容进行限定。

S102:根据所述数量变化信息确定线程变化量;

其中,本实施例的目的在于根据数据缓存模块中待刷写数据的数量变化信息确定线程变化量,线程变化量为描述线程数量需要变化的数量信息,例如线程变化量可以为在原有线程数量的基础上增加N个,也可以为在原有线程数量的基础上增加M个,还可以为保持原有线程数量不变。

作为一种可行的实施方式,当数量变化信息包括历史时刻与当前时刻两个时间点之间的数据变化量时,可以按照预设对应关系确定数据变化量对应的线程变化量。需要说明的是,该预设对应关系可以为在执行S102之前预先设置好的,在该预设对应关系中数据变化量与线程变化量正相关。通过上述线程变化量的确定方式,能够实现至少以下三种技术效果:

(1)若当前时刻的待刷写数据数量高于历史时刻的待刷写数据数量第一预设数量时,说明数据缓存模块的负载压力增大,如果改变线程数量将会导致刷写待刷写数据的效率降低。采用上述线程变化量的确定方式得到的线程变化量为增加第一预设数量个线程。

(2)若当前时刻的待刷写数据数量低于历史时刻的待刷写数据数量第二预设数量时,说明数据缓存模块的负载压力减小,如果改变线程数量将会导致条带刷写慢的时间较长。采用上述线程变化量的确定方式得到的线程变化量为减少第二预设数量个线程。

(3)若当前时刻的待刷写数据数量与历史时刻的待刷写数据数量相等或差值在预设范围内时,说明数据缓存模块的负载压力无变化,可以不改变当前线程数量。

S103:根据所述线程变化量确定目标线程数量,并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据。

其中,本实施例建立在已经确定线程变化量的基础上,结合线程变化量和初始线程数量确定目标线程数量,具体过程可以包括:确定初始线程数量,并根据所述线程变化量修正所述初始线程数量得到所述目标线程数量。

进一步的,本实施例可以在按照第一公式确定目标线程数量Y,第一公式为Y=Z+△,Z为初始线程数量,△为线程变化量,线程变化量可以为正值、0或负值,△=A-B,A为当前时刻的待刷写数据数量,B为历史时刻的待刷写数据数量。

由于根据所述线程变化量确定目标线程数量的操作仅仅是线程数量的确定,并未实际更改执行数据刷写任务的线程数量,因此需要通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据,实现线程数量的设置。

可以理解的是,在利用并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据的过程中,若数据缓存模块接收到上层主机发送的新待刷写数据时,可以将所述新待刷写数据存储至所述缓存中。进一步的,当检测到所述缓存中待刷写数据的数量大于或等于最大预设数量时,本实施例可以生成反馈信息,以便阻止新待刷写数据存储至所述缓存,进而避免出现过载的状况。

本实施例首先获取目标时间段内待刷写数据的数量变化信息,根据数量变化信息能够确定自身水位情况进而实现对于负载压力的趋势预测,进而根据数量变化信息确定线程变化量。本实施例中数据变化量与线程变化量正相关,因此根据线程辩护量确定的目标线程数量能够根据缓存模块的自身水位变化情况调整当前线程数量。由于本实施例中线程数量随待刷写数据的数量变化而改变,因此能够在保证并发能力的前提下实现高效刷写数据。

作为一种对于图1对应实施例的补充说明,S102中根据所述数量变化信息确定线程变化量的过程可以具体为:

根据所述数量变化信息确定数据变化趋势,通过查询关系对照表确定所述数据变化趋势对应的线程变化量;其中,所述关系对照表中存储有数据变化趋势与线程变化量的对应关系。

上述数据变化趋势包括平稳趋势、线性上升趋势、指数上升趋势、线性下降趋势或指数下降趋势,当然此处不仅限于这五种情况,可根据实际需要进行更细粒度的划分。每一种数据变化趋势都可以对应一个线程变化量。例如,平稳趋势对应的线程变化量为0,线性上升趋势对应的线程变化量为+Q,指数上升趋势对应的线程变化量为+4Q,线性下降趋势对应的线程变化量为-Q,指数下降趋势对应的线程变化量为-4Q。其中,+Q代表增加Q个新线程,-Q代表减少Q个原有线程,以此类推。

下面请参见图2,图2为本申请实施例所提供的一种数量变化信息方法的流程图;本实施例是对图1对应实施例中S101的进一步说明,可以将本实施例与图1对应实施例相结合得到更为优选的实施方式,本实施例可以包括以下步骤:

S201:按照预设周期获取所述目标时间段内所述缓存中待刷写数据的负载状态;

S202:根据每一周期对应的负载状态确定所述数量变化信息。

上述实施例提供了一种确定数据变化信息的方式,首先按照预设周期获取待刷写数据的负载状态,结合目标时间段内每一周期的复杂状态生成数量变化信息。上述方式提高了数据变化信息的确定效率,同时降低了确定数据变化信息过程需要消耗的系统资源。

下面通过在实际应用中的实施例说明上述实施例描述的流程。请参见图3,图3为本申请实施例所提供的一种应用于存储系统的最优工作线程数量调节系统的原理示意图,其具体工作过程如下:

数据缓存模块主要用于缓存上层主机下发的IO,其主要作用是减少写延时。当数据IO(即上述实施例中的待刷写数据)到达缓存后,这些数据会临时存放到缓存中,同时缓存中的数据会批量向下层的数据组织模块进行下发。同时由于缓存中始终会保存有一定量的待刷写数据,因此缓存中的数量占缓存总容量的大小可以称之为水位,水位越高说明当前缓存面临的负载压力越大,而当水位持续上升时,说明下层数据组织模块的处理速度小于上层主机下发IO的速度,导致缓存负载压力持续变大,因而此时就需要增大下层数据组织模块的处理能力,也就是增加并发线程数。

本实施例还在数据缓存模块中增加负载检测子模块,该负载检测子模块可以通过定时采样的方式持续监控当前缓存中的水位情况,并将收集到的一系列水位变化情况作为通知线程数量变化的依据。

趋势预测子模块通过接收到的一系列负载水位结果,来计算水位的变化趋势,趋势主要分为几种:平稳变化、线性上升、指数上升、线性下降、指数下降。评估方法是根据最近的多次采样值(例如5次等),通过数学计算拟合出水位变化的走势,计算方式需结合采样值得多少来定,采样值越多结果越精确,但相应的复杂度会增加,因此可根据设备性能、实时性等要求确定合适的采样值数量。举例来说,假定采用5个采样值(分别是A/B/C/D/E)的情况下,可以通过依次计算相邻两个数值的变化率的方式来判定变化走势,例如B相对A增加2%,C相对B增加3%,D相对C减少2%,E相对D增加1%,则可以认为变化趋势为平稳变化;如果B相对A增加2%,C相对B增加4%,D相对C增加7%,E相对D增加14%,则认为变化趋势为指数上升等。需要说明的是,以上列举的计算方式仅为一种简易方式,根据实际需要可采用更为复杂和精确的方式。

本实施例在获取变化趋势后,可以需要通知到下层数据组织模块的线程数量调节子模块,根据变化趋势调整线程数量。例如当变化趋势平稳时,线程数量不变化,当线性上升时增加一个线程数,当指数上升时根据变化幅度增加两个或多个线程等,从而实现提前调整数据组织模块的并发处理能力,以便更好的应对负载压力的变化。

当数据组织模块进行调整后,由于并发处理IO的能力发生变化,因此会相应的影响到数据缓存模块中缓存的数据量,一般并发能力越强,处理IO的速度越快,由此会加快缓存中的数据下刷,进而导致缓存水位下降。因此数据组织模块的调整最终会以反馈的方式影响到缓存水位的变化,并依靠着线程数量不断的动态调节,最终达到缓存水位和数据组织的并发能力维持在一个相对平衡的状态,从而使系统始终保持在一个最优的并发线程数量。本实施例在获得变化趋势后,以此为依据调整下层数据组织模块中的工作线程数量,上升趋势需增加线程,提高并发能力;下降趋势需减少线程,防止IO过于分散,影响写盘速率。

上述过程为上层缓存模块通过自身水位情况进行负载压力的趋势预测,并预期结果提前通知下层数据组织模块,数据组织模块在收到通知后,提前增加或减少工作线程数量的操作,同时增加或减少线程数量后,又会以反馈的方式影响到上层缓存模块的压力变化,并最终实现上下城模块间的负载平衡。本实施例提出了一种存储系统最优工作线程数量自动调节的方案,通过对缓存水位进行周期采样,并以此预测负载压力变化,从而可以提前调整数据组织模块中并发处理数据的线程数量,进而实现工作线程数量始终维持在最优的数量水平。

请参见图4,图4为本申请实施例所提供的一种数据处理系统的结构示意图;

该系统可以包括:

负载检测模块100,用于获取目标时间段内缓存中待刷写数据的数量变化信息;其中,所述目标时间段为历史时刻至当前时刻对应的时间段,所述历史时刻早于当前时刻预设时长;

趋势预测模块200,用于根据所述数量变化信息确定线程变化量;其中,所述数量变化信息包括数据变化量,所述数据变化量与所述线程变化量正相关;

线程调度模块300,用于根据所述线程变化量确定目标线程数量,并通过启动所述目标线程数量个线程处理所述缓存中的待刷写数据。

本实施例首先获取目标时间段内待刷写数据的数量变化信息,根据数量变化信息能够确定自身水位情况进而实现对于负载压力的趋势预测,进而根据数量变化信息确定线程变化量。本实施例中数据变化量与线程变化量正相关,因此根据线程辩护量确定的目标线程数量能够根据缓存模块的自身水位变化情况调整当前线程数量。由于本实施例中线程数量随待刷写数据的数量变化而改变,因此能够在保证并发能力的前提下实现高效刷写数据。

进一步的,还包括:

缓存模块,用于当接收到上层主机发送的新待刷写数据时,将所述新待刷写数据存储至所述缓存中。

进一步的,趋势预测模块200具体为用于根据所述数量变化信息确定数据变化趋势,通过查询关系对照表确定所述数据变化趋势对应的线程变化量的模块;其中,所述关系对照表中存储有数据变化趋势与线程变化量的对应关系。

进一步的,所述数据变化趋势包括平稳趋势、线性上升趋势、指数上升趋势、线性下降趋势或指数下降趋势。

进一步的,负载检测模块100包括:

周期检测单元,用于按照预设周期获取所述目标时间段内所述缓存中待刷写数据的负载状态;

数量变化信息确定单元,用于根据每一周期对应的负载状态确定所述数量变化信息。

进一步的,还包括:

反馈模块,用于当检测到所述缓存中待刷写数据的数量大于或等于最大预设数量时,生成反馈信息,以便阻止新待刷写数据存储至所述缓存。

进一步的,趋势预测模块200具体为用于确定初始线程数量,并根据所述线程变化量修正所述初始线程数量得到所述目标线程数量的模块。

由于系统部分的实施例与方法部分的实施例相互对应,因此系统部分的实施例请参见方法部分的实施例的描述,这里暂不赘述。

本申请还提供了一种存储介质,其上存有计算机程序,该计算机程序被执行时可以实现上述实施例所提供的步骤。该存储介质可以包括:U盘、移动硬盘、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、磁碟或者光盘等各种可以存储程序代码的介质。

本申请还提供了一种电子设备,可以包括存储器和处理器,所述存储器中存有计算机程序,所述处理器调用所述存储器中的计算机程序时,可以实现上述实施例所提供的步骤。当然所述电子设备还可以包括各种网络接口,电源等组件。

说明书中各个实施例采用递进的方式描述,每个实施例重点说明的都是与其他实施例的不同之处,各个实施例之间相同相似部分互相参见即可。对于实施例公开的系统而言,由于其与实施例公开的方法相对应,所以描述的比较简单,相关之处参见方法部分说明即可。应当指出,对于本技术领域的普通技术人员来说,在不脱离本申请原理的前提下,还可以对本申请进行若干改进和修饰,这些改进和修饰也落入本申请权利要求的保护范围内。

还需要说明的是,在本说明书中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的状况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

12页详细技术资料下载
上一篇:一种医用注射器针头装配设备
下一篇:一种存储系统的分层方法、装置、设备及介质

网友询问留言

已有0条留言

还没有人留言评论。精彩留言会获得点赞!

精彩留言,会给你点赞!

技术分类