CN111638949A - 时间序列数据分段构建方法、装置及计算机设备 - Google Patents
时间序列数据分段构建方法、装置及计算机设备 Download PDFInfo
- Publication number
- CN111638949A CN111638949A CN202010351304.8A CN202010351304A CN111638949A CN 111638949 A CN111638949 A CN 111638949A CN 202010351304 A CN202010351304 A CN 202010351304A CN 111638949 A CN111638949 A CN 111638949A
- Authority
- CN
- China
- Prior art keywords
- data
- request
- current
- data reading
- requests
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5016—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals the resource being the memory
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5011—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resources being hardware resources other than CPUs, Servers and Terminals
- G06F9/5022—Mechanisms to release resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1001—Protocols in which an application is distributed across nodes in the network for accessing one among a plurality of replicated servers
- H04L67/1004—Server selection for load balancing
- H04L67/1008—Server selection for load balancing based on parameters of servers, e.g. available memory or workload
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5013—Request control
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/50—Indexing scheme relating to G06F9/50
- G06F2209/5018—Thread allocation
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Hardware Design (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer And Data Communications (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明涉及大数据领域,公开了时间序列数据分段构建方法,在多个并发的数据读取请求到达服务器后,服务器按照各数据读取请求对应的接收时间进行升序排序,依序获取各数据读取请求的数据请求量,计算与上一数据读取请求对应的累计数据请求量之和以得到当前累计数据请求量,直至当前累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;之后将第一请求总个数分别对应的当前可服务数据读取请求的内存分配值进行预估。该方法实现了当服务器中接收了大量并发请求时,服务器不会出现内存溢出导致不可用的问题,提高了服务器的稳定性。本发明还涉及区块链技术,所述数据请求量存储于区块链中。
Description
技术领域
本发明涉及大数据技术领域,尤其涉及一种时间序列数据分段构建方法、装置、计算机设备及存储介质。
背景技术
时间序列数据在大数据领域中十分常见,如股票的每日价格序列,房价的每日成交量、成交价,或者是服务器性能的每分钟监控数据。研究人员通过研究长期的某类时间序列数据,可以判断该类数据的长期走势或者是某种稳定性,也可以同时研究多类数据一段时间范围内的时间序列,量化其相关性,将高度相关的数据类别进行分门别类。
工程实践中,数据量较大的时间序列通常保存在持久化的数据库里(例如该持久化的数据库存储在磁盘中),供客户端按需调用和读取。当客户端读取持久化的数据库中的数据时,数据的输出方向是数据库(磁盘)->服务器(内存)->网络->客户端(内存)->交互界面。
当存在多个客户端对服务器中的大量数据进行并发请求的情况下,多个客户端发起的数据读取请求是存储在服务器中的线程池中。例如服务器中的内存大小为A1,服务器中的线程池的大小为A2(线程池所占用的空间也在服务器的内存中,即A2<A1),若此时有N1个客户端向服务器发起数据读取请求,这N1个数据读取请求几乎是同时去占用服务器的内存去并发读取数据库中的数据,若这N1个数据读取请求对服务器内存的占用空间是大于A1-A2,则会导致服务器内存溢出的性能问题,导致并发请求条件下几乎无法对客户端的数据请求进行稳定的响应。
发明内容
本发明实施例提供了一种时间序列数据分段构建方法、装置、计算机设备及存储介质,旨在解决现有技术中存在多个客户端对服务器中的大量数据进行并发请求的情况下会导致服务器内存溢出的性能问题,且并发请求条件下几乎无法对客户端的数据请求进行稳定的响应的问题。
第一方面,本发明实施例提供了一种时间序列数据分段构建方法,其包括:
判断是否检测到用户端发送的数据读取请求;
若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量;
按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0;
将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求;
生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放;
获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值;
判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量;以及
若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
第二方面,本发明实施例提供了一种时间序列数据分段构建装置,其包括:
读取请求检测单元,用于判断是否检测到用户端发送的数据读取请求;
请求参数获取单元,用于若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量;
请求筛选单元,用于按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0;
集合分类单元,用于将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求;
响应数据生成单元,用于生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放;
内存分配单元,用于获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值;
内存判断单元,用于判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量;以及
第一响应数据发送单元,用于若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
第三方面,本发明实施例又提供了一种计算机设备,其包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一方面所述的时间序列数据分段构建方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其中所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行上述第一方面所述的时间序列数据分段构建方法。
本发明实施例提供了一种时间序列数据分段构建方法、装置、计算机设备及存储介质,包括判断是否检测到用户端发送的数据读取请求;若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量;按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0;将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求;生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放;获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值;判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量;以及若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。该方法实现了当服务器中接收了大量并发请求时,服务器不会出现内存溢出导致不可用的问题,而且能稳定响应请求,提高了服务器的稳定性。
附图说明
为了更清楚地说明本发明实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的时间序列数据分段构建方法的应用场景示意图;
图2为本发明实施例提供的时间序列数据分段构建方法的流程示意图;
图3为本发明实施例提供的时间序列数据分段构建装置的示意性框图;
图4为本发明实施例提供的计算机设备的示意性框图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
应当理解,当在本说明书和所附权利要求书中使用时,术语“包括”和“包含”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在此本发明说明书中所使用的术语仅仅是出于描述特定实施例的目的而并不意在限制本发明。如在本发明说明书和所附权利要求书中所使用的那样,除非上下文清楚地指明其它情况,否则单数形式的“一”、“一个”及“该”意在包括复数形式。
还应当进一步理解,在本发明说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
请参阅图1和图2,图1为本发明实施例提供的时间序列数据分段构建方法的应用场景示意图;图2为本发明实施例提供的时间序列数据分段构建方法的流程示意图,该时间序列数据分段构建方法应用于本地终端机中,该方法通过安装于本地终端机中的应用软件进行执行。
如图2所示,该方法包括步骤S110~S180。
S110、判断是否检测到用户端发送的数据读取请求。
在本实施例中,当多个用户分别通过各自的用户端向服务器发送大量数据读取请求时,服务器需根据这些数据读取请求分别进行响应,从而实现数据并发处理。
S120、若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量。
在本实施例中,数据库是位于服务器这一端的,数据库中的数据是在服务器中的磁盘进行存储,用户端可以与服务器端建立连接以发起数据读取请求。例如,数据库中存储了一个集合S,由N(N>0)个数据类型组成。对每一类属于S的数据类型D,对应有二元时间队列[(t0,v0),(t1,v1),..,(tm,vm)],(t0,v0)表示数据D在t0时刻值为v0。本申请是在服务器端的角度进行技术方案的描述,即当用户端与服务器建立连接后,由用户端向服务器发起数据读取请求。当数据库接收到至少一个用户端的数据读取请求后,会解析该数据读取请求对应的请求参数。
具体的,请求参数的格式如下:{请求次数,请求数据类型列表,数据时间范围}。例如客户端1向服务器发送的数据读取请求对应的请求参数为{1,[A B C],[20170101,20171231]},表示客户端1第一次发送请求参数并需要从服务器中读取A、B、C三种数据类型的数据且A、B、C三种数据类型的读取时间范围是2017年1月1日-2017年12月31日。在某一时间段(如2018年1月1日上午的9:00-9:01),当多个客户端均向服务器发送数据读取请求时,服务器并不是立即去磁盘中提取数据,而是依序获取数据读取请求对应的请求参数。对多个客户端的请求参数进行综合分析后,做一个数据处理量的预估,根据该数据处理量分配好针对各客户端的数据读取请求分别分配的内存空间。如果此时数据处理量的预估是超出服务器的内存大小,可能会只选定上述多个数据读取请求中的其中几个进行响应,释放掉其余未响应的数据读取请求以通知其在随机等待时间结束后再次连接服务器发送请求。
服务器对数据处理量的预估与现有技术相比是不同的,现有的当有多个客户端请求从服务器中读取数据时,即当未超过服务器的连接上限的客户端请求由服务器接收时,服务器一般是不考虑这些客户端请求对服务器内存的总占用情况,即使这些客户端请求对服务器内存的总占用大小超出了服务器的内存大小而导致内存溢出,服务器也是会继续对客户端反馈数据,这样就会降低响应的稳定性。
在一实施例中,步骤S120包括:
将各用户端的数据读取请求根据请求接收时间依序存储于线程池中;其中,每一数据读取请求对应启动一个线程;
根据线程池中存储的数据读取请求,解析获取数据读取请求对应的请求总个数,以及解析获取各数据读取请求对应的数据请求量;其中,所述数据请求量为数据待占用内存的空间值;所述数据读取请求中包括请求次数、请求数据类型列表、及数据时间范围。需要强调的是,为进一步保证上述数据请求量的私密和安全性,上述数据请求量还可以存储于一区块链的节点中。
在本实施例中,当服务器此时接收到多个客户端的并发请求时,由于每一个客户端的数据读取请求被服务器接收的时间先后不同(时差很小,但是各数据读取请求并未完全同时被服务器接收的),此时可以按照先进先出的原则将各用户端的数据读取请求存储在线程池中,该线程池是占用了一定的服务器的内存的存储空间。
由于各数据读取请求对应的请求参数的格式均如下:{请求次数,请求数据类型列表,数据时间范围},此时在服务器可以统计出数据读取请求对应的请求总个数,而且可以根据请求参数中请求数据类型列表和数据时间范围计算出每个数据读取请求对应的数据请求量。例如客户端1对应的请求数据类型列表对应A类数据,数据时间范围是2017年1月1日-2017年12月31日,若A类数据对应表示以日为维度的数据,则可以获知最终可查询到365条A类数据,由于每一条A类数据的数据大小是事先已知的,此时由A类数据单条数据大小*365即可得到该条数据读取请求对应的数据请求量。例如A类数据单条数据大小为1M,则客户端1对应的请求获取的A类数据的大小为365M。
在一实施例中,步骤S122包括:
获取预先存储的哈希表;其中,所述哈希表中存储有多种数据类别,和与多种数据类别中每一数据类别一一对应的单条数据大小值;
获取各数据读取请求分别对应的数据类别;
在所述哈希表中查询获取各数据类别对应的单条数据大小值,以对应计算各数据读取请求对应的数据请求量。
在本实施例中,哈希表是初始存储在服务器的磁盘中的数据库中,此时服务器的内存先从磁盘中读取该哈希表;在该哈希表中存储有多种数据类别,如以日为维度的A类数据、以小时为维度的B类数据、以分钟为维度的C类数据等;而且每一类数据的单条数据对应的数据量大小是可以统计后求平均值而得到的。通过查询哈希表,能更准确的获取数据读取请求对应的请求总个数,以及数据请求量。
例如,例如客户端1对应的请求数据类型列表对应A类数据,数据时间范围是2017年1月1日-2017年12月31日,若A类数据对应表示以日为维度的数据,A类数据单条数据大小为1M,则客户端1对应的请求获取的A类数据的大小为365M。
S130、按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0。
在本实施例中,服务器的线程池中的多个数据读取请求对应的线程是按照服务器接收到请求的接收时间的升序顺序排序,也即越先被服务器接收的数据读取请求对应的线程是排在线程池中越靠前的位置。
服务器的最大允许并发查询的内存空间值记为Mmax(其中Mmax=Size*M,Size为数据库中单条数据的平均大小、M为最大并发查询的数据总条数),之前的多个历史数据读取请求对服务器已占用内存大小值为Running Data,则此时服务器的当前可用内存值记为Remain Space且Remain Space=Mmax-Running Data。
此时服务器是先按照线程池中线程进入线程池中的先后顺序依次去取出线程并同时获知了该线程对应的数据请求量,然后计算该线程的数据请求量与上一数据读取请求对应的累计数据请求量之和是否超出服务器的当前可用内存值;若未超出,则先是将该线程的数据请求量与上一数据读取请求对应的累计数据请求量求和得到的当前累计数据请求量,以当前累计数据请求量来更新累计数据请求量的最新取值,并且判断累计数据请求量是否超出服务器的当前可用内存值;若判断累计数据请求量未超出服务器的当前可用内存值,则在当前累计数据请求量的基础上继续叠加下一线程的数据请求量后再次判断更新后的当前累计数据请求量是否超出服务器的当前可用内存值,直到当前累计数据请求量超出服务器的当前可用内存值才停止上述迭代过程。
此处需强调的是,当前累计数据请求量首次超出服务器的当前可用内存值才停止上述迭代过程。若从线程池中取完所有的线程并叠加求得的当前累计数据请求量仍未超出服务器的当前可用内存值,则直接针对各线程分配对应的内存空间以完成从服务器中的数据读取,数据读取的传输路径为数据库(磁盘)->服务器(内存)->网络->客户端(内存)->交互界面。由于本申请中考虑的是多个并发的数据读取请求一定会导致服务器的内存溢出的情况,这种从线程池中取完所有的线程并叠加求得的当前累计数据请求量仍未超出服务器的当前可用内存值是较小概率发生,一旦发生这种情况,按上述所说明的步骤执行即可。
在一实施例中,步骤S130包括:
将累计数据请求量值的初始值置为0,将线程池中初始获被取的线程编号n的取值设置为1;
获取当前的线程池中排序号为n的线程对应的数据请求量,并获取上一数据读取请求对应的累计数据请求量;
将线程池中排序号为n之后的并行线程进行阻塞;
将排序号为n的线程对应的数据请求量与上一数据读取请求对应的累计数据请求量求和,得到排序号为n的线程对应的当前累计数据请求量;
以当前累计数据请求量对累计数据请求量进行更新,得到更新后的累计数据请求量;
判断排序号为n的线程对应的累计数据请求量是否超出服务器的当前可用内存值;
若排序号为n的线程对应的累计数据请求量未超出服务器的当前可用内存值,将排序号n的值加一,以得到更新后的排序号n,将线程池中所有线程解除阻塞,返回执行获取当前的线程池中排序号为n的线程对应的数据请求量,并获取上一数据读取请求对应的累计数据请求量的步骤;
若排序号为n的线程对应的当前累计数据请求量超出服务器的当前可用内存值,获取当前的排序号n以作为第一请求总个数,并获取当前已获取的数据读取请求对应的线程。
在本实施例中,例如先取出线程池中排序第一的线程1,线程1的数据请求量例如为300M与上一数据读取请求对应的累计数据请求量值0M进行求和,得到当前累计数据请求量为300M,此时以当前累计数据请求量来更新累计数据请求量,以得到更新后的累计数据请求量(即300M)。
之后用累计数据请求量300M与服务器的当前可用内存值1G进行比较,判断结果为累计数据请求量为300M小于服务器的当前可用内存1G。此时再获取线程2的数据请求量例如为400M与上一数据读取请求对应的累计数据请求量值300M进行求和,得到当前累计数据请求量为700M,此时以当前累计数据请求量来更新累计数据请求量,以得到更新后的累计数据请求量(即700M)。
然后用累计数据请求量700M与服务器的当前可用内存值1G进行比较,判断结果为累计数据请求量为700M小于服务器的当前可用内存1G。此时再获取线程3的数据请求量例如为400M与上一数据读取请求对应的累计数据请求量值700M进行求和,得到当前累计数据请求量为1100M,此时以当前累计数据请求量来更新累计数据请求量,以得到更新后的累计数据请求量(即1100M)。更新后的累计数据请求量1100M是超出了服务器的当前可用内存值1G(1G=1024M),此时不再继续从线程池中继续取出下一排序位的线程。
此时,当前已获取的数据读取请求具体为线程1对应的数据读取请求、线程2对应的数据读取请求、线程3对应的数据读取请求,且第一请求总个数为3。通过这一筛选方式,能有效避免内存溢出。
S140、将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求。
在本实施例中,例如当前时间段(如2018年1月1日上午的9:00-9:01)加入服务器的线程池中的数据读取请求一共有10个,此时取出前3个线程计算当前累计数据请求量已经超出服务器的当前可用内存值,此时将前3个线程对应的数据读取请求组成当前可服务数据读取请求集合,将后面7个并发的线程对应的数据读取请求组成当前不可服务数据读取请求集合。
S150、生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放。
在本实施例中,例如各客户端向服务器发送的数据读取请求对应的请求参数之格式为{请求次数,请求数据类型列表,数据时间范围},则服务器根据该请求参数反馈的服务器响应数据格式为{时间序列片段,{请求次数,请求数据类型列表,数据时间范围,随机等待时间}}。其中,由于服务器此次未提供内存空间给各当前不可服务数据读取请求对应的线程来使用,此次服务器根据当前不可服务数据读取请求相应的时间序列片段为空值,随机等待时间则为服务器随机生成例如1-10秒。更具体的,随机等待时间=1秒*当前未能处理的线程数*(0到1之间的随机数),例如线程4-线程10对应的数据读取请求均是当前不可服务数据读取请求,此时将当前未能处理的线程数等于7,股根据上述公式可知服务器生产与各当前不可服务数据读取请求对应的服务器响应数据时其中的随机等待时间=7*(0到1之间的随机数)。
由于此时服务器释放了各当前不可服务数据读取请求对应的线程,各当前不可服务数据读取请求对应的客户端则与服务器断开通讯连接,也就是这一随机等待时间内不会一直占用服务器的线程池和内存资源,且客户端本地也是不用提供一定的系统资源来维持与服务器的连接,这就可以节约服务器和客户端这两端的系统资源。
各当前不可服务数据读取请求对应的客户端在接收到对应的服务器响应数据,可获知对应的随机等待时间,则在等待所述随机等待时间后,重新向服务器发送数据读取请求,此时此次数据读取请求对应的参数中,请求次数是在上一次的请求次数的基础上加1。
S160、获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值。
在本实施例中,例如上述举例的线程1-线程3均为当前可服务数据读取请求对应的线程,此时分别获取线程1对应的数据请求量M1、线程2对应的数据请求量M2、线程3对应的数据请求量M3,由于M1+M2+M3是已经超出了服务器的当前可用内存值。此时会根据预先设置的内存空间分配策略分别对上述3个线程分别分配对应的内存分配值。
在一实施例中,步骤S160包括:
获取各当前可服务数据读取请求对应的目标用户端,及各目标用户端对应的历史数据读取速率;
将各目标用户端对应的历史数据读取速率按照降序排序,得到各目标用户端对应的当前服务排序值;
将当前服务排序值为当前最大值的目标用户端删除,将剩余的各目标用户端对应的数据请求量进行求和得到当前第一服务内存值;
若当前第一服务内存值未超出服务器的当前可用内存值,将与剩余的各目标用户端对应的内存分配值设置为对应的数据请求量;
将服务器的当前可用内存值与当前第一服务内存值求差以得到当前第一内存剩余值,将当前服务排序值为当前最大值的目标用户端对应的内存分配值设置为当前第一内存剩余值。
在本实施例中,例如线程1对应的目标用户端1,目标用户端1在服务器中历次读取数据速率的平均值记为第一历史数据读取速率(如1M/s);线程2对应的目标用户端2,目标用户端2在服务器中历次读取数据速率的平均值记为第二历史数据读取速率(如2M/s);线程3对应的目标用户端3,目标用户端3在服务器中历次读取数据速率的平均值记为第三历史数据读取速率(如3M/s)。
由于第三历史数据读取速率大于第二历史数据读取速率,第二历史数据读取速率大于第一历史数据读取速率,此时降序排序为第三历史数据读取速率、第二历史数据读取速率、第一历史数据读取速率,目标用户端1对应的当前服务排序值为3,目标用户端2对应的当前服务排序值为2,目标用户端3对应的当前服务排序值为1。
由于线程1-线程3各自对应的数据请求量求和后,是首次超过服务器的当前可用内存值,有可能的原因是线程3突然急剧接近服务器的当前可用内存值,但是线程3对应的用户端3的历史数据读取速率相较于用户端1的历史数据读取速率和用户端2的历史数据读取速率,线程3对应的用户端3的历史数据读取速率为最大值。此时需要进一步核实若将线程3提供完整数据读取服务所需的内存空间后,是否还有剩余的内存空间继续为线程2和线程1提供数据读取服务,此时可以先将当前服务排序值为当前最大值的目标用户端删除,将剩余的各目标用户端对应的数据请求量进行求和得到当前第一服务内存值,该第一服务内存值在此实例中是线程3(线程3对应的目标用户端3)相应的数据请求量与线程2相应的数据请求量求和而得到。例如线程3对应的数据请求量为900M,线程2对应的数据请求量为50M,此时当前第一服务内存值为950M,其是小于服务器的当前可用内存值1G。
线程3对应的数据请求量为900M,线程2对应的数据请求量为50M,当前第一服务内存值为950M,其是小于服务器的当前可用内存值1G。此时对线程3分配900M的内存分配值,对线程2分配50M的内存分配值。
通过上述方式,服务器在针对目标用户端3的数据读取请求能一次反馈全部数据,而且针对目标用户端2的数据读取请求能一次反馈全部数据,但针对目标用户端1的数据读取请求能一次反馈部分数据(该部分数据的数据量大小为当前第一内存剩余值)。
除了上述内存空间分配策略的第一具体实施例,还可以不考虑各目标用户端对应的历史数据读取速率,直接按照线程进入线程池的先后顺序来对各当前可服务数据读取请求对应的目标用户端来分配内存分配值。例如目标用户端1对应的线程1之数据请求量为300M、且线程1是第1位进入线程池的,故此时先分配取值为300M的内存分配值至目标用户端1;之后目标用户端2对应的线程2之数据请求量为50M、且线程2是第2位进入线程池的,故此时先分配取值为50M的内存分配值至目标用户端2;之后目标用户端3对应的线程3之数据请求量为900M、且线程3是第3位进入线程池的,故此时先分配取值为674M(1024M-300M-50M=674M)的内存分配值至目标用户端3。
S170、判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量。
在本实施例中,判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,是为了判断是否有目标用户端的数据读取请求并未完全响应,服务器此次只是提供了满足其部分需求的内存空间值以实现部分请求数据的传输。若有目标用户端的数据读取请求并未完全响应,则需执行后续的处理步骤。
S180、若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
在本实施例中,若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,表示有目标用户端的数据读取请求并未完全响应,服务器此次只是提供了满足其部分需求的内存空间值以实现部分请求数据的传输。
服务器根据目标用户端的数据读取请求反馈的服务器响应数据格式为{时间序列片段,{请求次数,请求数据类型列表,数据时间范围,随机等待时间}},其中,由于服务器此次未提供足够的内存空间给目标用户端对应的线程来使用,此次时间序列片段不为空值,随机等待时间则为服务器随机生成例如1-10秒。
例如目标用户端3对应的线程3之数据请求量为900M、且线程3是第3位进入线程池的,服务器对其设置674M的内存分配值后,初次反馈的时间序列片段的大小为674M。而且目标用户端3在等待随机等待时间之后再次发出数据读取请求,直至成功获取到剩余的226M数据。目标用户端3在分批接收到了总共900M的反馈数据后,在本地进行时间序列片段的拼接,即可渲染到目标用户端3的用户界面上进行显示。
在一实施例中,步骤S170之后还包括:
若有当前可服务数据读取请求对应的内存分配值等于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
在本实施例中,有目标用户端的数据读取请求已完全响应,服务器此次提供了满足其全部需求的内存空间值以实现全部请求数据的传输,服务器根据目标用户端的数据读取请求反馈的服务器响应数据格式为{时间序列片段,{请求次数,请求数据类型列表,数据时间范围,随机等待时间}}。其中,由于服务器此次已提供足够的内存空间给目标用户端对应的线程来使用,此次时间序列片段不为空值,随机等待时间则为空值(表示不用等待随机等待时间后再次请求服务器)。
在一实施例中,所述若有当前可服务数据读取请求对应的内存分配值等于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端之后,还包括:
若检测到已将服务器响应数据发送至对应的目标用户端,将各服务器响应数据对应的内存进行释放,以更新服务器的当前可用内存值,返回执行判断是否检测到用户端发送的数据读取请求的步骤。
在本实施例中,例如线程1对应的数据请求量为300M,服务器对其分配的内存分配值为300M;线程2对应的数据请求量为400M,服务器对其分配的内存分配值为400M;线程3对应的数据请求量为900M,服务器对其分配的内存分配值为324M,在分配完线程1-线程3各自对应给的内存分配值之后,服务器的当前可用内存值更新为0M。此时上述三个线程中,若检测到其中一个或多个线程对应的服务器响应数据发送至对应的目标用户端,则获取该线程对应的内存分配值以叠加至为之前已降至0M的服务器的当前可用内存值,例如线程1和线程2对应的服务器响应数据分别发送至对应的目标用户端,此时将服务器的当前可用内存值更新至700M(300M+400M=700M),之后再返回执行判断是否检测到用户端发送的数据读取请求的步骤。
该方法实现了当服务器中接收了大量并发请求时,服务器不会出现内存溢出导致不可用的问题,而且能稳定响应请求,提高了服务器的稳定性。
本发明实施例还提供一种时间序列数据分段构建装置,该时间序列数据分段构建装置用于执行前述时间序列数据分段构建方法的任一实施例。具体地,请参阅图3,图3是本发明实施例提供的时间序列数据分段构建装置的示意性框图。
如图3所示,时间序列数据分段构建装置100包括:读取请求检测单元110、请求参数获取单元120、请求筛选单元130、集合分类单元140、响应数据生成单元150、内存分配单元160、内存判断单元170、第一响应数据发送单元180。
读取请求检测单元110,用于判断是否检测到用户端发送的数据读取请求。
请求参数获取单元120,用于若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量。
在一实施例中,请求参数获取单元120包括:
请求存储单元,用于将各用户端的数据读取请求根据请求接收时间依序存储于线程池中;其中,每一数据读取请求对应启动一个线程;
请求解析单元,用于根据线程池中存储的数据读取请求,解析获取数据读取请求对应的请求总个数,以及解析获取各数据读取请求对应的数据请求量;其中,所述数据请求量为数据待占用内存的空间值;所述数据读取请求中包括请求次数、请求数据类型列表、及数据时间范围。
在一实施例中,请求解析单元包括:
哈希表获取单元,用于获取预先存储的哈希表;其中,所述哈希表中存储有多种数据类别,和与多种数据类别中每一数据类别一一对应的单条数据大小值;
数据类别获取单元,用于获取各数据读取请求分别对应的数据类别;
请求量计算单元,用于在所述哈希表中查询获取各数据类别对应的单条数据大小值,以对应计算各数据读取请求对应的数据请求量。需要强调的是,为进一步保证上述数据请求量的私密和安全性,上述数据请求量还可以存储于一区块链的节点中。
请求筛选单元130,用于按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0。
在一实施例中,请求筛选单元130包括:
初始化单元,用于将累计数据请求量值的初始值置为0,将线程池中初始获被取的线程编号n的取值设置为1;
数据请求量参数获取单元,用于获取当前的线程池中排序号为n的线程对应的数据请求量,并获取上一数据读取请求对应的累计数据请求量;
线程阻塞单元,用于将线程池中排序号为n之后的并行线程进行阻塞;
请求量求和单元,用于将排序号为n的线程对应的数据请求量与上一数据读取请求对应的累计数据请求量求和,得到排序号为n的线程对应的当前累计数据请求量;
请求量更新单元,用于以当前累计数据请求量对累计数据请求量进行更新,得到更新后的累计数据请求量;
请求量比较单元,用于判断排序号为n的线程对应的累计数据请求量是否超出服务器的当前可用内存值;
排序号自增单元,用于若排序号为n的线程对应的累计数据请求量未超出服务器的当前可用内存值,将排序号n的值加一,以得到更新后的排序号n,将线程池中所有线程解除阻塞,返回执行获取当前的线程池中排序号为n的线程对应的数据请求量,并获取上一数据读取请求对应的累计数据请求量的步骤;
第一请求总个数获取单元,用于若排序号为n的线程对应的当前累计数据请求量超出服务器的当前可用内存值,获取当前的排序号n以作为第一请求总个数,并获取当前已获取的数据读取请求对应的线程。
集合分类单元140,用于将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求。
响应数据生成单元150,用于生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放。
内存分配单元160,用于获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值。
在一实施例中,内存分配单元160包括:
历史数据读取速率获取单元,用于获取各当前可服务数据读取请求对应的目标用户端,及各目标用户端对应的历史数据读取速率;
速率排序单元,用于将各目标用户端对应的历史数据读取速率按照降序排序,得到各目标用户端对应的当前服务排序值;
当前第一服务内存值获取单元,用于将当前服务排序值为当前最大值的目标用户端删除,将剩余的各目标用户端对应的数据请求量进行求和得到当前第一服务内存值;
数据请求量重置单元,用于若当前第一服务内存值未超出服务器的当前可用内存值,将与剩余的各目标用户端对应的内存分配值设置为对应的数据请求量;
当前第一内存剩余值获取单元,用于将服务器的当前可用内存值与当前第一服务内存值求差以得到当前第一内存剩余值,将当前服务排序值为当前最大值的目标用户端对应的内存分配值设置为当前第一内存剩余值。
内存判断单元170,用于判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量。
第一响应数据发送单元180,用于若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
在一实施例中,时间序列数据分段构建装置100还包括:
第二响应数据发送单元,用于若有当前可服务数据读取请求对应的内存分配值等于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
在一实施例中,时间序列数据分段构建装置100还包括:
当前可用内存值更新单元,用于若检测到已将服务器响应数据发送至对应的目标用户端,将各服务器响应数据对应的内存进行释放,以更新服务器的当前可用内存值,返回执行判断是否检测到用户端发送的数据读取请求的步骤。
该装置实现了当服务器中接收了大量并发请求时,服务器不会出现内存溢出导致不可用的问题,而且能稳定响应请求,提高了服务器的稳定性。
上述时间序列数据分段构建装置可以实现为计算机程序的形式,该计算机程序可以在如图4所示的计算机设备上运行。
请参阅图4,图4是本发明实施例提供的计算机设备的示意性框图。该计算机设备500是服务器,服务器可以是独立的服务器,也可以是多个服务器组成的服务器集群。
参阅图4,该计算机设备500包括通过系统总线501连接的处理器502、存储器和网络接口505,其中,存储器可以包括非易失性存储介质503和内存储器504。
该非易失性存储介质503可存储操作系统5031和计算机程序5032。该计算机程序5032被执行时,可使得处理器502执行时间序列数据分段构建方法。
该处理器502用于提供计算和控制能力,支撑整个计算机设备500的运行。
该内存储器504为非易失性存储介质503中的计算机程序5032的运行提供环境,该计算机程序5032被处理器502执行时,可使得处理器502执行时间序列数据分段构建方法。
该网络接口505用于进行网络通信,如提供数据信息的传输等。本领域技术人员可以理解,图4中示出的结构,仅仅是与本发明方案相关的部分结构的框图,并不构成对本发明方案所应用于其上的计算机设备500的限定,具体的计算机设备500可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
其中,所述处理器502用于运行存储在存储器中的计算机程序5032,以实现本发明实施例公开的时间序列数据分段构建方法。
本领域技术人员可以理解,图4中示出的计算机设备的实施例并不构成对计算机设备具体构成的限定,在其他实施例中,计算机设备可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。例如,在一些实施例中,计算机设备可以仅包括存储器及处理器,在这样的实施例中,存储器及处理器的结构及功能与图4所示实施例一致,在此不再赘述。
应当理解,在本发明实施例中,处理器502可以是中央处理单元(CentralProcessing Unit,CPU),该处理器502还可以是其他通用处理器、数字信号处理器(DigitalSignal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现成可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。其中,通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
在本发明的另一实施例中提供计算机可读存储介质。该计算机可读存储介质可以为非易失性的计算机可读存储介质。该计算机可读存储介质存储有计算机程序,其中计算机程序被处理器执行时实现本发明实施例公开的时间序列数据分段构建方法。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,上述描述的设备、装置和单元的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。
在本发明所提供的几个实施例中,应该理解到,所揭露的设备、装置和方法,可以通过其它的方式实现。例如,以上所描述的装置实施例仅仅是示意性的,例如,所述单元的划分,仅仅为逻辑功能划分,实际实现时可以有另外的划分方式,也可以将具有相同功能的单元集合成一个单元,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另外,所显示或讨论的相互之间的耦合或直接耦合或通信连接可以是通过一些接口、装置或单元的间接耦合或通信连接,也可以是电的,机械的或其它的形式连接。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本发明实施例方案的目的。
另外,在本发明各个实施例中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以是两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
本发明所指区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层等。所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分,或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-OnlyMemory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述,仅为本发明的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到各种等效的修改或替换,这些修改或替换都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应以权利要求的保护范围为准。
Claims (10)
1.一种时间序列数据分段构建方法,其特征在于,包括:
判断是否检测到用户端发送的数据读取请求;
若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量;
按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0;
将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求;
生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放;
获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值;
判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量;以及
若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
2.根据权利要求1所述的时间序列数据分段构建方法,其特征在于,所述数据请求量存储于区块链中,所述将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量,包括:
将各用户端的数据读取请求根据请求接收时间依序存储于线程池中;其中,每一数据读取请求对应启动一个线程;
根据线程池中存储的数据读取请求,解析获取数据读取请求对应的请求总个数,以及解析获取各数据读取请求对应的数据请求量;其中,所述数据请求量为数据待占用内存的空间值;所述数据读取请求中包括请求次数、请求数据类型列表、及数据时间范围。
3.根据权利要求2所述的时间序列数据分段构建方法,其特征在于,所述解析获取数据读取请求对应的请求总个数,以及解析获取各数据读取请求对应的数据请求量,包括:
获取预先存储的哈希表;其中,所述哈希表中存储有多种数据类别,和与多种数据类别中每一数据类别一一对应的单条数据大小值;
获取各数据读取请求分别对应的数据类别;
在所述哈希表中查询获取各数据类别对应的单条数据大小值,以对应计算各数据读取请求对应的数据请求量。
4.根据权利要求1所述的时间序列数据分段构建方法,其特征在于,所述按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数,包括:
将累计数据请求量值的初始值置为0,将线程池中初始获被取的线程编号n的取值设置为1;
获取当前的线程池中排序号为n的线程对应的数据请求量,并获取上一数据读取请求对应的累计数据请求量;
将线程池中排序号为n之后的并行线程进行阻塞;
将排序号为n的线程对应的数据请求量与上一数据读取请求对应的累计数据请求量求和,得到排序号为n的线程对应的当前累计数据请求量;
以当前累计数据请求量对累计数据请求量进行更新,得到更新后的累计数据请求量;
判断排序号为n的线程对应的累计数据请求量是否超出服务器的当前可用内存值;
若排序号为n的线程对应的累计数据请求量未超出服务器的当前可用内存值,将排序号n的值加一,以得到更新后的排序号n,将线程池中所有线程解除阻塞,返回执行获取当前的线程池中排序号为n的线程对应的数据请求量,并获取上一数据读取请求对应的累计数据请求量的步骤;
若排序号为n的线程对应的当前累计数据请求量超出服务器的当前可用内存值,获取当前的排序号n以作为第一请求总个数,并获取当前已获取的数据读取请求对应的线程。
5.根据权利要求1所述的时间序列数据分段构建方法,其特征在于,所述获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值,包括:
获取各当前可服务数据读取请求对应的目标用户端,及各目标用户端对应的历史数据读取速率;
将各目标用户端对应的历史数据读取速率按照降序排序,得到各目标用户端对应的当前服务排序值;
将当前服务排序值为当前最大值的目标用户端删除,将剩余的各目标用户端对应的数据请求量进行求和得到当前第一服务内存值;
若当前第一服务内存值未超出服务器的当前可用内存值,将与剩余的各目标用户端对应的内存分配值设置为对应的数据请求量;
将服务器的当前可用内存值与当前第一服务内存值求差以得到当前第一内存剩余值,将当前服务排序值为当前最大值的目标用户端对应的内存分配值设置为当前第一内存剩余值。
6.根据权利要求1所述的时间序列数据分段构建方法,其特征在于,所述判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量之后,还包括:
若有当前可服务数据读取请求对应的内存分配值等于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
7.根据权利要求6所述的时间序列数据分段构建方法,其特征在于,所述若有当前可服务数据读取请求对应的内存分配值等于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端之后,还包括:
若检测到已将服务器响应数据发送至对应的目标用户端,将各服务器响应数据对应的内存进行释放,以更新服务器的当前可用内存值,返回执行判断是否检测到用户端发送的数据读取请求的步骤。
8.一种时间序列数据分段构建装置,其特征在于,包括:
读取请求检测单元,用于判断是否检测到用户端发送的数据读取请求;
请求参数获取单元,用于若检测到用户端发送的数据读取请求,将各数据读取请求对应的线程加入线程池,获取数据读取请求对应的请求总个数以及各数据读取请求对应的数据请求量;
请求筛选单元,用于按照各数据读取请求对应的接收时间进行升序排序,按升序顺序依序获取各数据读取请求的数据请求量并求和,直至累计数据请求量超出服务器的当前可用内存值,获取当前已获取的数据读取请求以及对应的第一请求总个数;其中,所述累计数据请求量的初始值为0;
集合分类单元,用于将所接收到用户端的数据读取请求的组合作为当前请求集合,由当前已获取的数据读取请求组成当前可服务数据读取请求集合,将所述当前请求集合中删除当前可服务数据读取请求集合以作为当前不可服务数据读取请求集合;其中,当前不可服务数据读取请求集合包括一条或者多条当前不可服务数据读取请求,当前可服务数据读取请求集合中包括一条或者多条当前可服务数据读取请求;
响应数据生成单元,用于生成与各当前不可服务数据读取请求对应的服务器响应数据,发送各服务器响应数据至与各当前不可服务数据读取请求分别与对应的客户端,将各当前不可服务数据读取请求对应的线程从线程池中释放;
内存分配单元,用于获取各当前可服务数据读取请求对应的数据请求量,根据预先设置的内存空间分配策略获取各当前可服务数据读取请求对应的内存分配值;
内存判断单元,用于判断是否有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量;以及
第一响应数据发送单元,用于若有当前可服务数据读取请求对应的内存分配值小于当前可服务数据读取请求对应的数据请求量,根据该当前可服务数据读取请求对应的内存分配值发送对应的服务器响应数据至对应的目标用户端。
9.一种计算机设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述的时间序列数据分段构建方法。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序当被处理器执行时使所述处理器执行如权利要求1至7任一项所述的时间序列数据分段构建方法。
Priority Applications (2)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010351304.8A CN111638949A (zh) | 2020-04-28 | 2020-04-28 | 时间序列数据分段构建方法、装置及计算机设备 |
PCT/CN2020/103947 WO2021217916A1 (zh) | 2020-04-28 | 2020-07-24 | 时间序列数据分段构建方法、装置、计算机设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010351304.8A CN111638949A (zh) | 2020-04-28 | 2020-04-28 | 时间序列数据分段构建方法、装置及计算机设备 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111638949A true CN111638949A (zh) | 2020-09-08 |
Family
ID=72329861
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010351304.8A Pending CN111638949A (zh) | 2020-04-28 | 2020-04-28 | 时间序列数据分段构建方法、装置及计算机设备 |
Country Status (2)
Country | Link |
---|---|
CN (1) | CN111638949A (zh) |
WO (1) | WO2021217916A1 (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168056A (zh) * | 2022-09-02 | 2022-10-11 | 深圳华锐分布式技术股份有限公司 | 基于资源配置的信息处理方法、装置、设备及介质 |
CN117170821A (zh) * | 2023-11-01 | 2023-12-05 | 建信金融科技有限责任公司 | 一种业务处理方法、装置、电子设备及计算机可读介质 |
Families Citing this family (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114428680A (zh) * | 2021-12-23 | 2022-05-03 | 杭州贝嘟科技有限公司 | 服务数据的处理方法、处理系统、电子设备以及存储介质 |
CN116298737B (zh) * | 2023-05-24 | 2023-08-01 | 广东电网有限责任公司佛山供电局 | 一种开关柜放电监测系统、方法和设备 |
CN118260053B (zh) * | 2024-05-29 | 2024-08-27 | 山东海量信息技术研究院 | 异构计算系统的内存调度方法、异构计算系统和装置 |
Family Cites Families (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2007199811A (ja) * | 2006-01-24 | 2007-08-09 | Hitachi Ltd | プログラム制御方法、計算機およびプログラム制御プログラム |
CN102446139B (zh) * | 2011-11-14 | 2015-02-18 | 奇智软件(北京)有限公司 | 一种数据存储方法及装置 |
CN104408088B (zh) * | 2014-11-11 | 2020-06-19 | 奇安信科技集团股份有限公司 | 并发请求的控制方法及装置 |
CN108845869B (zh) * | 2018-05-31 | 2023-04-07 | 中国平安人寿保险股份有限公司 | 并发请求控制方法、装置、计算机设备和存储介质 |
CN109561133A (zh) * | 2018-10-23 | 2019-04-02 | 深圳壹账通智能科技有限公司 | 业务处理方法、装置、设备及计算机可读存储介质 |
US11748174B2 (en) * | 2019-10-02 | 2023-09-05 | Intel Corporation | Method for arbitration and access to hardware request ring structures in a concurrent environment |
-
2020
- 2020-04-28 CN CN202010351304.8A patent/CN111638949A/zh active Pending
- 2020-07-24 WO PCT/CN2020/103947 patent/WO2021217916A1/zh active Application Filing
Cited By (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115168056A (zh) * | 2022-09-02 | 2022-10-11 | 深圳华锐分布式技术股份有限公司 | 基于资源配置的信息处理方法、装置、设备及介质 |
CN115168056B (zh) * | 2022-09-02 | 2022-12-02 | 深圳华锐分布式技术股份有限公司 | 基于资源配置的信息处理方法、装置、设备及介质 |
CN117170821A (zh) * | 2023-11-01 | 2023-12-05 | 建信金融科技有限责任公司 | 一种业务处理方法、装置、电子设备及计算机可读介质 |
CN117170821B (zh) * | 2023-11-01 | 2024-02-09 | 建信金融科技有限责任公司 | 一种业务处理方法、装置、电子设备及计算机可读介质 |
Also Published As
Publication number | Publication date |
---|---|
WO2021217916A1 (zh) | 2021-11-04 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111638949A (zh) | 时间序列数据分段构建方法、装置及计算机设备 | |
CN108156236B (zh) | 业务请求处理方法、装置、计算机设备和存储介质 | |
CN109104336B (zh) | 服务请求处理方法、装置、计算机设备及存储介质 | |
CN108776934B (zh) | 分布式数据计算方法、装置、计算机设备及可读存储介质 | |
CN107798108B (zh) | 一种异步任务查询方法及设备 | |
CN111414373B (zh) | 一种共识方法和共识系统 | |
JP5664098B2 (ja) | 複合イベント分散装置、複合イベント分散方法および複合イベント分散プログラム | |
KR101826969B1 (ko) | 버스트 모드 제어 | |
US7698417B2 (en) | Optimized performance counter monitoring | |
CN107819797B (zh) | 访问请求处理方法和装置 | |
CN106230997B (zh) | 一种资源调度方法和装置 | |
US20200104177A1 (en) | Resource allocation system, management device, method, and program | |
US20200090096A1 (en) | Resource management system, management device, method, and program | |
CN109800204B (zh) | 数据分配方法及相关产品 | |
CN111736975A (zh) | 请求控制方法、装置、计算机设备及计算机可读存储介质 | |
CN111785346A (zh) | 处方订单派发方法、系统、装置和存储介质 | |
CN112685157B (zh) | 任务处理方法、装置、计算机设备及存储介质 | |
CN111259045B (zh) | 一种数据处理方法、装置、服务器及介质 | |
CN115277588B (zh) | 一种基于中台系统的熔断限流系统 | |
CN111858542B (zh) | 数据处理方法、装置、设备及计算机可读存储介质 | |
US20230049322A1 (en) | Information processing method, device, system, and computer-readable storage medium | |
CN113368494A (zh) | 云设备分配方法、装置、电子设备及存储介质 | |
CN110971697B (zh) | Redis单实例保护处理方法、装置、计算机设备及存储介质 | |
CN109062707B (zh) | 电子装置及其限制进程间通信的方法、存储介质 | |
CN104298561A (zh) | 一种资源分配方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |