CN113239098B - 一种数据管理方法、计算机及可读存储介质 - Google Patents
一种数据管理方法、计算机及可读存储介质 Download PDFInfo
- Publication number
- CN113239098B CN113239098B CN202110794085.5A CN202110794085A CN113239098B CN 113239098 B CN113239098 B CN 113239098B CN 202110794085 A CN202110794085 A CN 202110794085A CN 113239098 B CN113239098 B CN 113239098B
- Authority
- CN
- China
- Prior art keywords
- connection
- target
- storage node
- stack
- target storage
- 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.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0628—Interfaces specially adapted for storage systems making use of a particular technique
- G06F3/0629—Configuration or reconfiguration of storage systems
- G06F3/0635—Configuration or reconfiguration of storage systems by changing the path, e.g. traffic rerouting, path reconfiguration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/24—Querying
- G06F16/245—Query processing
- G06F16/2458—Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
- G06F16/2471—Distributed queries
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/60—Protecting data
- G06F21/604—Tools and structures for managing or administering access control systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/061—Improving I/O performance
- G06F3/0611—Improving I/O performance in relation to response time
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F3/00—Input arrangements for transferring data to be processed into a form capable of being handled by the computer; Output arrangements for transferring data from processing unit to output unit, e.g. interface arrangements
- G06F3/06—Digital input from, or digital output to, record carriers, e.g. RAID, emulated record carriers or networked record carriers
- G06F3/0601—Interfaces specially adapted for storage systems
- G06F3/0668—Interfaces specially adapted for storage systems adopting a particular infrastructure
- G06F3/067—Distributed or networked storage systems, e.g. storage area networks [SAN], network attached storage [NAS]
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Software Systems (AREA)
- Databases & Information Systems (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- Mathematical Physics (AREA)
- Probability & Statistics with Applications (AREA)
- Computational Linguistics (AREA)
- Automation & Control Theory (AREA)
- Health & Medical Sciences (AREA)
- Bioethics (AREA)
- General Health & Medical Sciences (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Fuzzy Systems (AREA)
- Computing Systems (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种数据管理方法、计算机及可读存储介质,涉及云技术及区块链技术,该方法包括:接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;基于目标存储节点主键对连接映射表进行遍历;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。采用本申请,可以提高数据管理的效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种数据管理方法、计算机及可读存储介质。
背景技术
分布式数据库系统包括计算节点及存储节点,其中,一个计算节点可以管理与自己关联的多个存储节点,计算节点本身不存储数据,在接收到业务数据请求后,从关联的多个存储节点中获取请求的业务数据。其中,对于每个业务数据请求,计算节点需要使用相应的连接去向一个或多个存储节点发送请求,并汇总收到的回复得到业务数据,将业务数据返回至发起业务数据请求的用户设备。其中,计算节点可以实现对存储节点的访问及数据获取,而每次计算节点需要与存储节点进行通信时,都需要临时建立连接,等通信结束后释放连接,或者一直保持连接,等待下一次通信,再使用保持的连接,在这一方式下,每次都需要建立连接会导致数据获取的开销很大,若短时间内建立大量连接,还可能会产生内存不足的错误。若一直保持连接,在负载较低时无法及时回收连接,使得系统可能会存在大量空闲连接,从而降低性能。
发明内容
本申请实施例提供了一种数据管理方法、计算机及可读存储介质,可以提高对数据管理的效率。
本申请实施例一方面提供了一种数据管理方法,该方法包括:
接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;
基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;
若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。
本申请实施例一方面提供了一种数据管理装置,该装置包括:
请求接收模块,用于接收针对目标存储节点的节点访问请求;
主键获取模块,用于获取目标存储节点的目标存储节点主键;
映射遍历模块,用于基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;
连接获取模块,用于若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息;
数据获取模块,用于基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。
其中,该主键获取模块,包括:
主键生成单元,用于获取目标存储节点的目标节点名称及目标节点版本号,对目标节点名称及目标节点版本号进行组合,生成目标存储节点的目标存储节点主键。
其中,该连接获取模块,包括:
连接确定单元,用于若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中,对位于栈顶的网络连接信息进行出栈处理,将出栈后的网络连接信息确定为目标网络连接信息。
其中,该映射遍历模块,包括:
读锁添加单元,用于在连接获取线程添加第一读写锁中的第一读锁,基于第一读锁在连接映射表中查找目标存储节点主键;
该装置还包括:
阻塞等待模块,用于若在连接映射表中未遍历到目标存储节点主键对应的目标连接栈,则对第一读锁进行解锁操作,为连接获取线程增加阻塞等待线程;阻塞等待线程处于阻塞运行状态;
重遍历模块,用于当阻塞等待线程从阻塞运行状态恢复为阻塞释放状态时,调用连接获取线程,基于目标存储节点主键再次对连接映射表进行遍历。
其中,该装置还包括:
组件获取模块,用于获取等待处理组件,为阻塞等待线程添加等待处理组件关联的第二读写锁中的第二读锁;等待处理组件包括存储节点信息及第二读写锁;
信息查找模块,用于基于等待处理组件查找目标存储节点主键对应的目标存储节点信息,若未查找到目标存储节点信息,则对第二读写锁中的第二读锁进行解锁处理,确定在连接映射表中未遍历到目标存储节点对应的目标连接栈;
状态监测模块,用于若查找到目标存储节点信息,则监测阻塞等待线程对应的阻塞状态;阻塞状态包括阻塞运行状态或阻塞释放状态。
其中,该状态监测模块,包括:
条件获取单元,用于若查找到目标存储节点信息,则获取阻塞条件结构体;阻塞条件结构体包括用于表征阻塞状态的阻塞条件对象及第一互斥锁;
对象监测单元,用于为阻塞等待线程添加阻塞条件结构体中的第一互斥锁,在携带第一互斥锁的阻塞等待线程中获取阻塞条件对象的对象状态,当已获取到对象状态时,对阻塞等待线程中的第一互斥锁进行解锁处理;
查找失败单元,用于当阻塞条件对象的对象状态为对象异常状态时,确定未查找到目标存储节点;
重连接单元,用于当阻塞条件对象的对象状态为对象唤醒状态时,调用连接获取线程,在连接获取线程中,基于目标存储节点主键再次对连接映射表进行遍历。
其中,该对象监测单元,包括:
异常确定子单元,用于在携带第一互斥锁的阻塞等待线程中,若阻塞等待线程出现线程异常,则确定阻塞条件对象的对象状态为对象异常状态;
唤醒确定子单元,用于若阻塞等待线程在阻塞等待时间内,获取到连接入栈线程针对阻塞条件对象的唤醒信号,则确定阻塞条件对象的对象状态为对象唤醒状态。
其中,该装置还包括:
连接入栈模块,用于当获取到节点访问请求所请求的业务数据时,获取等待处理组件,调用针对目标网络连接信息的连接入栈线程,基于连接入栈线程,将目标网络连接信息添加至目标存储节点信息对应的目标连接栈中,获取连接入栈线程的连接入栈结果;
失败记录模块,用于若连接入栈线程的连接入栈结果为入栈失败结果,则记录入栈失败结果;
第一加锁模块,用于若连接入栈线程的连接入栈结果为入栈成功结果,则为连接入栈线程添加等待处理组件关联的第二读写锁中的第二读锁;等待处理组件包括存储节点信息及第二读写锁;
入栈结束模块,用于基于等待处理组件查找目标存储节点信息,若未查找到目标存储节点信息,则结束连接入栈线程;目标存储节点信息是指目标存储节点的节点信息;
解锁模块,用于基于入栈结束模块调用该解锁模块,在结束连接入栈线程后,对第二读锁进行解锁处理;
对象唤醒模块,用于若查找到目标存储节点信息,则为连接入栈线程添加阻塞条件结构体中的第一互斥锁,发起针对阻塞条件结构体中的阻塞条件对象的唤醒信号,对连接入栈线程关联的第一互斥锁进行解锁处理;
该解锁模块,还用于基于对象唤醒模块调用该解锁模块,在对连接入栈线程关联的第一互斥锁进行解锁处理后,对第二读锁进行解锁处理。
其中,该装置还包括:
指针创建模块,用于当获取到节点访问请求所请求的业务数据时,调用针对目标网络连接信息的连接入栈线程,基于连接入栈线程,创建目标栈指针,获取目标网络连接信息对应的目标存储节点主键;
主键查找模块,用于基于目标栈指针,在连接映射表中查找目标存储节点主键;
栈获取模块,用于获取目标存储节点主键的主键查找结果,基于主键查找结果及目标栈指针获取目标存储节点主键对应的目标连接栈;
入栈成功确定模块,用于若将目标网络连接信息成功添加至目标连接栈,则将入栈成功结果确定为连接入栈线程的连接入栈结果;
入栈失败确定模块,用于若未将目标网络连接信息添加至目标连接栈,则将入栈失败结果确定为连接入栈线程的连接入栈结果。
其中,该栈获取模块,包括:
结果获取单元,用于获取目标存储节点主键的主键查找结果;
栈确定单元,用于若主键查找结果为查找成功结果,则将基于目标栈指针所查找到的连接栈确定为目标存储节点信息对应的目标连接栈;
栈生成单元,用于若主键查找结果为查找失败结果,则在连接映射表中插入目标存储节点主键,基于目标栈指针生成目标存储节点主键对应的目标连接栈。
其中,该栈生成单元,包括:
实例创建子单元,用于若主键查找结果为查找失败结果,则创建连接栈实例;连接栈实例包括栈对象及第二互斥锁;
写锁添加子单元,用于为连接入栈线程添加主读写锁中的主写锁;
映射更新子单元,用于将连接栈实例及目标存储节点主键关联插入连接映射表;
实例删除子单元,用于若插入失败,则删除连接栈实例,返回执行基于目标栈指针,在连接映射表中查找目标存储节点主键的步骤;
实例确定子单元,用于若插入成功,则基于目标栈指针将连接栈实例确定为目标存储节点主键对应的目标连接栈。
其中,该装置还包括:
数量获取模块,用于获取目标连接栈的目标连接数量;
入栈取消模块,用于若目标连接数量大于或等于栈最大连接数,则确定未将目标网络连接信息添加至目标连接栈;栈最大连接数用于表示目标连接栈中可以添加的网络连接信息的总数。
其中,该装置还包括:
入栈时间获取模块,用于遍历目标连接栈,获取目标连接栈中的N个网络连接信息分别对应的连接入栈时间;
连接时长确定模块,用于获取系统网络时间,根据系统网络时间及N个网络连接信息分别对应的连接入栈时间,确定N个网络连接信息分别对应的连接建立时长;
回收统计模块,用于统计N个网络连接信息中,连接建立时长大于或等于连接回收时间阈值的网络连接信息的连接回收数量;连接回收数量为k,k为正整数;
连接出栈模块,用于从目标连接栈的栈顶依次对k个网络连接信息进行出栈处理。
本申请实施例一方面提供了一种计算机设备,包括处理器、存储器、输入输出接口;
处理器分别与存储器和输入输出接口相连,其中,输入输出接口用于接收数据及输出数据,存储器用于存储计算机程序,处理器用于调用该计算机程序,以使包含该处理器的计算机设备执行本申请实施例一方面中的数据管理方法。
本申请实施例一方面提供了一种计算机可读存储介质,计算机可读存储介质存储有计算机程序,该计算机程序适于由处理器加载并执行,以使得具有该处理器的计算机设备执行本申请实施例一方面中的数据管理方法。
本申请实施例一方面提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行本申请实施例一方面中的各种可选方式中提供的方法。
实施本申请实施例,将具有如下有益效果:
在本申请实施例中,计算节点接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。通过上述过程,引入了映射表和栈,通过映射表将计算节点与存储节点进行关联,可以管理该计算节点到各个存储节点的连接,即相当于管理多个连接池,每个连接池内部的连接都指向同一个存储节点,并通过栈管理连接池,每个栈可以管理计算节点至存储节点的多个连接,使得计算节点可以很方便地查找到需要访问的存储节点,并从栈中获取到用于访问该存储节点的连接,提高对数据管理的便利性及效率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种数据管理的网络交互架构图;
图2是本申请实施例提供的一种数据架构示意图;
图3是本申请实施例提供的一种数据管理场景示意图;
图4a是本申请实施例提供的一种数据管理的方法流程图;
图4b是本申请实施例提供的一种数据管理方法的具体流程图;
图5是本申请实施例提供了一种连接入栈方法流程图;
图6是本申请实施例提供的一种数据获取场景示意图;
图7是本申请实施例提供的一种多线程数据获取场景示意图;
图8是本申请实施例提供的一种数据管理装置示意图;
图9是本申请实施例提供的一种计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
其中,在本申请实施例中,可以通过云技术及区块链技术实现对数据的管理,具体的,本申请中的计算节点可以对多个存储节点进行管理,该计算节点可以与每个存储节点之间建立多个连接,在该过程中可能会产生大量的数据,可以通过大数据技术实现对本申请中的连接及业务数据等的管理,例如,基于数据传输技术实现计算节点与存储节点之间的数据传输等。
其中,大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
云存储(cloud storage)是在云计算概念上延伸和发展出来的一个新的概念,分布式云存储系统 (以下简称存储系统)是指通过集群应用、网格技术以及分布存储文件系统等功能,将网络中大量各种不同类型的存储设备(存储设备也称之为存储节点)通过应用软件或应用接口集合起来协同工作,共同对外提供数据存储和业务访问功能的一个存储系统。在本申请中,可以基于该云存储技术实现对数据的存储,如基于云存储技术对连接映射表及连接栈等进行存储。
可选的,本申请也可以基于区块链技术实现对本申请中所涉及的数据进行存储及管理,以提高数据管理的安全性。
其中,对本申请中所涉及的部分术语进行如下解释:
其中,分布式数据库系统通常使用较小的计算机系统,每台计算机可单独放在一个地方,每台计算机中都可能有数据库管理系统(Database Management System,DBMS)的一份完整拷贝副本或部分拷贝副本,并具有自己局部的数据库,位于不同地点的多个计算机可以通过网络互相连接,共同组成一个完整的、全局的逻辑上集中、物理上分布的大型数据库。
其中,计算节点是指在计算与存储分离的分布式数据库系统中,用于解析结构化查询语言、逻辑优化或生成执行计划的节点;存储节点是指在计算与存储分离的分布式数据库系统中,用于进行输入输出操作,以及保存/读取数据的节点。
连接池用于维护数据库连接的缓存,即该连接池用于维护计算节点与存储节点之间的连接。
在本申请实施例中,请参见图1,图1是本申请实施例提供的一种数据管理的网络交互架构图,本申请实施例可以由计算节点实现。其中,计算节点101可以管理一个或至少两个存储节点,即可以与一个或至少两个存储节点之间进行连接,如存储节点102a、存储节点102b及存储节点102c等。其中,计算节点101与每个存储节点之间可以建立多条连接。计算节点101在接收到业务数据请求后,对该业务数据请求进行解析,得到f个节点访问请求,f为正整数,每个节点访问请求用于访问一个存储节点。其中,本申请中的业务数据存储在不同的存储节点中,当计算节点101接收到业务数据请求时,该业务数据请求所请求的业务数据可能是存储于不同的存储节点上的数据,计算节点101可以对该业务数据请求进行解析,得到f个节点访问请求,计算节点101可以基于f个节点访问请求访问对应的存储节点,从f个节点访问请求分别对应的存储节点中获取业务数据,将获取到的f个存储节点发送的业务数据组成数据获取结果,将数据获取结果发送至发起业务数据请求的用户设备。
进一步地,可以参见图2,图2是本申请实施例提供的一种数据架构示意图。如图2所示,本申请维护有连接映射表201,该连接映射表201包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数,例如,存储节点主键3及存储节点主键3对应的连接栈2021、存储节点主键1及存储节点主键1对应的连接栈2022,以及存储节点主键0及存储节点主键0对应的连接栈2023等。举例来说,计算节点接收到针对存储节点3的节点访问请求,基于存储节点3对应的存储节点主键3对连接映射表201中进行遍历,若查找到该存储节点主键3对应的连接栈2021,则对该连接栈2021中位于栈顶的网络连接信息进行出栈处理,得到目标网络连接信息,基于目标网络连接信息从存储节点3中获取节点访问请求所请求的业务数据。
具体的,如图3所示,图3是本申请实施例提供的一种数据管理场景示意图。如图3所示,计算节点301接收到针对目标存储节点的节点访问请求,获取该目标存储节点的目标存储节点主键,基于该目标存储节点主键对连接映射表302进行遍历,即,从连接映射表302中查找该目标存储节点主键,以检测该连接映射表中是否存在目标存储节点主键,若在连接映射表302中遍历到该目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,N为正整数,该目标连接栈包括N个处于空闲连接状态的网络连接信息,该空闲连接状态是指未运行的网络连接信息,该网络连接信息用于指示计算节点与该网络连接信息所在的连接栈对应的存储节点之间的连接。计算节点301基于目标网络连接信息从目标存储节点303中获取节点访问请求所请求的业务数据。通过引入连接映射表及栈,使得计算节点可以通过连接映射表管理多个存储节点,可以通过栈管理到一个存储节点的多个连接,使得在计算节点需要访问存储节点时,可以方便地查找到需要访问的存储节点与计算节点之间的连接(具体是获取到网络连接信息),计算节点可以基于查找到的连接从需要访问的存储节点中获取业务数据,从而提高了数据管理的有效性及效率。
可以理解的是,本申请实施例中所提及的计算节点及存储节点均可以是一种计算机设备,本申请实施例中的计算机设备包括但不限于终端设备或服务器。换句话说,计算机设备可以是服务器或终端设备,也可以是服务器和终端设备组成的系统。其中,以上所提及的终端设备可以是一种电子设备,包括但不限于手机、平板电脑、台式电脑、笔记本电脑、掌上电脑、车载设备、增强现实/虚拟现实(Augmented Reality/Virtual Reality,AR/VR)设备、头盔显示器、智能电视、可穿戴设备、智能音箱、数码相机、摄像头及其他具备网络接入能力的移动互联网设备(mobile internet device,MID),或者火车、轮船、飞行等场景下的终端设备等。其中,以上所提及的服务器可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、车路协同、内容分发网络(Content Delivery Network, CDN)、以及大数据和人工智能平台等基础云计算服务的云服务器。
可选的,本申请实施例中所涉及的数据可以存储在计算机设备中,或者可以基于云存储技术或区块链技术对该数据进行存储,在此不做限制。其中,本申请中的“或”是指多个中的任意一个或任意多个,例如,“A或B”是指“A”、“B”及“A和B”。
进一步地,请参见图4a,图4a是本申请实施例提供的一种数据管理的方法流程图。如图4a所示,该数据管理过程包括如下步骤:
步骤S401,接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键。
在本申请实施例中,计算节点接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键。具体的,计算节点可以获取目标存储节点的目标节点名称及目标节点版本号,对目标节点名称及目标节点版本号进行组合,生成目标存储节点的目标存储节点主键。可选的,计算节点可以生成目标节点名称与目标节点版本号的节点哈希值,将该节点哈希值确定为目标存储节点的目标存储节点主键;或者,计算节点可以直接将目标节点名称与目标节点版本号进行拼接,得到目标存储节点的目标存储节点主键,例如,该目标存储节点的目标节点名称为pt1,目标节点版本号为0,则可以对目标存储节点的目标节点名称与目标节点版本号进行拼接,得到目标存储节点的目标存储节点主键“pt10”,或者,可以对目标节点名称与目标节点版本号进行分离拼接,如在目标节点名称与目标节点版本号之间添加分隔符(如#)等,得到目标存储节点的目标存储节点主键,如“pt1#0”,在此不做限制。其中,目标节点名称是指该目标存储节点的名称,用于指示该目标存储节点的节点地址信息,如该目标存储节点的互联网协议地址(Internet Protocol Address,IP地址)及节点端口号等,计算节点可以基于该节点地址信息访问目标存储节点。其中,目标节点版本号用于表示该目标节点名称所指向的节点地址信息的变更版本,换句话说,当该目标节点名称所指向的节点地址信息发生更新时,计算节点对该目标节点名称所关联的目标节点版本号进行更新,举例来说,假定pt1指向IP地址为172.114.8.9,节点端口号为3306的存储节点,此时,假定该目标存储节点主键为“pt1#0”,当将pt1所指向的存储节点更新为IP地址为172.114.10.10,节点端口号为3306的存储节点时(即目标存储节点主键所指向的存储节点发生更新时),对目标节点版本号进行更新,得到新的目标存储节点主键“pt1#1”。可选的,该目标名称可以认为是一种节点的代号或名字,并不包含实际的物理意义。同理,可以得到每个存储节点的存储节点主键。
具体的,当计算节点接收到针对第一存储节点主键对应的第一节点地址信息的更新请求时,计算节点可以获取该第一存储节点主键对应的第一连接栈,删除第一连接栈,释放该第一连接栈的内存,将第一存储节点主键中的第一节点版本号更新为第二节点版本号,其中,第二节点版本号用于表示第一存储节点主键中的第一节点名称所对应的存储节点的更新版本。基于第二节点版本号与第一存储节点主键中的第一节点名称生成第二存储节点主键,为第二存储节点主键创建第二连接栈,将第二存储节点主键与第二连接栈进行关联存储至连接映射表,将第二存储节点主键指向第二节点地址信息,该第二节点地址信息是指该针对第一节点地址信息的更新请求所请求的存储节点的地址信息。
步骤S402,基于目标存储节点主键对连接映射表进行遍历。
在本申请实施例中,该连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数,一个连接栈包括N个处于空闲状态的网络连接信息,N为自然数(即0或正整数),其中,不同的连接栈对应的N的取值可能不同,例如,连接栈1中包括5个网络连接信息,连接栈2中包括8个网络连接信息,则连接栈1对应的N为5,连接栈2对应的N为8。计算节点可以在连接获取线程添加第一读写锁中的第一读锁,基于第一读锁在连接映射表中查找目标存储节点主键,以对连接映射表进行读操作。其中,读写锁是一种特殊的自旋锁,把对共享资源的访问者划分为读者和写者,一个读写锁同时只能有一个写者或多个读者,即,每次只能有一个写线程,但可以同时有多个线程并发地读数据,读写锁维护一对锁(读锁和写锁)。可选的,可以基于连接栈实例创建表遍历指针,基于该表遍历指针依次指向连接映射表中的M个存储节点主键,若表遍历指针指向M个存储节点主键中的最后一个存储节点主键,且未查找到目标存储节点主键,则确定在连接映射表中未遍历到目标存储节点主键对应的目标连接栈;若表遍历指针未指向M个存储节点主键中的最后一个存储节点主键时,查找到目标存储节点主键,则确定在连接映射表中遍历到目标存储节点主键对应的目标连接栈,即,将表遍历指针所指向的目标存储节点主键关联的连接栈确定为目标连接栈。
步骤S403,若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。
在本申请实施例中,若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中,对位于栈顶的网络连接信息进行出栈处理,将出栈后的网络连接信息确定为目标网络连接信息。可选的,若计算节点在连接获取线程中添加了第一读写锁中的第一读锁,则当在连接映射表中遍历到目标存储节点主键对应的目标连接栈时,对该第一读锁进行解锁处理,从目标连接栈所包括的N个网络连接信息中,对位于栈顶的网络连接信息进行出栈处理,将出栈后的网络连接信息确定为目标网络连接信息。可选的,计算节点在遍历到目标连接栈时,可以在连接获取线程中添加互斥锁,检测目标连接栈是否为空,若该目标连接栈为空,则对互斥锁进行解锁处理,执行若在连接映射表中未遍历到目标存储节点主键对应的目标连接栈,则对第一读锁进行解锁操作的过程;若目标连接栈不为空,则从目标连接栈所包括的N个网络连接信息中,对位于栈顶的网络连接信息进行出栈处理,将出栈后的网络连接信息确定为目标网络连接信息,对互斥锁进行解锁处理。
进一步地,若在连接映射表中未遍历到目标存储节点主键对应的目标连接栈,则计算节点可以对第一读锁进行解锁操作,为连接获取线程增加阻塞等待线程;阻塞等待线程处于阻塞运行状态。具体的,计算节点可以创建等待处理组件及阻塞条件结构体,其中,该等待处理组件包括存储节点信息及第二读写锁,该存储节点信息包括h个存储节点分别对应的节点信息等,h为正整数,第二读写锁用于对该等待处理组件进行保护,维护由该等待处理组件及阻塞条件结构体生成的阻塞等待线程的安全,提高线程运行的安全性;其中,假定计算节点关联p个存储节点,由于p个存储节点的节点信息不一定全部添加至等待处理组件中,因此,h小于或等于p,p为正整数。该阻塞条件结构体可以包括用于表征阻塞状态的阻塞条件对象及第一互斥锁,其中,该阻塞状态包括阻塞运行状态及阻塞释放状态,该第一互斥锁用于保护阻塞条件对象等的安全,该阻塞条件对象可以是一种标准线程库中的阻塞机制类型的对象。可选的,计算节点可以针对每个存储节点均维护一个阻塞条件结构体,例如,存在h个存储节点,则存在h个阻塞条件结构体,计算节点可以根据该h个存储节点分别对应的节点信息及阻塞条件结构体生成等待处理组件中的存储节点信息,该存储节点信息可以是哈希表(hash map)结构等。
进一步地,当阻塞等待线程从阻塞运行状态恢复为阻塞释放状态时,计算节点可以调用连接获取线程,基于目标存储节点主键再次对连接映射表进行遍历。
具体的,计算节点可以获取等待处理组件,为阻塞等待线程添加等待处理组件关联的第二读写锁中的第二读锁;等待处理组件包括存储节点信息及第二读写锁。基于等待处理组件查找目标存储节点主键对应的目标存储节点信息,具体的,是在等待处理组件中所包括的存储节点信息中查找目标存储节点信息。若未查找到目标存储节点信息,则对第二读写锁中的第二读锁进行解锁处理,确定在连接映射表中未遍历到目标存储节点对应的目标连接栈,结束连接获取线程及阻塞等待线程。若查找到目标存储节点信息,则表示存在目标存储节点,计算节点可以监测阻塞等待线程对应的阻塞状态;阻塞状态包括阻塞运行状态或阻塞释放状态。
具体的,在若查找到目标存储节点信息,则在监测阻塞等待线程对应的阻塞状态时,计算节点可以获取阻塞条件结构体;阻塞条件结构体包括用于表征阻塞状态的阻塞条件对象及第一互斥锁。其中,互斥锁用于保护数据,使得每次只有一个线程可以进行写入操作,以保障多线程情况下数据的准确性。计算节点为阻塞等待线程添加阻塞条件结构体中的第一互斥锁,在携带第一互斥锁的阻塞等待线程中获取阻塞条件对象的对象状态,具体的,计算节点可以获取阻塞条件对象、第一互斥锁及阻塞等待时间等,根据该阻塞条件对象、第一互斥锁及阻塞等待时间等进行线程等待操作,基于该线程等待操作的结果确定阻塞条件对象的对象状态。当已获取到对象状态时,计算节点对阻塞等待线程中的第一互斥锁进行解锁处理。其中,当阻塞条件对象的对象状态为对象异常状态时,确定未查找到目标存储节点,结束连接获取线程及阻塞等待线程;当阻塞条件对象的对象状态为对象唤醒状态时,调用连接获取线程,在连接获取线程中,基于目标存储节点主键再次对连接映射表进行遍历。
其中,在携带第一互斥锁的阻塞等待线程中获取阻塞条件对象的对象状态时,计算节点可以在携带第一互斥锁的阻塞等待线程中,若阻塞等待线程出现线程异常,则确定阻塞条件对象的对象状态为对象异常状态,具体的,计算节点可以对线程等待操作进行监测,若在阻塞等待时间内未接收到针对阻塞条件对象的唤醒信号,或者,线程等待操作过程中出现异常中断情况,如系统错误或硬件异常中断等,则表示该阻塞等待线程出现线程异常,确定阻塞条件对象的对象状态为对象异常状态。若阻塞等待线程在阻塞等待时间内,获取到连接入栈线程针对阻塞条件对象的唤醒信号,则确定阻塞条件对象的对象状态为对象唤醒状态。其中,该唤醒信号是计算节点基于连接入栈线程,将待入栈网络连接信息成功添加至目标连接栈后发起的,该待入栈网络连接信息是指使用完成的网络连接信息,具体可以参见图5中,将目标网络连接信息添加至目标连接栈的过程。
具体的,当计算节点获取到目标网络连接信息时,可以基于该目标网络连接信息与目标存储节点建立目标连接关系,基于该目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。进一步地,计算节点成功获取到该业务数据后,可以对该目标网络连接信息进行入栈处理,使得目标连接栈中的网络连接信息可以复用,换句话说,通过对目标网络连接信息的出栈入栈处理,使得在针对目标存储节点的节点访问请求未完成时,该目标连接栈中不包括目标网络连接信息,也就使得其他的请求无法获取到该目标网络连接信息,从而使得本申请可以缓存单个计算节点指向多个存储节点的连接,包括计算节点指向每个存储节点的多个连接(即网络连接信息),且每个网络连接信息为一个线程服务,确保了系统在并发运行时的线程安全。
具体的,可以参见图4b,图4b是本申请实施例提供的一种数据管理方法的具体流程图。如图4b所示,该方法包括如下步骤:
步骤S40a,接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键。
步骤S40b,基于目标存储节点主键对连接映射表进行遍历。
步骤S40c,检测是否遍历到目标存储节点主键对应的目标连接栈。
在本申请实施例中,计算节点检测在连接映射表中是否遍历到目标存储节点主键对应的目标连接栈,若未遍历到目标存储节点主键对应的目标连接栈,则执行步骤S40d;若遍历到目标存储节点主键对应的目标连接栈,则执行步骤S40o。
步骤S40d,若在连接映射表中未遍历到目标存储节点主键对应的目标连接栈,则为连接获取线程增加阻塞等待线程。
步骤S40e,获取等待处理组件,为阻塞等待线程添加等待处理组件关联的第二读写锁中的第二读锁。
步骤S40f,基于等待处理组件查找目标存储节点主键对应的目标存储节点信息。
步骤S40g,检测是否在等待处理组件中查找到目标存储节点信息。
在本申请实施例中,计算节点检测是否在等待处理组件中查找到目标存储节点信息,若在等待处理组件中查找到目标存储节点信息,则执行步骤S40h;若在等待处理组件中未查找到目标存储节点信息,则执行步骤S40n。
步骤S40h,若查找到目标存储节点信息,则获取阻塞条件结构体。
步骤S40i,为阻塞等待线程添加阻塞条件结构体中的第一互斥锁,在携带有第一互斥锁的阻塞等待线程中获取阻塞条件对象的对象状态。
步骤S40j,当获取到对象状态时,对阻塞等待线程中的第一互斥锁进行解锁处理。
步骤S40k,检测对象状态是否异常。
在本申请实施例中,计算节点可以检测对象状态是否异常,若该对象状态为对象异常状态,则执行步骤S40l;若该对象状态为对象唤醒状态,则执行步骤S40m。
步骤S40l,当阻塞条件对象的对象状态为对象异常状态时,结束连接获取线程。
步骤S40m,当阻塞条件对象的对象状态为对象唤醒状态时,调用连接获取线程。
在本申请实施例中,当阻塞条件对象的对象状态为对象唤醒状态时,调用连接获取线程,返回执行步骤S40b,重新对连接映射表进行遍历。
步骤S40n,若未查找到目标存储节点信息,则结束连接获取线程。
在本申请实施例中,若未查找到目标存储节点信息,则为阻塞等待线程携带的第二读锁进行解锁处理,结束连接获取线程;或者,先结束连接获取线程,再为阻塞等待线程携带的第二读锁进行解锁处理。由于连接获取线程结束,则不需要读锁进行保护,因此,可以在结束连接获取线程之前或之后,为阻塞等待线程携带的第二读锁进行解锁处理,不会影响线程的正常运行。
步骤S40o,若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息。
在本申请实施例中,若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则计算节点可以从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息。可选的,计算节点可以检测该目标连接栈是否为空,若该目标连接栈为空,则返回执行步骤S40d;若该目标连接栈不为空,则对该目标连接栈进行出栈处理,将出栈处理的网络连接信息确定为目标网络连接信息,执行步骤S40p。
步骤S40p,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。
进一步地,可以参见图5,图5是本申请实施例提供的一种连接入栈方法流程图。如图5所示,该连接入栈方法包括如下步骤:
步骤S501,当获取到节点访问请求所请求的业务数据时,获取等待处理组件,调用针对目标网络连接信息的连接入栈线程,基于连接入栈线程,将目标网络连接信息添加至目标存储节点信息对应的目标连接栈中,获取连接入栈线程的连接入栈结果。
在本申请实施例中,当获取到节点访问请求所请求的业务数据时,可以认为该目标网络连接信息运行结束,即,该目标网络连接信息已经处于空闲连接状态,可以被其他线程调用,因此,可以对该目标网络连接信息进行入栈处理。若该连接入栈结果为入栈失败结果,则执行步骤S502;若该连接入栈结果为入栈成功结果,则执行步骤S503。
步骤S502,若连接入栈线程的连接入栈结果为入栈失败结果,则记录该入栈失败结果。
步骤S503,若连接入栈线程的连接入栈结果为入栈成功结果,则为连接入栈线程添加等待处理组件关联的第二读写锁中的第二读锁。
步骤S504,基于入栈成功结果,发起针对阻塞条件结构体中的阻塞条件对象的唤醒信号。
在本申请实施例中,基于等待处理组件查找目标存储节点信息,若未查找到目标存储节点信息,则结束连接入栈线程,对第二读锁进行解锁处理,该目标存储节点信息是指目标存储节点的节点信息。若查找到目标存储节点信息,则为连接入栈线程添加阻塞条件结构体中的第一互斥锁,发起针对阻塞条件结构体中的阻塞条件对象的唤醒信号,对连接入栈线程关联的第一互斥锁进行解锁处理;进一步地,对第二读锁进行解锁处理。
可选的,当获取到节点访问请求所请求的业务数据时,计算节点可以调用针对目标网络连接信息的连接入栈线程,基于连接入栈线程,创建目标栈指针,获取目标网络连接信息对应的目标存储节点主键。基于目标栈指针,在连接映射表中查找目标存储节点主键;获取目标存储节点主键的主键查找结果,基于主键查找结果及目标栈指针获取目标存储节点主键对应的目标连接栈。可选的,计算节点在创建目标栈指针之前或之后,可以为该连接入栈线程添加第三读写锁中的第三读锁。进一步地,若将目标网络连接信息成功添加至目标连接栈,则将入栈成功结果确定为连接入栈线程的连接入栈结果;若未将目标网络连接信息添加至目标连接栈,则将入栈失败结果确定为连接入栈线程的连接入栈结果。
具体的,在获取目标存储节点主键的主键查找结果,基于主键查找结果及目标栈指针获取目标存储节点主键对应的目标连接栈时,计算节点可以获取目标存储节点主键的主键查找结果。若主键查找结果为查找成功结果,则将基于目标栈指针所查找到的连接栈确定为目标存储节点信息对应的目标连接栈,将目标网络连接信息进行入栈处理,即,将目标网络连接信息添加至目标连接栈中,可选的,若添加了第三读锁,则对第三读锁进行解锁处理,执行将基于目标栈指针所查找到的连接栈确定为目标存储节点信息对应的目标连接栈的过程。若主键查找结果为查找失败结果,则在连接映射表中插入目标存储节点主键,基于目标栈指针生成目标存储节点主键对应的目标连接栈。
具体的,若主键查找结果为查找成功结果,则可以获取目标连接栈的目标连接数量;若目标连接数量大于或等于栈最大连接数,则确定未将目标网络连接信息添加至目标连接栈,将入栈失败结果确定为连接入栈线程的连接入栈结果;栈最大连接数用于表示目标连接栈中可以添加的网络连接信息的总数。
其中,若主键查找结果为查找失败结果,则创建连接栈实例;连接栈实例包括栈对象及第二互斥锁;为连接入栈线程添加主读写锁中的主写锁。将连接栈实例及目标存储节点主键关联插入连接映射表。若插入失败,则删除连接栈实例,返回执行基于目标栈指针,在连接映射表中查找目标存储节点主键的步骤。其中,若插入失败,则表示可能存在其他线程正在插入该目标存储节点主键,由于连接入栈线程携带了主写锁,因此,该连接入栈线程无法再次在连接映射表中插入目标存储节点主键,可以在连接映射表中查找目标存储节点主键,进而可以查找到其他线程所插入的目标存储节点主键,从而可以提高连接入栈的容错性,同时避免多个线程同时插入目标存储节点主键而导致的连接映射表异常的情况出现,提高了连接入栈的安全性。若插入成功,则基于目标栈指针将连接栈实例确定为目标存储节点主键对应的目标连接栈。进一步地,在确定了目标连接栈后,计算节点可以对该主写锁进行解锁处理,将目标网络连接信息进行入栈处理,即,将目标网络连接信息写入目标连接栈中。
进一步地,在将目标网络连接信息进行入栈处理时,计算节点可以为连接入栈线程添加互斥锁,在携带互斥锁的连接入栈线程中,将目标网络连接信息进行入栈处理,当将目标网络连接信息添加至目标连接栈中时,对连接入栈线程所携带的互斥锁进行解锁处理。
其中,在本申请中,基于读写锁及互斥锁实现对各个线程及存储节点等的保护,而在为线程添加了读写锁中的读锁或写锁,或者添加了互斥锁的情况下,在该线程执行完成后,可以对该线程中所添加的锁进行解锁处理,以释放锁所占用的资源,提高数据管理效率。
可选的,计算节点还可以遍历目标连接栈,获取目标连接栈中的N个网络连接信息分别对应的连接入栈时间。获取系统网络时间,根据系统网络时间及N个网络连接信息分别对应的连接入栈时间,确定N个网络连接信息分别对应的连接建立时长。统计N个网络连接信息中,连接建立时长大于或等于连接回收时间阈值的网络连接信息的连接回收数量;连接回收数量为k,k为正整数。从目标连接栈的栈顶依次对k个网络连接信息进行出栈处理。可选的,可以基于互斥锁对k个网络连接信息进行出栈处理,即在统计N个网络连接信息中,连接建立时长大于或等于连接回收时间阈值的网络连接信息的连接回收数量之前添加互斥锁,在对k个网络连接信息进行出栈处理之后对互斥锁进行解锁处理;可以在遍历目标连接栈之前添加主写锁,在对k个网络连接信息进行出栈处理之后对主写锁进行解锁处理。其中,该目标连接栈中的N个网络连接信息在本质上是相同的,均是该计算节点与目标存储节点之间所建立的连接,而由于在进行数据管理的过程中,即,从存储节点中获取业务数据的过程中,会对该目标连接栈中的网络连接信息不断进行出栈和入栈处理,使得该目标连接栈中所包括的网络连接信息在目标连接栈中的位置不断发生变化,因此,连接建立时长越长的网络连接信息,不一定越接近目标连接栈的栈底,若连接建立时长越长的网络连接信息一直未被出栈回收,则表示该目标连接栈的栈底的变化较小,即,位于目标连接栈的栈底的网络连接信息可能几乎未被使用过,处于空闲连接状态,基于该特性,可以直接从目标连接栈的栈顶开始,依次对k个网络连接信息进行出栈处理,将出栈处理后的网络连接信息进行回收,可以尽可能多地回收目标连接栈中闲置的网络连接信息,节省目标连接栈所需占用的存储空间。
进一步地,可以参见图6,图6是本申请实施例提供的一种数据获取场景示意图。如图6所示,用户设备601向计算节点602发送业务数据获取请求,计算节点602可以对该业务数据获取请求进行解析,得到f个节点访问请求,如节点访问请求1、节点访问请求2及节点访问请求f等,其中,计算节点602可以基于该业务数据获取请求所请求的存储节点,对该业务数据获取请求进行解析。计算节点602可以基于f个节点访问请求,从连接映射表603中,获取到f个节点访问请求分别对应的目标存储节点604,如节点访问请求1对应的目标存储节点6041、节点访问请求2对应的目标存储节点6042,以及节点访问请求f对应的目标存储节点604f,从f个目标存储节点6042中分别获取业务数据,该过程可以参见上述图4a至图5所示的具体描述,在此不再进行赘述。计算节点602可以将获取到的f个业务数据组成数据获取结果,将数据获取结果发送至用户设备601中。
可选的,可以参见图7,图7是本申请实施例提供的一种多线程数据获取场景示意图。如图7所示,假定计算节点702接收到用户设备7011、用户设备7012及用户设备7013分别发送的业务数据获取请求,假定各个用户设备所发送的业务数据获取请求均是针对目标存储节点A的业务数据获取请求,计算节点702对各个业务数据获取请求进行解析,得到用户设备7011针对目标存储节点A的节点访问请求,用户设备7012针对目标存储节点A的节点访问请求,以及用户设备7013针对目标存储节点A的节点访问请求等,计算节点702可以基于目标存储节点A对应的目标存储节点主键A对连接映射表703进行遍历,该过程可以参见图4a中的步骤S402所示。进一步地,假定计算节点702查找到目标存储节点主键A对应的目标连接栈704,计算节点702可以基于读写锁及互斥锁并行运行用户设备7011对应的连接获取线程、用户设备7012对应的连接获取线程及用户设备7013对应的连接获取线程等,也就是说,针对每个节点访问请求执行如图4a中步骤S403所示的过程是并行运行的,是相互独立的。例如,计算节点702针对用户设备7011的节点访问请求1,从目标连接栈704中获取到目标网络连接信息1,若此时计算节点702针对用户设备7012的节点访问请求2,也从目标连接栈704中获取目标网络连接,则计算节点702会基于读写锁及互斥锁,对用户设备7012关联的连接获取线程进行阻塞,当计算节点702将目标网络连接信息1进行出栈处理时,计算节点702启动用户设备7012关联的连接获取线程,从目标连接栈704中对位于栈顶的网络连接信息进行出栈处理,将该出栈处理得到的网络连接信息确定为用户设备7012对应的目标网络连接信息2。同理,计算节点702可以基于读写锁及互斥锁,得到用户设备7013对应的目标网络连接信息3。进一步地,计算节点702可以基于目标网络连接信息1与目标存储节点A建立目标连接关系1,基于目标连接关系1从目标存储节点A中获取节点访问请求1所请求的业务数据1;可以基于目标网络连接信息2与目标存储节点A建立目标连接关系2,基于目标连接关系2从目标存储节点A中获取节点访问请求2所请求的业务数据2;可以基于目标网络连接信息3与目标存储节点A建立目标连接关系3,基于目标连接关系3从目标存储节点A中获取节点访问请求3(即用户设备7013发送的节点访问请求)所请求的业务数据3。计算节点702可以将业务数据1发送至用户设备7011,将业务数据2发送至用户设备7012,将业务数据3发送至用户设备7013。换句话说,计算节点702针对各个节点访问请求所执行的步骤是并行独立的,从同一个存储节点中获取业务数据时,也可以基于不同的网络连接信息,并行从该存储节点中获取业务数据。其中,若针对各个节点访问请求所执行的步骤在执行过程中出现冲突,则可以基于读写锁及互斥锁,实现对针对各个节点访问请求所执行的步骤的阻塞及运行控制,从而使得计算节点可以同时实现对多个用户设备的响应过程,实现从同一个存储节点中获取不同的业务数据,提高数据传输的效率。
可选的,本申请可以用于可以使用分布式数据库系统的任意一个应用场景中,例如,可以用于对应用程序的数据获取场景等。举例来说,假定游戏应用的游戏数据存储在多个存储节点中,当用户设备需要获取游戏数据时,可以向计算节点发送游戏数据获取请求,计算节点基于该游戏数据获取请求执行图4a所示的各个步骤,得到该游戏数据获取请求所请求的目标游戏数据,将该目标游戏数据发送至用户设备。其中,用户设备可以基于获取到的目标游戏数据进行用户分析,得到用户分析结果,基于该用户分析结果对该游戏应用进行优化,如更新游戏玩法或增加游戏道具等;或者,用户设备还可以基于获取到的目标游戏数据进行分析,得到用户分布情况,可以基于用户分布情况得到该游戏应用的发布运营情况等。也就是说,用户设备可以基于分析需求向计算节点发送游戏数据获取请求,获取该游戏数据获取请求所请求的目标游戏数据,基于目标游戏数据进行分析,得到分析需求所需要的应用分析结果。同理,可以应用于使用分布式数据库系统的任意一个数据获取场景。
在本申请实施例中,计算节点接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。通过上述过程,引入了映射表和栈,通过映射表将计算节点与存储节点进行关联,可以管理该计算节点到各个存储节点的连接,即相当于管理多个连接池,每个连接池内部的连接都指向同一个存储节点,并通过栈管理连接池,每个栈可以管理计算节点至存储节点的多个连接,使得计算节点可以很方便地查找到需要访问的存储节点,并从栈中获取到用于访问该存储节点的连接,提高对数据管理的便利性及效率。进一步地,栈可以使用动态数组实现,在动态数组的情况下可以快速扩容,提高连接映射表管理的有效性及效率。其中,由于本申请中主要涉及读操作,例如对连接映射表的读操作等,因此,在本申请中读锁的使用频率大于写锁的使用频率,以减少不必要的阻塞,提升整体性能。
其中,在本申请中,当存储节点发生主备切换时,即连接映射表中的节点名称所指向的存储节点发生变化时,会更新连接映射表中该节点名称对应的存储节点主键及连接栈。其中,将需要更新的存储节点记作待更新存储节点,将该待更新存储节点对应的存储节点主键记作待更新存储节点主键,将待更新存储节点对应的连接栈记作待更新连接栈。具体的,计算节点可以启动节点更新线程,对连接池(即各个连接栈)及等待处理组件等添加写锁;再在连接更新线程中添加互斥锁,销毁该待更新存储节点对应的待更新连接栈,当对待更新连接栈销毁成功时,对互斥锁进行解锁处理;删除待更新存储节点主键,基于待更新存储节点对应的待更新节点名称及替换存储节点对应的节点版本号,生成替换存储节点主键,创建替换连接栈,将替换存储节点主键及替换连接栈关联插入连接映射表中;对连接池(即各个连接栈)及等待处理组件等关联的写锁进行解锁处理。
进一步地,采用1个计算节点与16个存储节点的架构,对本申请进行了性能测试。一方面,利用点查询对计算节点的中央处理器(central processing unit,CPU)进行压测,以表中数据为10G,计算节点的内存为15G为例,所有操作都在内存中进行缓存(全cache),对每秒查询数(Queries-per-second,QPS)和99百分位(响应耗时从小到大排列,处于99%位置的响应耗时)进行分析,可以得到如下表1所示的QPS指标:
表1
其中,当线程数达到200时,CPU占用率已经接近100%,此时达到CPU满载,由表1可以看出本申请在方案一的基础上,系统整体的性能有所提升。其中,方案一是指采用哈希表管理连接池的方法,即采用一个哈希表存储整个连接池。进一步,可以参见表2所示的99百分位指标所示:
表2
其中,由表2可知,在线程数较多时,本申请在99百分位指标上的时延对比方案一来说有较大下降,在300线程时,本申请相较于方案一来说,99百分位指标下降了10.24%,可以看出,本申请的方案性能抖动较小,整体服务质量较高。
一方面,测试在应用层并发请求超过连接池容量时,连接池的表现情况,假定控制单个连接池的最大容量为单一变量,在固定300个应用层并发全缓存带你查询请求下进行性能测试。其中,假定单一连接池的最大容量为10,在16个存储节点的情况下,连接池总共最多容纳160个线程,此时用300个线程进行压测,许多线程会进入阻塞状态,具体如表3所示:
表3
如表3所示,在连接池的最大容量为5和10的情况下,本申请的QPS在方案一的基础上提升了20%左右,可以看出,在连接池容量为瓶颈时,本申请可以有效实现更高程度上的并发。
一方面,在用全缓存基于主键点查询,且CPU满载时,计算各个函数在运行过程中占用CPU的时间,具体的,可以获取互斥锁和读写锁的相关操作占整个运行时间的百分比,具体如表4所示:
表4
互斥锁 | 在系统底层查找线程(pthread_getspecific) | 读写锁 | 总计 | |
方案一 | 0.355996% | 0.060372% | N/A | 0.416368% |
本申请 | 0.138516% | 0.07392% | 0.00003% | 0.212466% |
由表4可知,本申请所使用的方案可以极大地减少CPU占用时间,提升系统性能。
综上可知,本申请的方案具有较高的并发能力以及更低的时延,具有较大的进步。
进一步地,请参见图8,图8是本申请实施例提供的一种数据管理装置示意图。该数据管理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码等),例如该数据管理装置可以为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。如图8所示,该数据管理装置800可以用于图4a所对应实施例中的计算机设备,具体的,该装置可以包括:请求接收模块11、主键获取模块12、映射遍历模块13、连接获取模块14及数据获取模块15。
请求接收模块11,用于接收针对目标存储节点的节点访问请求;
主键获取模块12,用于获取目标存储节点的目标存储节点主键;
映射遍历模块13,用于基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;
连接获取模块14,用于若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息;
数据获取模块15,用于基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。
其中,该主键获取模块12,包括:
主键生成单元121,用于获取目标存储节点的目标节点名称及目标节点版本号,对目标节点名称及目标节点版本号进行组合,生成目标存储节点的目标存储节点主键。
其中,该连接获取模块14,包括:
连接确定单元141,用于若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中,对位于栈顶的网络连接信息进行出栈处理,将出栈后的网络连接信息确定为目标网络连接信息。
其中,该映射遍历模块13,包括:
读锁添加单元131,用于在连接获取线程添加第一读写锁中的第一读锁,基于第一读锁在连接映射表中查找目标存储节点主键;
该装置800还包括:
阻塞等待模块16,用于若在连接映射表中未遍历到目标存储节点主键对应的目标连接栈,则对第一读锁进行解锁操作,为连接获取线程增加阻塞等待线程;阻塞等待线程处于阻塞运行状态;
重遍历模块17,用于当阻塞等待线程从阻塞运行状态恢复为阻塞释放状态时,调用连接获取线程,基于目标存储节点主键再次对连接映射表进行遍历。
其中,该装置800还包括:
组件获取模块18,用于获取等待处理组件,为阻塞等待线程添加等待处理组件关联的第二读写锁中的第二读锁;等待处理组件包括存储节点信息及第二读写锁;
信息查找模块19,用于基于等待处理组件查找目标存储节点主键对应的目标存储节点信息,若未查找到目标存储节点信息,则对第二读写锁中的第二读锁进行解锁处理,确定在连接映射表中未遍历到目标存储节点对应的目标连接栈;
状态监测模块20,用于若查找到目标存储节点信息,则监测阻塞等待线程对应的阻塞状态;阻塞状态包括阻塞运行状态或阻塞释放状态。
其中,该状态监测模块20,包括:
条件获取单元20a,用于若查找到目标存储节点信息,则获取阻塞条件结构体;阻塞条件结构体包括用于表征阻塞状态的阻塞条件对象及第一互斥锁;
对象监测单元20b,用于为阻塞等待线程添加阻塞条件结构体中的第一互斥锁,在携带第一互斥锁的阻塞等待线程中获取阻塞条件对象的对象状态,当已获取到对象状态时,对阻塞等待线程中的第一互斥锁进行解锁处理;
查找失败单元20c,用于当阻塞条件对象的对象状态为对象异常状态时,确定未查找到目标存储节点;
重连接单元20d,用于当阻塞条件对象的对象状态为对象唤醒状态时,调用连接获取线程,在连接获取线程中,基于目标存储节点主键再次对连接映射表进行遍历。
其中,该对象监测单元20b,包括:
异常确定子单元201b,用于在携带第一互斥锁的阻塞等待线程中,若阻塞等待线程出现线程异常,则确定阻塞条件对象的对象状态为对象异常状态;
唤醒确定子单元202b,用于若阻塞等待线程在阻塞等待时间内,获取到连接入栈线程针对阻塞条件对象的唤醒信号,则确定阻塞条件对象的对象状态为对象唤醒状态。
其中,该装置800还包括:
连接入栈模块21,用于当获取到节点访问请求所请求的业务数据时,获取等待处理组件,调用针对目标网络连接信息的连接入栈线程,基于连接入栈线程,将目标网络连接信息添加至目标存储节点信息对应的目标连接栈中,获取连接入栈线程的连接入栈结果;
失败记录模块22,用于若连接入栈线程的连接入栈结果为入栈失败结果,则记录入栈失败结果;
第一加锁模块23,用于若连接入栈线程的连接入栈结果为入栈成功结果,则为连接入栈线程添加等待处理组件关联的第二读写锁中的第二读锁;等待处理组件包括存储节点信息及第二读写锁;
入栈结束模块24,用于基于等待处理组件查找目标存储节点信息,若未查找到目标存储节点信息,则结束连接入栈线程;目标存储节点信息是指目标存储节点的节点信息;
解锁模块26,用于基于入栈结束模块24调用该解锁模块26,在结束连接入栈线程后,对第二读锁进行解锁处理;
对象唤醒模块25,用于若查找到目标存储节点信息,则为连接入栈线程添加阻塞条件结构体中的第一互斥锁,发起针对阻塞条件结构体中的阻塞条件对象的唤醒信号,对连接入栈线程关联的第一互斥锁进行解锁处理;
解锁模块26,还用于基于对象唤醒模块25调用该解锁模块26,在对连接入栈线程关联的第一互斥锁进行解锁处理后,对第二读锁进行解锁处理。
其中,该装置800还包括:
指针创建模块27,用于当获取到节点访问请求所请求的业务数据时,调用针对目标网络连接信息的连接入栈线程,基于连接入栈线程,创建目标栈指针,获取目标网络连接信息对应的目标存储节点主键;
主键查找模块28,用于基于目标栈指针,在连接映射表中查找目标存储节点主键;
栈获取模块29,用于获取目标存储节点主键的主键查找结果,基于主键查找结果及目标栈指针获取目标存储节点主键对应的目标连接栈;
入栈成功确定模块30,用于若将目标网络连接信息成功添加至目标连接栈,则将入栈成功结果确定为连接入栈线程的连接入栈结果;
入栈失败确定模块31,用于若未将目标网络连接信息添加至目标连接栈,则将入栈失败结果确定为连接入栈线程的连接入栈结果。
其中,该栈获取模块29,包括:
结果获取单元291,用于获取目标存储节点主键的主键查找结果;
栈确定单元292,用于若主键查找结果为查找成功结果,则将基于目标栈指针所查找到的连接栈确定为目标存储节点信息对应的目标连接栈;
栈生成单元293,用于若主键查找结果为查找失败结果,则在连接映射表中插入目标存储节点主键,基于目标栈指针生成目标存储节点主键对应的目标连接栈。
其中,该栈生成单元293,包括:
实例创建子单元2931,用于若主键查找结果为查找失败结果,则创建连接栈实例;连接栈实例包括栈对象及第二互斥锁;
写锁添加子单元2932,用于为连接入栈线程添加主读写锁中的主写锁;
映射更新子单元2933,用于将连接栈实例及目标存储节点主键关联插入连接映射表;
实例删除子单元2934,用于若插入失败,则删除连接栈实例,返回执行基于目标栈指针,在连接映射表中查找目标存储节点主键的步骤;
实例确定子单元2935,用于若插入成功,则基于目标栈指针将连接栈实例确定为目标存储节点主键对应的目标连接栈。
其中,该装置800还包括:
数量获取模块32,用于获取目标连接栈的目标连接数量;
入栈取消模块33,用于若目标连接数量大于或等于栈最大连接数,则确定未将目标网络连接信息添加至目标连接栈;栈最大连接数用于表示目标连接栈中可以添加的网络连接信息的总数。
其中,该装置800还包括:
入栈时间获取模块34,用于遍历目标连接栈,获取目标连接栈中的N个网络连接信息分别对应的连接入栈时间;
连接时长确定模块35,用于获取系统网络时间,根据系统网络时间及N个网络连接信息分别对应的连接入栈时间,确定N个网络连接信息分别对应的连接建立时长;
回收统计模块36,用于统计N个网络连接信息中,连接建立时长大于或等于连接回收时间阈值的网络连接信息的连接回收数量;连接回收数量为k,k为正整数;
连接出栈模块37,用于从目标连接栈的栈顶依次对k个网络连接信息进行出栈处理。
本申请实施例提供了一种数据管理装置,该装置可以运行于计算节点中,接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。通过上述过程,引入了映射表和栈,通过映射表将计算节点与存储节点进行关联,可以管理该计算节点到各个存储节点的连接,即相当于管理多个连接池,每个连接池内部的连接都指向同一个存储节点,并通过栈管理连接池,每个栈可以管理计算节点至存储节点的多个连接,使得计算节点可以很方便地查找到需要访问的存储节点,并从栈中获取到用于访问该存储节点的连接,提高对数据管理的便利性及效率。
参见图9,图9是本申请实施例提供的一种计算机设备的结构示意图。如图9所示,本申请实施例中的计算机设备可以包括:一个或多个处理器901、存储器902和输入输出接口903。该处理器901、存储器902和输入输出接口903通过总线904连接。存储器902用于存储计算机程序,该计算机程序包括程序指令,输入输出接口903用于接收数据及输出数据,如用于计算节点与存储节点之间进行数据交互,或者用于用户设备与计算节点之间进行数据交互;处理器901用于执行存储器902存储的程序指令。
其中,该处理器901可以执行如下操作:
接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;
基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;
若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。
在一些可行的实施方式中,该处理器901可以是中央处理单元 (centralprocessing unit,CPU),该处理器还可以是其他通用处理器、数字信号处理器 (digitalsignal processor,DSP)、专用集成电路 (application specific integrated circuit,ASIC)、现成可编程门阵列 (field-programmable gate array,FPGA) 或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器902可以包括只读存储器和随机存取存储器,并向处理器901和输入输出接口903提供指令和数据。存储器902的一部分还可以包括非易失性随机存取存储器。例如,存储器902还可以存储设备类型的信息。
具体实现中,该计算机设备可通过其内置的各个功能模块执行如该图4a中各个步骤所提供的实现方式,具体可参见该图4a中各个步骤所提供的实现方式,在此不再赘述。
本申请实施例通过提供一种计算机设备,包括:处理器、输入输出接口、存储器,通过处理器获取存储器中的计算机程序,执行该图4a中所示方法的各个步骤,进行数据管理操作。本申请实施例实现了接收针对目标存储节点的节点访问请求,获取目标存储节点的目标存储节点主键;基于目标存储节点主键对连接映射表进行遍历;连接映射表包括M个存储节点主键及M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;若在连接映射表中遍历到目标存储节点主键对应的目标连接栈,则从目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于目标网络连接信息与目标存储节点建立目标连接关系,基于目标连接关系从目标存储节点中获取节点访问请求所请求的业务数据。通过上述过程,引入了映射表和栈,通过映射表将计算节点与存储节点进行关联,可以管理该计算节点到各个存储节点的连接,即相当于管理多个连接池,每个连接池内部的连接都指向同一个存储节点,并通过栈管理连接池,每个栈可以管理计算节点至存储节点的多个连接,使得计算节点可以很方便地查找到需要访问的存储节点,并从栈中获取到用于访问该存储节点的连接,提高对数据管理的便利性及效率。
本申请实施例还提供一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序适于由该处理器加载并执行图4a中各个步骤所提供的数据管理方法,具体可参见该图4a中各个步骤所提供的实现方式,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,计算机程序可被部署为在一个计算机设备上执行,或者在位于一个地点的多个计算机设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算机设备上执行。
该计算机可读存储介质可以是前述任一实施例提供的数据管理装置或者该计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例还提供了一种计算机程序产品或计算机程序,该计算机程序产品或计算机程序包括计算机指令,该计算机指令存储在计算机可读存储介质中。计算机设备的处理器从计算机可读存储介质读取该计算机指令,处理器执行该计算机指令,使得该计算机设备执行图4a中的各种可选方式中所提供的方法,引入了映射表和栈,通过映射表将计算节点与存储节点进行关联,可以管理该计算节点到各个存储节点的连接,即相当于管理多个连接池,每个连接池内部的连接都指向同一个存储节点,并通过栈管理连接池,每个栈可以管理计算节点至存储节点的多个连接,使得计算节点可以很方便地查找到需要访问的存储节点,并从栈中获取到用于访问该存储节点的连接,提高对数据管理的便利性及效率。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在该说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据管理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据管理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据管理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据管理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并和删减。
本申请实施例装置中的模块可以根据实际需要进行合并、划分和删减。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (15)
1.一种数据管理方法,其特征在于,所述方法包括:
接收针对目标存储节点的节点访问请求,获取所述目标存储节点的目标存储节点主键;
基于所述目标存储节点主键对连接映射表进行遍历;所述连接映射表包括M个存储节点主键及所述M个存储节点主键分别对应的连接栈,M为正整数;一个连接栈包括N个处于空闲连接状态的网络连接信息;N为自然数;
若在所述连接映射表中遍历到所述目标存储节点主键对应的目标连接栈,则从所述目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,基于所述目标网络连接信息与所述目标存储节点建立目标连接关系,基于所述目标连接关系从所述目标存储节点中获取所述节点访问请求所请求的业务数据;
若在所述连接映射表中未遍历到所述目标存储节点主键对应的目标连接栈,则对第一读锁进行解锁操作,为连接获取线程增加阻塞等待线程;所述阻塞等待线程处于阻塞运行状态;所述第一读锁为所述连接获取线程所携带的;
当所述阻塞等待线程从所述阻塞运行状态恢复为阻塞释放状态时,调用所述连接获取线程,基于所述目标存储节点主键再次对所述连接映射表进行遍历。
2.如权利要求1所述的方法,其特征在于,所述获取所述目标存储节点的目标存储节点主键,包括:
获取所述目标存储节点的目标节点名称及目标节点版本号,对所述目标节点名称及所述目标节点版本号进行组合,生成所述目标存储节点的目标存储节点主键。
3.如权利要求1所述的方法,其特征在于,所述若在所述连接映射表中遍历到所述目标存储节点主键对应的目标连接栈,则从所述目标连接栈所包括的N个网络连接信息中获取目标网络连接信息,包括:
若在所述连接映射表中遍历到所述目标存储节点主键对应的目标连接栈,则从所述目标连接栈所包括的N个网络连接信息中,对位于栈顶的网络连接信息进行出栈处理,将出栈后的网络连接信息确定为目标网络连接信息。
4.如权利要求1所述的方法,其特征在于,所述基于所述目标存储节点主键对连接映射表进行遍历,包括:
在连接获取线程添加第一读写锁中的第一读锁,基于所述第一读锁在连接映射表中查找所述目标存储节点主键。
5.如权利要求4所述的方法,其特征在于,所述方法还包括:
获取等待处理组件,为所述阻塞等待线程添加所述等待处理组件关联的第二读写锁中的第二读锁;所述等待处理组件包括存储节点信息及所述第二读写锁;
基于所述等待处理组件查找所述目标存储节点主键对应的目标存储节点信息,若未查找到所述目标存储节点信息,则对所述第二读写锁中的第二读锁进行解锁处理,确定在所述连接映射表中未遍历到所述目标存储节点对应的目标连接栈;
若查找到所述目标存储节点信息,则监测所述阻塞等待线程对应的阻塞状态;所述阻塞状态包括所述阻塞运行状态或所述阻塞释放状态。
6.如权利要求5所述的方法,其特征在于,所述若查找到所述目标存储节点信息,则监测所述阻塞等待线程对应的阻塞状态,包括:
若查找到所述目标存储节点信息,则获取阻塞条件结构体;所述阻塞条件结构体包括用于表征所述阻塞状态的阻塞条件对象及第一互斥锁;
为所述阻塞等待线程添加所述阻塞条件结构体中的所述第一互斥锁,在携带所述第一互斥锁的所述阻塞等待线程中获取所述阻塞条件对象的对象状态,当已获取到所述对象状态时,对所述阻塞等待线程中的所述第一互斥锁进行解锁处理;
当所述阻塞条件对象的对象状态为对象异常状态时,确定未查找到所述目标存储节点;
当所述阻塞条件对象的对象状态为对象唤醒状态时,调用所述连接获取线程,在所述连接获取线程中,基于所述目标存储节点主键再次对所述连接映射表进行遍历。
7.如权利要求6所述的方法,其特征在于,所述在携带所述第一互斥锁的所述阻塞等待线程中获取所述阻塞条件对象的对象状态,包括:
在携带所述第一互斥锁的所述阻塞等待线程中,若所述阻塞等待线程出现线程异常,则确定所述阻塞条件对象的对象状态为所述对象异常状态;
若所述阻塞等待线程在阻塞等待时间内,获取到连接入栈线程针对所述阻塞条件对象的唤醒信号,则确定所述阻塞条件对象的对象状态为所述对象唤醒状态。
8.如权利要求3所述的方法,其特征在于,所述方法还包括:
当获取到所述节点访问请求所请求的业务数据时,获取等待处理组件,调用针对所述目标网络连接信息的连接入栈线程,基于所述连接入栈线程,将所述目标网络连接信息添加至所述目标存储节点信息对应的目标连接栈中,获取所述连接入栈线程的连接入栈结果;
若所述连接入栈线程的连接入栈结果为入栈成功结果,则为所述连接入栈线程添加所述等待处理组件关联的第二读写锁中的第二读锁;所述等待处理组件包括存储节点信息及所述第二读写锁;
基于所述等待处理组件查找所述目标存储节点信息,若未查找到所述目标存储节点信息,则结束所述连接入栈线程,对所述第二读锁进行解锁处理;所述目标存储节点信息是指所述目标存储节点的节点信息;
若查找到所述目标存储节点信息,则为所述连接入栈线程添加阻塞条件结构体中的第一互斥锁,发起针对所述阻塞条件结构体中的阻塞条件对象的唤醒信号,对所述连接入栈线程关联的第一互斥锁进行解锁处理,对所述第二读锁进行解锁处理。
9.如权利要求3所述的方法,其特征在于,所述方法还包括:
当获取到所述节点访问请求所请求的业务数据时,调用针对目标网络连接信息的连接入栈线程,基于所述连接入栈线程,创建目标栈指针,获取所述目标网络连接信息对应的目标存储节点主键;
基于所述目标栈指针,在所述连接映射表中查找所述目标存储节点主键;
获取所述目标存储节点主键的主键查找结果,基于所述主键查找结果及所述目标栈指针获取所述目标存储节点主键对应的目标连接栈;
若将所述目标网络连接信息成功添加至所述目标连接栈,则将入栈成功结果确定为所述连接入栈线程的连接入栈结果;
若未将所述目标网络连接信息添加至所述目标连接栈,则将入栈失败结果确定为所述连接入栈线程的连接入栈结果。
10.如权利要求9所述的方法,其特征在于,所述获取所述目标存储节点主键的主键查找结果,基于所述主键查找结果及所述目标栈指针获取所述目标存储节点主键对应的目标连接栈,包括:
获取所述目标存储节点主键的主键查找结果;
若所述主键查找结果为查找成功结果,则将基于所述目标栈指针所查找到的连接栈确定为所述目标存储节点信息对应的目标连接栈;
若所述主键查找结果为查找失败结果,则在所述连接映射表中插入所述目标存储节点主键,基于所述目标栈指针生成所述目标存储节点主键对应的目标连接栈。
11.如权利要求10所述的方法,其特征在于,所述若所述主键查找结果为查找失败结果,则在所述连接映射表中插入所述目标存储节点主键,基于所述目标栈指针生成所述目标存储节点主键对应的目标连接栈,包括:
若所述主键查找结果为查找失败结果,则创建连接栈实例;所述连接栈实例包括栈对象及第二互斥锁;
为所述连接入栈线程添加主读写锁中的主写锁;
将所述连接栈实例及所述目标存储节点主键关联插入所述连接映射表;
若插入失败,则删除所述连接栈实例,返回执行所述基于所述目标栈指针,在所述连接映射表中查找所述目标存储节点主键的步骤;
若插入成功,则基于所述目标栈指针将所述连接栈实例确定为所述目标存储节点主键对应的目标连接栈。
12.如权利要求9所述的方法,其特征在于,所述方法还包括:
获取所述目标连接栈的目标连接数量;
若所述目标连接数量大于或等于栈最大连接数,则确定未将所述目标网络连接信息添加至所述目标连接栈;所述栈最大连接数用于表示所述目标连接栈中可以添加的网络连接信息的总数。
13.如权利要求1所述的方法,其特征在于,所述方法还包括:
遍历所述目标连接栈,获取所述目标连接栈中的N个网络连接信息分别对应的连接入栈时间;
获取系统网络时间,根据所述系统网络时间及所述N个网络连接信息分别对应的连接入栈时间,确定所述N个网络连接信息分别对应的连接建立时长;
统计所述N个网络连接信息中,所述连接建立时长大于或等于连接回收时间阈值的网络连接信息的连接回收数量;所述连接回收数量为k,k为正整数;
从所述目标连接栈的栈顶依次对k个网络连接信息进行出栈处理。
14.一种计算机设备,其特征在于,包括处理器、存储器、输入输出接口;
所述处理器分别与所述存储器和所述输入输出接口相连,其中,所述输入输出接口用于接收数据及输出数据,所述存储器用于存储计算机程序,所述处理器用于调用所述计算机程序,以使得所述计算机设备执行权利要求1-13任一项所述的方法。
15.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序适于由处理器加载并执行,以使得具有所述处理器的计算机设备执行权利要求1-13任一项所述的方法。
Priority Applications (3)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110794085.5A CN113239098B (zh) | 2021-07-14 | 2021-07-14 | 一种数据管理方法、计算机及可读存储介质 |
PCT/CN2022/098885 WO2023284473A1 (zh) | 2021-07-14 | 2022-06-15 | 数据管理方法、装置、计算机设备及存储介质 |
US18/296,987 US20230305724A1 (en) | 2021-07-14 | 2023-04-06 | Data management method and apparatus, computer device, and storage medium |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110794085.5A CN113239098B (zh) | 2021-07-14 | 2021-07-14 | 一种数据管理方法、计算机及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113239098A CN113239098A (zh) | 2021-08-10 |
CN113239098B true CN113239098B (zh) | 2021-09-28 |
Family
ID=77135469
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110794085.5A Active CN113239098B (zh) | 2021-07-14 | 2021-07-14 | 一种数据管理方法、计算机及可读存储介质 |
Country Status (3)
Country | Link |
---|---|
US (1) | US20230305724A1 (zh) |
CN (1) | CN113239098B (zh) |
WO (1) | WO2023284473A1 (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113239098B (zh) * | 2021-07-14 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种数据管理方法、计算机及可读存储介质 |
CN115955319B (zh) * | 2023-03-14 | 2023-06-02 | 季华实验室 | 数据集生成系统 |
Family Cites Families (16)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
JP2000047961A (ja) * | 1998-07-31 | 2000-02-18 | Nec Corp | ネットワークシステムの監視装置と監視方法 |
KR100483022B1 (ko) * | 2002-12-02 | 2005-04-18 | 한국전자통신연구원 | 위치 관리 서버와 이를 구비한 이더넷 기반의 무선랜 분배시스템 및 그 구현 방법 |
US8589574B1 (en) * | 2005-12-29 | 2013-11-19 | Amazon Technologies, Inc. | Dynamic application instance discovery and state management within a distributed system |
CN103646051B (zh) * | 2013-11-27 | 2017-02-08 | 武汉邮电科学研究院 | 一种基于列存储的大数据并行处理系统及方法 |
US9152474B2 (en) * | 2014-01-20 | 2015-10-06 | Netapp, Inc. | Context aware synchronization using context and input parameter objects associated with a mutual exclusion lock |
US11556396B2 (en) * | 2015-05-08 | 2023-01-17 | Seth Lytle | Structure linked native query database management system and methods |
CN106817402B (zh) * | 2016-11-29 | 2018-02-27 | 上海壹账通金融科技有限公司 | 缓存数据的处理方法及装置 |
US11303442B2 (en) * | 2018-10-09 | 2022-04-12 | International Business Machines Corporation | Blockchain notification board storing blockchain resources |
CN109543080B (zh) * | 2018-12-04 | 2020-11-06 | 北京字节跳动网络技术有限公司 | 一种缓存数据处理方法、装置、电子设备及存储介质 |
CN109684414B (zh) * | 2018-12-26 | 2022-04-08 | 百度在线网络技术(北京)有限公司 | 区块数据的同步方法、装置、设备及存储介质 |
CN110581892B (zh) * | 2019-09-17 | 2022-04-01 | 上海保险交易所股份有限公司 | 基于区块链的网络连接及恢复机制 |
US11494380B2 (en) * | 2019-10-18 | 2022-11-08 | Splunk Inc. | Management of distributed computing framework components in a data fabric service system |
CN112187963B (zh) * | 2020-08-20 | 2023-02-28 | 深圳华数云计算技术有限公司 | 分布式哈希表实现方法、计算机装置和存储介质 |
CN112306991A (zh) * | 2020-10-30 | 2021-02-02 | 深圳前海微众银行股份有限公司 | 一种树形结构中数据的处理方法及装置、设备、存储介质 |
CN113014662A (zh) * | 2021-03-11 | 2021-06-22 | 联想(北京)有限公司 | 数据处理方法及基于NVMe-oF协议的存储系统 |
CN113239098B (zh) * | 2021-07-14 | 2021-09-28 | 腾讯科技(深圳)有限公司 | 一种数据管理方法、计算机及可读存储介质 |
-
2021
- 2021-07-14 CN CN202110794085.5A patent/CN113239098B/zh active Active
-
2022
- 2022-06-15 WO PCT/CN2022/098885 patent/WO2023284473A1/zh unknown
-
2023
- 2023-04-06 US US18/296,987 patent/US20230305724A1/en active Pending
Also Published As
Publication number | Publication date |
---|---|
US20230305724A1 (en) | 2023-09-28 |
CN113239098A (zh) | 2021-08-10 |
WO2023284473A1 (zh) | 2023-01-19 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN113239098B (zh) | 一种数据管理方法、计算机及可读存储介质 | |
US7870226B2 (en) | Method and system for an update synchronization of a domain information file | |
US9183284B2 (en) | Inserting data into an in-memory distributed nodal database | |
KR101959153B1 (ko) | 데이터베이스에서의 계좌와 관련된 거래 요청의 효율적인 처리를 위한 시스템 | |
US20130160028A1 (en) | Method and apparatus for low latency communication and synchronization for multi-thread applications | |
CN102262559B (zh) | 一种资源共享的方法及系统 | |
US11080261B2 (en) | Hybrid concurrency control | |
CN101198937A (zh) | 安全存储管理系统和方法 | |
CN113938321B (zh) | 可扩展的运维管理系统、方法、电子设备和可读存储介质 | |
CN111897666A (zh) | 用于多进程之间通信的方法、设备及系统 | |
CN103020003A (zh) | 面向多核程序确定性重演的内存竞争记录装置及其控制方法 | |
CN111597270A (zh) | 数据同步方法、装置、设备及计算机存储介质 | |
CN111416825A (zh) | 线程间无锁日志管理方法和系统、终端、存储介质 | |
WO2022242372A1 (zh) | 对象处理方法、装置、计算机设备和存储介质 | |
CN116561137A (zh) | 事务处理方法、装置、计算机设备及存储介质 | |
CN100449494C (zh) | 多处理计算系统中的状态跟踪和恢复方法和系统 | |
US11949738B2 (en) | Method and device for migration testing in a transition space between different types of cloud systems | |
CN107391539B (zh) | 事务处理方法、服务器和存储介质 | |
US20080250421A1 (en) | Data Processing System And Method | |
US20080168077A1 (en) | Pre-loading of an in memory database | |
US7539678B2 (en) | Systems and methods for controlling access to an object | |
CN114020472A (zh) | 一种数据采集方法、装置、设备及存储介质 | |
CN115113989A (zh) | 事务执行方法、装置、计算设备及存储介质 | |
CN112559628A (zh) | 一种多集群消息的同步方法、装置、介质及电子设备 | |
JP2006079485A (ja) | 電子計算機における障害解析用情報収集方式 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40052218 Country of ref document: HK |