CN116719646A - 热点数据处理方法、装置、电子装置和存储介质 - Google Patents

热点数据处理方法、装置、电子装置和存储介质 Download PDF

Info

Publication number
CN116719646A
CN116719646A CN202310995152.9A CN202310995152A CN116719646A CN 116719646 A CN116719646 A CN 116719646A CN 202310995152 A CN202310995152 A CN 202310995152A CN 116719646 A CN116719646 A CN 116719646A
Authority
CN
China
Prior art keywords
write
requests
data processing
waiting
request
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
Application number
CN202310995152.9A
Other languages
English (en)
Inventor
王刚
王新宇
王新根
杨运平
彭聪
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang Bangsheng Technology Co ltd
Original Assignee
Zhejiang Bangsheng Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Zhejiang Bangsheng Technology Co ltd filed Critical Zhejiang Bangsheng Technology Co ltd
Priority to CN202310995152.9A priority Critical patent/CN116719646A/zh
Publication of CN116719646A publication Critical patent/CN116719646A/zh
Pending legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2308Concurrency control
    • G06F16/2315Optimistic concurrency control
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/23Updating
    • G06F16/2379Updates performed during online database operations; commit processing
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/46Multiprogramming arrangements
    • G06F9/52Program synchronisation; Mutual exclusion, e.g. by means of semaphores
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F2209/00Indexing scheme relating to G06F9/00
    • G06F2209/50Indexing scheme relating to G06F9/50
    • G06F2209/5018Thread allocation
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本申请涉及一种热点数据处理方法、装置、电子装置和存储介质,其中,该热点数据处理方法包括:获取目标写批次中的多个写入请求;基于每一写入请求的标识信息,将多个写入请求分别分配至N个等待队列中;通过N个等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。通过本申请,解决了多线程流数据处理的吞吐量和响应速率低的问题,减少了写入冲突的产生,提升了数据库的吞吐量和响应速率。

Description

热点数据处理方法、装置、电子装置和存储介质
技术领域
本申请涉及数据处理技术领域,特别是涉及一种热点数据处理方法、装置、电子装置和存储介质。
背景技术
在对金融风险进行评估的过程中,通常会涉及对流数据的处理,在风险评估中,用户的高频交易记录,其反应在流计算的风控指标中通常为热点数据。对热点数据的更新操作在没有同步机制时,有极大可能会产生数据冲突进而导致写数据丢失,影响数据处理系统的性能。
当多线程并发更新此类热点数据对应的风控指标时,为了避免数据丢失,通常采用锁机制,然而采用锁机制来防止数据丢失,则会因为频繁加锁而影响数据处理系统整体的吞吐量和响应速率。
针对相关技术中存在多线程流数据处理的吞吐量和响应速率低的问题,目前还没有提出有效的解决方案。
发明内容
在本实施例中提供了一种热点数据处理方法、装置、电子装置和存储介质,以解决相关技术中多线程流数据处理的吞吐量和响应速率低的问题。
第一个方面,在本实施例中提供了一种热点数据处理方法,所述方法应用于数据管理服务端,所述数据管理服务端包括多个等待队列,每一等待队列绑定有对应的数据处理线程,所述方法包括:
获取目标写批次中的多个写入请求;
基于每一写入请求的标识信息,将多个所述写入请求分别分配至N个所述等待队列中;
通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。
在其中的一些实施例中,在所述获取目标写批次中的多个写入请求之前,还包括:
获取流计算节点发送的多个写入操作请求;
将多个所述写入操作请求转换为至少两个写批次,每一写批次包括至少两个所述写入请求;
所述目标写批次为至少两个写批次中的任一写批次。
在其中的一些实施例中,在基于每一写入请求的标识信息,将多个所述写入请求分别分配至N个所述等待队列中之后,还包括:
设置条件变量;
将所述条件变量添加至每一等待队列的写入请求之后;
在所述通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理之后,还包括:
根据所述条件变量确定对应等待队列中写入请求的处理进度。
在其中的一些实施例中,所述根据所述条件变量确定对应等待队列中写入请求的处理进度之后,还包括:
基于N个所述等待队列中写入请求的处理进度,确定所述目标写批次中写入请求的处理进度。
在其中的一些实施例中,所述通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理,包括:
通过目标数据处理线程执行以下操作:
基于写入请求的写入顺序,依次地读取目标等待队列中的写入请求,直至读取到所述条件变量,所述目标等待队列为N个所述等待队列中的任一等待队列,所述目标数据处理线程为所述目标等待队列对应的数据处理线程;
基于读取的多个写入请求的数据值,对所述目标等待队列中的写入请求进行压缩,得到压缩后的写入请求;
将所述压缩后的写入请求中的数据写入数据库。
在其中的一些实施例中,所述基于读取的多个写入请求的数据值,对所述目标等待队列中的写入请求进行压缩,得到压缩后的写入请求,包括:
基于连续多个写入请求的数据值之和,对相应的多个写入请求中的数据进行合并,得到压缩后的写入请求。
在其中的一些实施例中,所述标识信息包括写入请求的主键值。
第二个方面,在本实施例中提供了一种热点数据处理装置,所述装置应用于数据管理服务端,所述数据管理服务端包括多个等待队列,每一等待队列绑定有对应的数据处理线程,所述装置包括:
获取模块,用于获取目标写批次中的多个写入请求;
请求分配模块,用于基于每一写入请求的标识信息,将多个所述写入请求分别分配至N个所述等待队列中;
请求处理模块,用于通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。
第三个方面,在本实施例中提供了一种电子装置,包括存储器、处理器以及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述第一个方面所述的热点数据处理方法。
第四个方面,在本实施例中提供了一种存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述第一个方面所述的热点数据处理方法。
与相关技术相比,在本实施例中提供的热点数据处理方法,通过获取目标写批次中的多个写入请求,并根据写入请求的标识信息,将多个写入请求分配至N个等待队列中,从而使相同标识信息的写入请求分配至同一等待对列中,其中,每一等待队列绑定有对应的数据处理线程,进而通过每一等待队列对应的数据处理线程对相应等待队列中的写入请求进行处理,使每一数据处理线程只处理相同标识信息对应的写入请求,有效地避免了热点数据同时通过多个线程进行数据更新时,产生的写入冲突,并且,通过将多个写入请求分配至多个等待队列中,每一等待队列通过单一数据线程进行处理,进而在多线程的流数据计算过程中,无需通过锁机制来防止数据冲突和丢失,进一步地提高了多线程流数据处理的吞吐量和响应速率。
本申请的一个或多个实施例的细节在以下附图和描述中提出,以使本申请的其他特征、目的和优点更加简明易懂。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是本申请实施例提供的一种热点数据处理方法的应用场景示意图;
图2是本申请实施例提供的一种热点数据处理方法的流程图;
图3是本申请实施例提供的一种写入请求压缩示意图;
图4是本申请实施例提供的另一种写入请求压缩示意图;
图5是本申请实施例提供的一种热点数据处理方法的实施例流程图;
图6是本申请实施例提供的一种写入请求信息示意图;
图7是本申请实施例提供的一种写入请求分配示意图;
图8是本申请实施例提供的热点数据处理装置的结构框图;
图9是本申请实施例提供的一种计算机设备内部结构图。
具体实施方式
为更清楚地理解本申请的目的、技术方案和优点,下面结合附图和实施例,对本申请进行了描述和说明。
除另作定义外,本申请所涉及的技术术语或者科学术语应具有本申请所属技术领域具备一般技能的人所理解的一般含义。在本申请中的“一”、“一个”、“一种”、“该”、“这些”等类似的词并不表示数量上的限制,它们可以是单数或者复数。在本申请中所涉及的术语“包括”、“包含”、“具有”及其任何变体,其目的是涵盖不排他的包含;例如,包含一系列步骤或模块(单元)的过程、方法和系统、产品或设备并未限定于列出的步骤或模块(单元),而可包括未列出的步骤或模块(单元),或者可包括这些过程、方法、产品或设备固有的其他步骤或模块(单元)。在本申请中所涉及的“连接”、“相连”、“耦接”等类似的词语并不限定于物理的或机械连接,而可以包括电气连接,无论是直接连接还是间接连接。在本申请中所涉及的“多个”是指两个或两个以上。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。通常情况下,字符“/”表示前后关联的对象是一种“或”的关系。在本申请中所涉及的术语“第一”、“第二”、“第三”等,只是对相似对象进行区分,并不代表针对对象的特定排序。
本申请实施例提供的热点数据处理方法,可以应用于如图1所示的应用场景中,图1是本申请实施例提供的一种热点数据处理方法的应用场景示意图,如图1所示,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他网络服务器上。其中,终端102可以但不限于是各种个人计算机、笔记本电脑、智能手机、平板电脑、物联网设备和便携式可穿戴设备。服务器104可以用独立的服务器或者是多个服务器组成的服务器集群来实现。
在金融风险领域的风险控制和分析时,通常会涉及对流数据的处理,在风险评估中,用户的高频交易记录,其反应在流计算的风控指标中通常为热点数据。对热点数据的更新操作在没有同步机制时,有极大可能会产生数据冲突进而导致写数据丢失,影响数据处理系统的性能。
当多线程并发更新此类热点数据对应的风控指标时,为了避免数据丢失,通常采用锁机制,然而采用锁机制来防止数据丢失,则会因为频繁加锁而影响数据处理系统整体的吞吐量和响应速率。
因此,如何提高多线程流数据处理的吞吐量和响应速率,是一个需要解决的问题。
在本实施例中提供了一种热点数据处理方法,图2是本申请实施例提供的一种热点数据处理方法的流程图,该方法可以应用于数据管理服务端,该数据管理服务端可以是基于数据库构建的能够接受分布式场景下多个流计算节点的读写请求,该数据管理服务端包括多个等待队列,每一等待队列绑定有对应的数据处理线程,该数据管理服务端可以是电子装置,可选的,电子装置可以是服务器,也可以是终端设备,但本申请不限于此。具体的,如图2所示,该流程包括如下步骤:
步骤S201,获取目标写批次中的多个写入请求。
示例性地,数据管理服务端初始化时创建若干个等待队列,每一等待队列用于承载写入请求,并为每个等待队列绑定一个数据处理线程,用于执行将等待队列中的写入请求应用到数据库的任务。
数据管理服务端获取目标写批次中的多个写入请求,其中,写入请求可以是对热点数据的新增、修改或删除等操作。
步骤S202,基于每一写入请求的标识信息,将多个写入请求分别分配至N个等待队列中。
进一步地,不同的写入请求可以是对不同类型的热点数据的操作,写如请求的标识信息可以用于标识写入请求的类型。
根据每一写入请求的标识信息,将多个写入请求分别分配至N个等待队列中,从而使同一标识信息对应的写入请求分配至同一个等待队列中,其中,N为大于或等于1的正整数。
步骤S203,通过N个等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。
进一步地,通过N个等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理,具体的,通过每一等待队列绑定的数据处理线程,将相应的等待队列中的写入请求写入数据库。
在上述实现过程中,根据根据写入请求的标识信息,将多个写入请求分配至N个等待队列中,从而使相同标识信息的写入请求分配至同一等待对列中,其中,每一等待队列绑定有对应的数据处理线程,进而通过每一等待队列对应的数据处理线程对相应等待队列中的写入请求进行处理,使每一数据处理线程只处理相同标识信息对应的写入请求,有效地避免了热点数据同时通过多个线程进行数据更新时,产生的写入冲突,并且,通过将多个写入请求分配至多个等待队列中,每一等待队列通过单一数据线程进行处理,进而在多线程的流数据计算过程中,无需通过锁机制来防止数据冲突和丢失,进一步地提高了多线程流数据处理的吞吐量和响应速率。
在其中的一些实施例中,在获取目标写批次中的多个写入请求之前,还可以包括以下步骤:
步骤1:获取流计算节点发送的多个写入操作请求。
步骤2:将多个写入操作请求转换为至少两个写批次,每一写批次包括至少两个写入请求,其中,目标写批次为至少两个写批次中的任一写批次。
示例性地,数据管理服务端接收多个流计算节点发送的多个写入操作请求,进一步地,将多个写入请求转换为一系列的写批次,该系列至少包括两个写批次,每一写批次中包括至少两个写入请求,进而可以将该系列中的任一写批次确定为目标写批次。
需要说明的是,在本申请实施例中一系列的写批次的数量可以根据写入操作请求的数量进行适应性调整,在此不做限制。
在上述实现过程中,将多个写入操作请求转化为多个写批次,从而将多个写入操作请求分批次地进行处理,从而有效地避免将热点数据集中处理而产生冲突,减少了流计算过程中热点数据的冲突。
在其中的一些实施例中,在基于每一写入请求的标识信息,将多个写入请求分别分配至N个等待队列中之后,还可以包括以下步骤:
步骤1:设置条件变量。
步骤2:将条件变量添加至每一等待队列的写入请求之后。
在通过N个等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理之后,还可以包括以下步骤:根据条件变量确定对应等待队列中写入请求的处理进度。
示例性地,可以根据目标写批次中的写入请求被分配到的等待队列的数量设置条件变量,也就是说,可以根据N确定条件变量的初始值,即条件变量的初始值等于N。
具体的,若目标写批次中的写入请求被分配到的等待队列的数量为3,则设置初始值为3的条件变量,并将创建的3条件变量个分别添加至N个等待队列中的写入请求之后。
进一步地,根据每一等待队列的条件变量确定相应等待队列中的写入请求的处理进度,具体的,当数据处理线程在对相应的等待队列中的写入请求进行处理时,若读取到该条件变量,则表示目标写批次在相应等待队列中写入请求处理完成,此时的处理进度为处理完成,对应的该数据处理线程停止对处理完成的等待队列中的写入请求进行数据处理。若未读取到该条件变量,则表示目标写批次在相应等待队列中写入请求处理未完成,此时的处理进度为处理未完成。
在上述实现过程中,为每一等待队列分配目标写批次对应的条件变量,从而通过条件变量确定相应等待队列中的写入请求是否处理完成,进而实现每一等待队列中写入请求处理进度的监控。
在其中的一些实施例中,根据条件变量确定对应等待队列中写入请求的处理进度之后,还可以包括以下步骤:基于N个等待队列中写入请求的处理进度,确定目标写批次中写入请求的处理进度。
示例性地,根据每一等待队列中的条件变量确定出相应的等待队列中写入请求的处理进度之后,还可以根据N个等待队列中写入请求的处理进度,确定目标写批次中所有写入请求的处理进度。
具体的,该条件变量可以是Java语言实现中为初始值为3的CountDownLatch,即调用3次countDown方法后,await方法才能从阻塞状态下返回,在目标写批次的所有写入请求被分配完成后,向所有被分配该写入批次的等待队列中加入该批次的条件变量,并在完成后调用await方法等待写入请求处理完成,即在读取到3次该条件变量后,表示对应的3个等待队列中的写入请求处理完成,进而目标写批次的所有写入请求被处理完成。
在上述实现过程中,根据N个等待队列中写入请求的处理进度,确定目标写批次中所有写入请求的处理进度,从而表示其对应的写入请求批次分配到当前等待队列的任务已被执行完毕。
在其中的一些实施例中,通过N个等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理,可以包括以下步骤:
通过目标数据处理线程执行以下操作:
步骤1:基于写入请求的写入顺序,依次地读取目标等待队列中的写入请求,直至读取到条件变量,目标等待队列为N个等待队列中的任一等待队列,目标数据处理线程为目标等待队列对应的数据处理线程。
步骤2:基于读取的多个写入请求的数据值,对目标等待队列中的写入请求进行压缩,得到压缩后的写入请求。
步骤3:将压缩后的写入请求中的数据写入数据库。
示例性地,将N个等待队列中的任一等待队列确定为目标等待队列,进而将目标等待队列对应的数据处理线程确定为目标数据处理线程。
具体的,目标数据处理线程在对目标等待队列中的写入请求进行处理时,可以根据目标等待队列中写入请求的写入顺序,依次地读取目标等待队列中的写入请求,直至读取到目标等待队列中的条件变量为止,即目标数据处理线程读取完目标写批次在目标等待队列中的所有写入请求。
作为一种示例,目标数据处理线程在读取目标等待队列中的写入请求时,可以从队列中阻塞地取出相应的写入请求。
进一步地,根据读取的多个写入请求的数据值,对目标等待队列中的写入请求进行压缩,得到压缩后的写入请求。
进一步地,将目标等待队列中压缩后的写入请求中的数据写入数据库,即实现对数据的更新。
在上述实现过程中,根据目标等待队列中写入请求的写入顺序,依次读取目标等待队列中的写入请求,直至目标等待队列中的写入请求读取完成,并根据多个写入请求的数据值对写入请求进行压缩,进而将压缩后的写入请求中的数据写入数据库,从而在不影响最终写入结果的同时减少了写入请求的数量,提高了数据写入效率。
在其中的一些实施例中,基于读取的多个写入请求的数据值,对目标等待队列中的写入请求进行压缩,得到压缩后的写入请求,包括:
基于连续多个写入请求的数据值之和,对相应的多个写入请求中的数据进行合并,得到压缩后的写入请求。
示例性地,若连续n个写入请求的数据值之和等于第a个写入请求中的数据值,则将该n个写入请求进行合拼,使合并后的写入请求的数据值等于第a个写入请求中的数据值,即可以将n个写入请求中除第a个写入请求之外的写入请求删除,仅保留第a个写入请求,其中,第a个写入请求为n个写入请求中的任一写入请求。
图3是本申请实施例提供的一种写入请求压缩示意图,如图3所示,在目标等待队列中写入请求对应的数据依次为:b2-CV、+1、b1-CV、1000、+1、-1,其中,1000、+1、-1三个数据之和为1000,则对该三个数据对应的写入请求进行压缩,使该三个写入请求压缩后仅保留1000对应的写入请求,进而压缩后的写入请求为:b2-CV、+1、b1-CV、1000对应的请求,进而将b2-CV、+1、b1-CV、1000分别写入数据库,即多个写入批次对一个热点主键值的操作可以被聚合为一个压缩写结果。
若连续n个写入请求的数据值之和等于零,则将n个写入请求都删除,使压缩后的无写入请求。
图4是本申请实施例提供的另一种写入请求压缩示意图,如图4所示,在目标等待队列中写入请求对应的数据依次为:b2-CV、b1-CV、-2、+1、+1,其中,-2、+1、+1三个数据之和为零,则将该三个数据对应的写入请求进行删除,从而使压缩后的写入请求为:b2-CV、b1-CV,并将b2-CV、b1-CV写入数据库,即写压缩的结果如逻辑上仍等于原值,则可以直接不进行数据库写入。
需要说明的是,本申请实施例中分别以上述两种压缩方式为例进行说明,在实际应用中,目标等待队列可以同时采用上述两种压缩方式,在此不做限制。
在上述实现过程中,根据连续多个写入请求的数据值之和对相应的多个数据请求进行压缩,从而有效地确保了压缩后的写入请求的结果与压缩前的结果一致,进而保证了数据的一致性的同时减少了写入请求的写入数量,提高了数据写入效率。
在其中的一些实施例中,标识信息包括写入请求的主键值。
示例性地,标识信息可以包括写入请求的主键值,每一类型的写入请求对应的主键值相同,可以根据写入请求的主键值将同一类型的写入请求分配至同一等待队列中。
在上述实现过程中,标识信息包括写入请求的主键值,从而可以根据写入请求的主键值,对目标写批次中的写入请求进行分配,从而将主键值相同的写入请求分配至同一等待队列中。
在本实施例中还提供了一种热点数据处理方法的实施例。图5是本申请实施例提供的一种热点数据处理方法的实施例流程图,如图5所示,该流程包括如下步骤:
步骤S501,数据管理服务端初始化时创建多个等待队列,为每个等待队列绑定一个数据处理线程。
示例性地,数据管理服务端是基于数据库构建的,能够接收分布式场景下多个流计算节点的读写请求。
具体的,数据管理服务器底层的数据库可以是基于内存或非易失性存储的键值对形式存储引擎,如Redis,Aerospike,LevelDB等。
在数据管理服务端初始化时,创建多个等待队列,用于存储数据管理服务端接收的写入请求,并为每一等待队列绑定一个数据处理线程,用以执行将等待队列中的写入请求应用到数据库的任务。其中,等待队列保留了阻塞队列的特性,能够在不需要外部加锁的前提下保证请求存取的线程安全性。
步骤S502,数据管理服务端接收多个流计算节点发送的写入请求,并将写入请求转换为一系列写批次。
进一步地,数据管理服务端接收多个流计算节点发送的写入请求,并将接收的写入请求转换为一系列写批次。
图6是本申请实施例提供的一种写入请求信息示意图,如图6所示,数据管理服务端接收到9个写入请求,并将该9个写入请求转换至两个写入批次中,具体的,写入请求序号1至5对应的写入请求划分至写入批次b1中,写入请求序号6至9对应的写入请求划分至写入批次b2中。
步骤S503,数据管理服务端基于写入请求的主键值,将接收到的写入请求分配至各个等待队列中。
示例性地,每一写入请求包括对应的主键值,数据管理服务端可以根据写入请求的主键值按指定策略将每一写入请求分配至各个等待队列中,每一等待队列接收指定主键值对应的写入请求。
在将写入请求分配到等待队列中的指定策略可以根据系统的分布式架构进行对应扩展。对于单机系统可使用哈希函数等方法,对于数据管理服务端构建在多个节点的分布式系统应使用一致性哈希算法或负载平衡算法等方法。无论使用何种分配策略,都应使得对任意一个主键值,其对应的写入请求只会被分配到一个等待队列中。
图7是本申请实施例提供的一种写入请求分配示意图,如图7所示,等待队列包括q1、q2和q3,其中,等待队列q1用于接收主键值为k1对应的写入请求,等待队列q2用于接收主键值为k2对应的写入请求,等待队列q3用于接收主键值为k3和k4对应的写入请求。
进一步的,在对某一写批次的写请求进行分配时,创建初始值等于该写批次被分配入的等待队列数量,具体的,写入批次b1中包括k1、k2以及k3对应的写入请求,则写入批次b1中写入请求被分配的等待队列的数量为3,即写入请求批次b1对应的条件变量的初始值为3,写入批次b2中包括k1、k2以及k4对应的写入请求,则写入批次b2中写入请求被分配的等待队列的数量为3,即写入请求批次b2对应的条件变量的初始值为3。
在每一写批次的写入请求分配完成之后,在被分配的每一等待队列后加入该等待队列的条件变量,在Java语言实现中为初始值为3的CountDownLatch,即调用3次countDown方法后,await方法才能从阻塞状态下返回,即每一等待队列的条件变量用于确定相应等待队列的写入请求是否处理完成。
步骤S504,每一等待队列对应的数据处理线程对相应的等待队列中的写入请求进行数据处理。
数据处理线程对相应的等待队列中的写入请求进行数据处理时,每一数据处理线程重复进行以下动作:从等待队列中阻塞地取出元素,若该元素是写入请求,则根据写入请求的数据值进行数据压缩,若该元素是条件变量,则对其进行signal操作,以表示其对应的写入请求批次分配到当前等待队列的任务已被执行完毕。
具体的,若从等待队列中获取的元素为写入请求,则可以根据图3或图4所示的方式对写入请求进行压缩,并把压缩后的结果写入数据库;若从等待队列中获取的元素是条件变量,则调用其countDown方法以通知等待处,该写入批次分配到当前等待队列的所有写入请求已被处理完毕。
以KV形式的数据库的写入和修改过程可总体概括为:从数据库中读取数据的当前值,进而根据读取的数据对热点数据进行修改、新增或删除,进一步地,往数据库中写入更新后的值。实行写压缩可减少上述“读改写”的执行数量从而提升数据库吞吐量和响应速率。
在上述实现过程中,在对热点数据进行处理时,将数据路由至等待队列进行管理,通过分区后,同一个主键值对应的数据只会落在同一个线程上,对应的也只会有一个线程写入数据库,就能避免写冲突。此外,由于同一个主键值在一个等待队列上,如果这个主键值对应的数据是热点数据,则在这个队列里同时可能出现多次写请求,此时通过把多个写请求合并成一次,提高写入速度,同时通过条件变量同步对同步写入接口进行支持,使得同步sink方法依然可用,更好地支撑业务需求。
需要说明的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
在本实施例中还提供了一种热点数据处理装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。以下所使用的术语“模块”、“单元”、“子单元”等可以实现预定功能的软件和/或硬件的组合。尽管在以下实施例中所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。
图8是本申请实施例提供的热点数据处理装置的结构框图,装置应用于数据管理服务端,数据管理服务端包括多个等待队列,每一等待队列绑定有对应的数据处理线程,如图8所示,该装置包括:
获取模块801,用于获取目标写批次中的多个写入请求;
请求分配模块802,用于基于每一写入请求的标识信息,将多个写入请求分别分配至N个等待队列中;
请求处理模块803,用于通过N个等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。
在其中的一些实施例中,获取模块801具体用于:
获取流计算节点发送的多个写入操作请求;
将多个写入操作请求转换为至少两个写批次,每一写批次包括至少两个写入请求;
目标写批次为至少两个写批次中的任一写批次。
在其中的一些实施例中,请求分配模块802还用于:
设置条件变量;
将条件变量添加至每一等待队列的写入请求之后;
请求处理模块803还用于:根据条件变量确定对应等待队列中写入请求的处理进度。
在其中的一些实施例中,请求处理模块803还用于:基于N个等待队列中写入请求的处理进度,确定目标写批次中写入请求的处理进度。
在其中的一些实施例中,请求处理模块803具体用于:
通过目标数据处理线程执行以下操作:
基于写入请求的写入顺序,依次地读取目标等待队列中的写入请求,直至读取到条件变量,目标等待队列为N个等待队列中的任一等待队列,目标数据处理线程为目标等待队列对应的数据处理线程;
基于读取的多个写入请求的数据值,对目标等待队列中的写入请求进行压缩,得到压缩后的写入请求;
将压缩后的写入请求中的数据写入数据库。
在其中的一些实施例中,请求处理模块803具体用于:基于连续多个写入请求的数据值之和,对相应的多个写入请求中的数据进行合并,得到压缩后的写入请求。
在其中的一些实施例中,标识信息包括写入请求的主键值。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图9所示,图9是本申请实施例提供的一种计算机设备内部结构图,该计算机设备包括通过系统总线连接的处理器、存储器和网络接口。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储热点数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种热点数据处理方法。
本领域技术人员可以理解,图9中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random AccessMemory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(StaticRandom Access Memory,SRAM)或动态随机存取存储器(Dynamic Random AccessMemory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对专利保护范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。

Claims (10)

1.一种热点数据处理方法,其特征在于,所述方法应用于数据管理服务端,所述数据管理服务端包括多个等待队列,每一等待队列绑定有对应的数据处理线程,所述方法包括:
获取目标写批次中的多个写入请求;
基于每一写入请求的标识信息,将多个所述写入请求分别分配至N个所述等待队列中;
通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。
2.根据权利要求1所述的热点数据处理方法,其特征在于,在所述获取目标写批次中的多个写入请求之前,还包括:
获取流计算节点发送的多个写入操作请求;
将多个所述写入操作请求转换为至少两个写批次,每一写批次包括至少两个所述写入请求;
所述目标写批次为至少两个写批次中的任一写批次。
3.根据权利要求1所述的热点数据处理方法,其特征在于,
在基于每一写入请求的标识信息,将多个所述写入请求分别分配至N个所述等待队列中之后,还包括:
设置条件变量;
将所述条件变量添加至每一等待队列的写入请求之后;
在所述通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理之后,还包括:
根据所述条件变量确定对应等待队列中写入请求的处理进度。
4.根据权利要求3所述的热点数据处理方法,其特征在于,所述根据所述条件变量确定对应等待队列中写入请求的处理进度之后,还包括:
基于N个所述等待队列中写入请求的处理进度,确定所述目标写批次中写入请求的处理进度。
5.根据权利要求3所述的热点数据处理方法,其特征在于,所述通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理,包括:
通过目标数据处理线程执行以下操作:
基于写入请求的写入顺序,依次地读取目标等待队列中的写入请求,直至读取到所述条件变量,所述目标等待队列为N个所述等待队列中的任一等待队列,所述目标数据处理线程为所述目标等待队列对应的数据处理线程;
基于读取的多个写入请求的数据值,对所述目标等待队列中的写入请求进行压缩,得到压缩后的写入请求;
将所述压缩后的写入请求中的数据写入数据库。
6.根据权利要求5所述的热点数据处理方法,其特征在于,所述基于读取的多个写入请求的数据值,对所述目标等待队列中的写入请求进行压缩,得到压缩后的写入请求,包括:
基于连续多个写入请求的数据值之和,对相应的多个写入请求中的数据进行合并,得到压缩后的写入请求。
7.根据权利要求1所述的热点数据处理方法,其特征在于,所述标识信息包括写入请求的主键值。
8.一种热点数据处理装置,其特征在于,所述装置应用于数据管理服务端,所述数据管理服务端包括多个等待队列,每一等待队列绑定有对应的数据处理线程,所述装置包括:
获取模块,用于获取目标写批次中的多个写入请求;
请求分配模块,用于基于每一写入请求的标识信息,将多个所述写入请求分别分配至N个所述等待队列中;
请求处理模块,用于通过N个所述等待队列对应的数据处理线程,对相应的等待队列中的写入请求进行处理。
9.一种电子装置,包括存储器和处理器,其特征在于,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行权利要求1至权利要求7中任一项所述的热点数据处理方法。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至权利要求7中任一项所述的热点数据处理方法的步骤。
CN202310995152.9A 2023-08-09 2023-08-09 热点数据处理方法、装置、电子装置和存储介质 Pending CN116719646A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310995152.9A CN116719646A (zh) 2023-08-09 2023-08-09 热点数据处理方法、装置、电子装置和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310995152.9A CN116719646A (zh) 2023-08-09 2023-08-09 热点数据处理方法、装置、电子装置和存储介质

Publications (1)

Publication Number Publication Date
CN116719646A true CN116719646A (zh) 2023-09-08

Family

ID=87875521

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310995152.9A Pending CN116719646A (zh) 2023-08-09 2023-08-09 热点数据处理方法、装置、电子装置和存储介质

Country Status (1)

Country Link
CN (1) CN116719646A (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349032A (zh) * 2023-12-05 2024-01-05 城云科技(中国)有限公司 一种提高大语言模型吞吐量的方法及装置

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
CN106383864A (zh) * 2016-09-02 2017-02-08 北京百度网讯科技有限公司 一种时序数据库的查询请求处理方法和装置
CN109032775A (zh) * 2018-06-29 2018-12-18 武汉斗鱼网络科技有限公司 一种获取任务进度的方法、终端设备及存储介质
CN109407970A (zh) * 2018-09-12 2019-03-01 新华三技术有限公司成都分公司 读写请求处理方法、装置及电子设备
CN111522827A (zh) * 2020-04-08 2020-08-11 北京奇艺世纪科技有限公司 一种数据更新方法、装置和电子设备
CN115712620A (zh) * 2022-10-31 2023-02-24 浙江邦盛科技股份有限公司 一种键值存储的哈希键值数据请求合并方法
CN115774724A (zh) * 2022-09-28 2023-03-10 上海众源网络有限公司 并发请求的处理方法、装置、电子设备及存储介质

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5752031A (en) * 1995-04-24 1998-05-12 Microsoft Corporation Queue object for controlling concurrency in a computer system
CN106383864A (zh) * 2016-09-02 2017-02-08 北京百度网讯科技有限公司 一种时序数据库的查询请求处理方法和装置
CN109032775A (zh) * 2018-06-29 2018-12-18 武汉斗鱼网络科技有限公司 一种获取任务进度的方法、终端设备及存储介质
CN109407970A (zh) * 2018-09-12 2019-03-01 新华三技术有限公司成都分公司 读写请求处理方法、装置及电子设备
CN111522827A (zh) * 2020-04-08 2020-08-11 北京奇艺世纪科技有限公司 一种数据更新方法、装置和电子设备
CN115774724A (zh) * 2022-09-28 2023-03-10 上海众源网络有限公司 并发请求的处理方法、装置、电子设备及存储介质
CN115712620A (zh) * 2022-10-31 2023-02-24 浙江邦盛科技股份有限公司 一种键值存储的哈希键值数据请求合并方法

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
曹婧华;冉彦中;许志军;: "分布式消息队列的设计与实现", 河南科技大学学报(自然科学版), no. 04 *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117349032A (zh) * 2023-12-05 2024-01-05 城云科技(中国)有限公司 一种提高大语言模型吞吐量的方法及装置
CN117349032B (zh) * 2023-12-05 2024-02-20 城云科技(中国)有限公司 一种提高大语言模型吞吐量的方法及装置

Similar Documents

Publication Publication Date Title
US10579973B2 (en) System for efficient processing of transaction requests related to an account in a database
US8863140B2 (en) Method for resource management allocating and freeing credits from and to a resource credit tree
CN108459913B (zh) 数据并行处理方法、装置及服务器
CN109918382A (zh) 数据处理方法、装置、终端及存储介质
CN116719646A (zh) 热点数据处理方法、装置、电子装置和存储介质
CN115686881A (zh) 数据处理方法、装置和计算机设备
CN115470156A (zh) 基于rdma的内存使用方法、系统、电子设备和存储介质
CN109117189B (zh) 数据处理方法、装置及计算机设备
US11429311B1 (en) Method and system for managing requests in a distributed system
CN107832121B (zh) 一种应用于分布式串行长事务的并发控制方法
CN116340205B (zh) 访问请求处理方法以及缓存装置
CN115208900B (zh) 基于区块链与博弈模型的多云架构云服务资源调度方法
CN116225314A (zh) 数据写入方法、装置、计算机设备和存储介质
US10678453B2 (en) Method and device for checking false sharing in data block deletion using a mapping pointer and weight bits
US11874767B2 (en) Memory partitions for processing entities
GB2516092A (en) Method and system for implementing a bit array in a cache line
US11816088B2 (en) Method and system for managing cross data source data access requests
CN114168306B (zh) 调度方法及调度装置
US11941074B2 (en) Fetching a query result using a query filter
CN113282382B (zh) 任务处理方法、装置、计算机设备和存储介质
CN118277344A (zh) 分布式键值存储系统的存储节点层间合并方法及装置
CN114020724A (zh) 指令库迁移方法、装置、计算机设备和存储介质
CN116489100A (zh) 数据处理方法、装置、计算机设备和存储介质
CN118034885A (zh) 任务处理方法、装置、计算机设备和存储介质
CN117194002A (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
RJ01 Rejection of invention patent application after publication

Application publication date: 20230908