CN112131002B - 数据管理方法及装置 - Google Patents
数据管理方法及装置 Download PDFInfo
- Publication number
- CN112131002B CN112131002B CN202011018647.9A CN202011018647A CN112131002B CN 112131002 B CN112131002 B CN 112131002B CN 202011018647 A CN202011018647 A CN 202011018647A CN 112131002 B CN112131002 B CN 112131002B
- Authority
- CN
- China
- Prior art keywords
- data
- cache queue
- parameter
- thread
- queue
- 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
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/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
-
- 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/54—Interprogram communication
- G06F9/546—Message passing systems or structures, e.g. queues
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F2209/00—Indexing scheme relating to G06F9/00
- G06F2209/54—Indexing scheme relating to G06F9/54
- G06F2209/548—Queue
Abstract
本申请实施例提供一种数据管理方法及装置,该数据管理方法先通过接收生产者线程的数据投放请求,然后获取缓存队列的队列标识,使得可以基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中,而不会与其他生产者线程发生冲突,且在接收到消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元,使得消费者线程在提取数据时不会与其他消费者产生冲突,从而使得缓存队列无需设置互斥锁或者原子操作,降低了CPU资源的占用。
Description
技术领域
本申请涉及数据管理技术领域,尤其是涉及一种数据管理方法及装置。
背景技术
现有数据处理过程中,为了充分利用多个CPU(Central Processing Unit,中央处理器),会通过采用多个线程同时执行多个任务,同时,各个线程会向同一日志队列中投放日志,这样会导致线程之间出现冲突,为了线程的读写安全,会对日志队列设置互斥锁或者采用原子操作,其中,互斥锁指为每个对象(例如数据)设置的标记,以使得任一时刻仅有一个线程访问该对象,从而必争数据安全,原子操作指不会被线程调度机制打断的操作,即该操作开始后,一直运作至结束,不会切换到另一个线程,线程安全指在多个线程并行执行时,通过同步机制保证各个线程正常准确的执行,而对日志队列设置互斥锁或者采用原子操作的过程中需要消耗较大的CPU资源,导致服务器出现卡顿、掉线等问题。
所以,现有数据处理过程存在日志队列需要加互斥锁或者采用原子操作占用较大的CPU资源导致服务器运行不稳定的问题。
发明内容
本申请实施例提供一种数据管理方法及装置,用以解决现有数据处理过程存在日志队列需要加互斥锁或者采用原子操作占用较大的CPU资源导致服务器运行不稳定的问题。
一方面,本申请实施例提供一种数据管理方法,该数据管理方法包括:
接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;
获取缓存队列的队列标识;
基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中;
在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
一方面,本申请实施例提供一种数据管理装置,该数据管理装置包括:
接收模块,用于接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;
获取模块,用于获取缓存队列的队列标识;
缓存模块,用于基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中;
发送模块,用于在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
在一实施例中,缓存模块用于获取所有缓存队列的投放参数和读取参数,并缓存至处理器;根据生产者线程对应的缓存队列的队列标识,从处理器中确定生产者线程对应的投放参数;根据生产者线程对应的投放参数,将数据内容缓存至生产者线程对应的缓存队列中。
在一实施例中,缓存模块用于获取消费者线程的消费者线程标识,并根据消费者线程标识确定与消费者线程对应的目标缓存队列;从处理器中确定目标缓存队列的读取参数;根据目标缓存队列的读取参数,读取目标缓存队列中的数据内容并发送至消费者线程。
在一实施例中,缓存模块用于获取缓存队列的投放参数的数据长度、读取参数的数据长度;获取处理器的最大数据处理量,并根据处理器的最大数据处理量,得到处理器的缓存行的行长度;根据缓存队列的投放参数的数据长度、读取参数的数据长度以及行长度,确定缓存队列的投放参数与读取参数是否处于同一缓存行;在缓存队列的投放参数与读取参数处于同一缓存行时,修改缓存队列的投放参数的数据长度以及缓存队列的读取参数的数据长度,使得缓存队列的投放参数与读取参数不处于同一缓存行。
在一实施例中,缓存模块用于根据行长度、确定缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位;根据缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位,修改缓存队列的投放参数和读取参数的长度。
在一实施例中,数据管理装置还包括预设模块,预设模块用于预设日志数据的静态模板以及静态模板对应的模板标识;将静态模板和模板标识发送至生产者线程,以使得生产者线程根据静态模板和模板标识以及初始日志数据,生成数据内容,数据内容包括初始日志数据相对于静态模板的动态数据以及模板标识。
在一实施例中,预设模块用于获取生产者线程对应的日志类型;根据生产者线程对应的日志类型,确定与日志类型对应的静态模板和模板标识;将日志类型对应的静态模板和模板标识发送至生产者线程。
在一实施例中,数据管理装置还包括组合模块,组合模块用于接收终端发送的日志数据解析请求,日志数据解析请求携带日志数据标识;获取日志数据标识对应的数据内容;调用数据内容中模板标识对应的静态模板;组合静态模板与数据内容中的动态数据,得到日志数据标识对应的日志数据;向终端发送日志数据。
在一实施例中,发送模块用于检测消费者线程写入存储单元的数据内容;判断数据内容中是否存在模板标识;在数据内容中携带模板标识时,根据模板标识,确定数据内容对应的静态模板;根据静态模板以及数据内容中的动态数据,还原得到数据内容对应的日志数据,并存入存储单元。
一方面,本申请实施例提供了一种计算机设备,其包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,处理器执行程序时实现如上述方法的步骤。
一方面,本申请实施例提供了一种计算机可读存储介质,计算机可读存储介质存储有多条指令,指令适于处理器进行加载,以执行上述方法中的步骤。
有益效果:本申请实施例提供一种数据管理方法及装置,该数据管理方法先通过接收生产者线程的数据投放请求,然后获取缓存队列的队列标识,使得可以基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中,然后在接收到消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元;本申请实施例通过使得生产者线程标识和队列标识一一对应,使得消费者线程与缓存队列一一对应,从而使得生产者线程能够将数据内容缓存至对应的缓存队列,而不会与其他生产者线程发生冲突,消费者线程在提取数据时不会与其他消费者产生冲突,从而使得缓存队列无需设置互斥锁或者原子操作,降低了CPU资源的占用。
附图说明
下面结合附图,通过对本申请的具体实施方式详细描述,将使本申请的技术方案及其它有益效果显而易见。
图1a为本申请实施例提供的数据管理系统的场景示意图。
图1b为本申请实施例提供的数据管理系统的组网示意图。
图2为本申请实施例提供的数据管理方法的第一种流程示意图。
图3为本申请实施例提供的数据管理方法的第二种流程示意图。
图4为本申请实施例提供的数据管理方法中的缓存队列的示意图。
图5为本申请实施例提供的数据管理方法中的缓存队列的投放参数和读取参数的第一种示意图。
图6为本申请实施例提供的数据管理方法中的缓存队列的投放参数和读取参数的第二种示意图。
图7为本申请实施例提供的数据管理装置的结构示意图。
图8为本申请实施例提供的计算机设备的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
参见图1a,以该数据管理装置集成在计算机设备中为例,该计算机设备可以接收用户终端发送的日志存储请求;接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;获取缓存队列的队列标识;基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中;在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
参见图1b,图1b为本申请实施例提供的数据管理装置的场景示意图,该系统可以包括终端以及服务器、终端之间、服务器之间以及终端与服务器之间通过各种网关组成的互联网等方式连接通信,不再赘述,其中,终端包括用户终端11等,服务器包括数据服务器12以及通信服务器13等,其中:
用户终端11包括但不局限于平板电脑、笔记本电脑、个人计算机(PC,PersonalComputer)、微型处理盒子、或者其他设备等;主要提供数据获取功能、数据展示功能等;
服务器包括本地服务器和/或远程服务器等。数据服务器12以及通信服务器13都可以部署在本地服务器,也可以部分或者全部部署在远程服务器上。
需要说明的是,图1b所示的系统场景示意图仅仅是一个示例,本申请实施例描述的服务器以及场景是为了更加清楚的说明本申请实施例的技术方案,并不构成对于本申请实施例提供的技术方案的限定,本领域普通技术人员可知,随着系统的演变和新业务场景的出现,本申请实施例提供的技术方案对于类似的技术问题,同样适用。以下分别进行详细说明。需说明的是,以下实施例的描述顺序不作为对实施例优选顺序的限定。
图2为本申请实施例提供的数据管理方法的第一种流程示意图,应用于上述服务器,请参阅图2,该数据管理方法包括以下步骤:
201:接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;
在一种实施例中,生产者线程指向缓存队列中投放数据的线程,该线程可以在生成数据后,将数据投放到缓存队列中,以进行相应的存储。
在一种实施例中,生产者线程标识指生产者线程的身份信息,每个生产者线程具有特定的生产者线程标识,通过该生产者线程标识,可以查找到唯一的生产者线程。
在一种实施例中,在接收生产者线程的数据投放请求前,还包括接收终端发送的数据查看请求,在接收到终端发送的数据查看请求时,表示终端需要看到数据,则可以接收生产者线程的数据投放请求,使得生产者线程生成对应的数据,并通过生产者线程投放数据,相应的进行数据存储和解析,以使得终端可以查看到数据。
202:获取缓存队列的队列标识。
在一种实施例中,缓存队列指存储有数据的队列,该队列可以仅存储数据,在生产者线程需要投放数据时,存储生产者线程投放的数据,在消费者线程需要提取数据时,将生产者线程投放的数据转移至消费者线程,缓存队列中可以仅将生产者线程投放的数据进行存储,无需对数据进行处理,例如缓存队列不进行对数据进行压缩、解析等过程;因此,为了保证缓存队列可以不对数据进行任何处理,可以使得缓存队列能够存储任意格式或者任意大小数据,或者缓存队列可存储特定大小、特定格式的数据,则需要在将数据缓存至缓存队列前,对数据进行相应的压缩、格式修改等操作,使得数据修改为缓存队列可存储的数据格式以及数据大小,但本申请实施例不限于此,在缓存队列中,可以进行简单的数据处理,例如数据的格式修改或者数据的大小修改,使得数据可以存储在缓存队列中。
在一种实施例中,缓存队列的队列标识至缓存队列的身份信息,每个缓存队列具有特定的标识,通过该缓存队列标识,可以查找到唯一的缓存队列。
203:基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中。
在一种实施例中,生产者线程标识和队列标识的一一对应关系指根据需求设定的可以使得生产者线程和缓存队列匹配的关系,例如建立生产者线程标识与队列标识的函数关系,假设生产者线程标识为从1至10的数字,队列标识为11至20的数字,则可以使得生产者线程标识为1的生产者线程与队列标识为11的缓存队列对应,生产者线程标识为2的生产者线程与队列标识为12的缓存队列对应,…,生产者线程标识为10的生产者线程与队列标识为20的缓存队列对应,从而使得可以根据生产者线程标识和队列标识的一一对应关系使得生产者线程与缓存队列能够对应,从而使得各个生产者线程能对应到相应的缓存队列,从而避免各个生产者线程之间出现冲突;还可以通过在生产者线程和缓存队列中设置特定的标志,例如对应的生产者线程和缓存队列中均含有字母“z”,而其他的生产者线程和缓存队列中不存在字母“z”,相应的其他的生产者线程和缓存队列设置对应的特定的标志,使得生产者线程和缓存队列能够根据特定的标志进行匹配;还可以使得生产者线程和缓存队列的标识采用特定颜色的字符,例如采用红色的字符,从而使得生产者线程和缓存队列能够相应匹配,但本申请实施例不限于此,对于能使得生产者线程和缓存队列匹配的方式,均可以作为生产者线程标识和队列标识的一一对应关系。
在一种实施例中,在将数据内容缓存至缓存队列时,需要获取到缓存队列的投放参数,例如缓存队列中的投放的位置,缓存队列的投放的时间等,使得可以根据缓存队列的投放参数进行相应的投放,从而使得生产者线程能够按照缓存队列的空闲位置投放数据,加快数据投放数据,同时,避免数据投放时占用其他数据的位置,导致其他数据失效,此步骤包括:获取缓存队列的投放参数和读取参数,并缓存至处理器;根据生产者线程对应的缓存队列的队列标识,从处理器中确定生产者线程对应的投放参数;根据生产者线程对应的投放参数,将数据内容缓存至生产者线程对应的缓存队列中;
具体的,例如存在10个缓存队列,那么可以实时获取每个缓存队列的投放参数和读取参数,例如每个缓存队列的投放位置和读取位置,然后在根据生产者线程标识和队列标识,查找到生产者线程对应的缓存队列时,再根据该缓存队列的投放参数和读取参数,可以确定到生产者线程可以投放数据的位置,从而使得生产者线程根据该投放参数,例如投放数据的位置将数据内容缓存到缓存队列中。
204:在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
在一种实施例中,消费者线程指可以从缓存队列中提取数据的线程,该线程可以在提取到数据后,将数据写入存储单元,且消费者线程可以对数据进行处理。
在一种实施例中,日志数据指程序运行过程中以文本形式记录的程序信息,例如某游戏运行过程中在某一时刻出现错误,则可以记录该错误以及时间,或者某软件运行时得到的结果,可以记录该结果作为日志数据,日志数据可以方便开发人员进行错误的定位,直接过程日志数据可以得到程序出错的位置,相应的对错误进行修复,或者根据日志数据对程序进行调试,使得程序正常运行。
在一种实施例中,在将缓存队列中的数据内容发送至消费者线程时,也可以通过缓存队列的读取参数,读取缓存队列中的数据内容,从而使得数据内容发送至消费者线程,此步骤包括:获取消费者线程的消费者线程标识,并根据消费者线程标识确定与消费者线程对应的目标缓存队列;从处理器中确定目标缓存队列的读取参数;根据目标缓存队列的读取参数,读取目标缓存队列中的数据内容并发送至消费者线程;即在向消费者线程发送数据内容时,根据消费者线程的数据提取请求,可以确定消费者线程需要提取的数据,从而可以根据消费者线程需要提取的数据,确定消费者线程对应的目标缓存队列,在确定目标缓存队列后,再确定目标缓存队列的读取参数,从而可以从目标缓存队列中获取到数据内容发送至消费者线程。
在一种实施例中,在根据消费者线程的数据提取请求,确定消费者线程需要提取的数据时,可以在生产者线程投放数据时,获取数据的标识,例如对数据设置特定的标志,并记录该标志,使得在消费者线程发送数据提取请求时,可以在数据提取请求中携带该标志,从而使得可以根据该标志确定需要提取的数据,同时,缓存队列在存储该数据时,同时存储该数据的标志,从而可以根据需要提取的数据确定该数据的标志,确定该缓存队列,从而使得根据数据提取请求,得到消费者线程对应的目标缓存队列,然后在使得消费者线程与目标缓存队列对应后,确定该目标缓存队列的读取参数,从而可以从该目标缓存队列中读取到数据内容并发送至消费者队列;还可以使得生产者线程投放数据时,为生产者线程投放的数据设置标志,从而使得消费者线程在发送数据提取请求时,携带数据标志,使得可以根据消费者线程的数据提取请求确定消费者线程对应的目标缓存队列,进而根据目标缓存队列的读取参数,读取目标缓存队列中的数据内容并发送至消费者线程。
需要说明的是,数据的标志可以类似与生产者线程和缓存队列的标识进行设置,例如为该数据设置特定的颜色的字符,在该数据的头部或者尾部添加特定的字母或者字符,本申请实施例不限于此,数据的标志以能查找到特定的数据进行设置。
在一种实施例中,在接收消费者线程的数据提取请求后的步骤之前,还可以使消费者线程与缓存队列对应连接,使得消费者线程从对应的缓存队列中获取数据,避免多个消费者线程从同一缓存队列中获取数据时发生冲突,此步骤包括:获取消费者线程的消费者线程标识,基于预设的消费者线程标识和队列标识的对应关系,建立消费者线程和缓存队列的连接;即在接收消费者线程的数据提取请求前,先将各个消费者线程和缓存队列连接,使得消费者线程与缓存队列对应,从而在接收到消费者线程的数据提取请求后,可以同时得到消费者线程对应的缓存队列,从而使得可以在确定消费者线程对应的缓存队列后,获取到缓存队列的读取参数,从而可以根据读取参数将数据内容发送至消费者线程中。
在一种实施例中,在获取到缓存队列的投放参数和读取参数前,为了避免缓存队列的投放参数和读取参数之间产生影响,需要使得缓存队列的投放参数与读取参数位于不同缓存行,从而使得在修改投放参数和读取参数中的一个时,不会对另外一个参数产生影响,从而避免在对一个参数修改时,需要重新读取两个参数,此步骤包括:获取缓存队列的投放参数的数据长度、读取参数的数据长度;获取处理器的最大数据处理量,并根据处理器的最大数据处理量,得到处理器的缓存行的行长度;根据缓存队列的投放参数的数据长度、读取参数的数据长度以及行长度,确定缓存队列的投放参数与读取参数是否处于同一缓存行;在缓存队列的投放参数与读取参数处于同一缓存行时,修改缓存队列的投放参数的数据长度以及缓存队列的读取参数的数据长度,使得缓存队列的投放参数与读取参数不处于同一缓存行;具体的,例如缓存队列的投放参数的数据长度为16字节、读取参数的数据长度为16字节,处理器的最大数据处理量为32,则可以得到处理器的缓存行的行长度为32字节,此时,根据缓存队列的投放参数的数据长度即16字节、读取参数的数据长度即16字节,以及行长度即32字节,可以知道缓存队列的投放参数和读取参数会存在处于同一缓存行的情况,则此时确定缓存队列的投放参数和读取参数处于同一缓存行,此时,需要修改缓存队列的投放参数的数据长度、缓存队列的读取参数的数据长度,例如将缓存队列的投放参数的数据长度改为32字节,将缓存队列的读取参数的数据长度改为32字节,则使得缓存队列的投放参数和读取参数不处于同一缓存行。
需要说明的是,缓存行指数据存储时,会以缓存行为单位进行存储,并在读取数据时以缓存行为单位进行读取,在不将投放参数和读取参数设置在不同缓存行时,会存在伪共享的问题,伪共享指在并通过的变量共享一个缓存行时,例如投放参数和读取参数共享一个缓存行时,会影响另一个参数的性能。
在一种实施例中,在对缓存队列的投放参数的长度、缓存队列的读取参数的长度时,可以根据处理器的缓存行的行长度进行修改,此处采用内存对齐的方式使得投放参数和读取参数不处于同一缓存行,此步骤包括:根据行长度、确定缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位;根据缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位,修改缓存队列的投放参数和读取参数的长度;例如,缓存行的行长度为32位,则可以根据缓存行的行长度,将缓存队列的投放参数的长度单位确定为128字节、将缓存队列的读取参数的长度单位确定为128字节,则可以根据投放参数的长度单位和读取参数的长度单位修改缓存队列的投放参数和读取参数。
需要说明的是,内存对齐是指数据在处理器中的设置方式,一个参数的内存地址正好位于它长度的整数倍时就称为自然对齐,例如,处理器的缓存行的行长度为32字节,某个参数的内存地址以十六进制表示为0x00000020,则该参数为自然对齐,因此,采用自然对齐的方式,使得在获取到缓存行的行长度后,在缓存队列的投放参数和读取参数处于同一缓存行时,可以通过使得投放参数和读取参数自然对齐,从而修改投放参数和读取参数的长度。
在一种实施例中,考虑到在投放数据时,会存在不变的部分,即静态模板,因此在投放数据时,可以仅投放静态模板的模板标识和动态数据,在需要查看数据时,再将静态模板的模板标识进行解析,从而可以查看数据,此步骤包括:预设日志数据的静态模板以及静态模板对应的模板标识;将静态模板和模板标识发送至生产者线程,以使得生产者线程根据静态模板和模板标识以及初始日志数据,生成数据内容,数据内容包括初始日志数据相对于静态模板的动态数据以及模板标识;具体的,例如日志的每个信息都用其解释和描述,例如日志中的时间,会采用“时间/10:00”表示,则“时间”属于静态模板中的数据,该数据不改变,而“10:00”属于动态数据,该数据会改变,因此可以将“时间”以及其他的不变的数据作为静态模板,然后为该静态模板设置对应的模板标识,使得可以根据静态模板得到模板标识,根据模板标识得到静态模板,从而在投放数据内容时,仅需要记录静态模板对应的模板标识即可,无需重复记录静态模板,而在查看数据内容时,可以通过静态模板对应的模板标识,得到静态模板,然后根据静态模板和动态数据得到可视化数据。
需要说明的是,初始日志数据指生产者线程生产的日志的实时变化的数据,例如时间为“10:00”时出现错误,则记录时间“10:00”以及错误数据内容例如“断开连接”,将该数据作为初始日志数据,同时,将初始日志数据相对与静态模板的动态数据提取出来,使得数据内容中包括动态数据以及模板标识,从而根据使生产者线程将该数据内容投放至缓存队列。
在一种实施例中,在将静态模板和模板标识发送至生产者线程时,可以根据生产者线程具有的日志类型,向生产者线程发送对应的静态模板和模板标识,此步骤包括:获取生产者线程对应的日志类型;根据生产者线程对应的日志类型,确定与日志类型对应的静态模板和模板标识;将日志类型对应的静态模板和模板标识发送至生产者线程;具体的,例如静态模板和模板标识具有100组,但生产者线程具有的日志类型仅有5种,则生产者线程仅需要得到5种日志类型对应的静态模板和模板标识,从而无需接收100组静态模板和模板标识,在数据传输时较为便捷,且由于仅接收了5种日志类型对应的静态模板和模板标识,在选择静态模板和模板标识时仅需要从5组静态模板和模板标识中选出静态模板和模板标识,而不需要从100组静态模板和模板标识中选出静态模板和模板标识,处理过程较快。
在一种实施例中,在终端需要查看日志数据时,需要将日志数据进行解析,可以对日志数据中的静态模板对应的模板标识进行解析得到静态模板,然后将静态模板和动态数据进行组合,得到日志数据,此步骤包括:接收终端发送的日志数据解析请求,日志数据解析请求携带日志数据标识;获取日志数据标识对应的数据内容;调用数据内容中模板标识对应的静态模板;组合静态模板与数据内容中的动态数据,得到日志数据标识对应的日志数据;向终端发送日志数据;在将日志数据存储到存储单元后,在终端需要查看日志数据时,例如开发人员需要查看数据,从而对程序进行调试或者修复时,可以使得终端发送日志数据解析请求,从而获取到日志数据标识对应的数据内容,然后根据数据内容中的模板标识得到对应的静态模板,从而可以根据静态模板和动态数据得到日志数据。
在一种实施例中,在将缓存队列中的数据内容发送至消费者线程时,为了便于数据查看,可以使得存储在存储单元内的日志数据是还原后的数据,可以通过检测数据内容中是否存在模板标识,在数据内容中存在模板标识时,表示需要根据数据内容中的模板标识得到对应的静态模板,然后根据静态模板和动态数据,得到日志内容,此步骤包括:检测消费者线程写入存储单元的数据内容;判断数据内容中是否存在模板标识;在数据内容中携带模板标识时,根据模板标识,确定数据内容对应的静态模板;根据静态模板以及数据内容中的动态数据,还原得到数据内容对应的日志数据,并存入存储单元。
本申请实施例提供一种数据管理方法,该数据管理方法通过将生产者线程与缓存队列对应,使得生产者线程在向缓存队列投放数据时,生产者线程不会与其他生产者线程冲突,消费者线程与缓存队列一一对应,消费者线程在提取数据时,可以直接从缓存队列中提取数据,使得消费者线程仅能从某个缓存队列中提取数据,从而避免消费者线程从缓存队列中提取数据时发生冲突,且通过修改缓存队列的投放参数和读取参数的数据长度,避免了缓存队列的投放参数和读取参数之间相互影响,而通过设置静态模板和静态模板对应的模板标识,使得在投放和提取数据时,不需要重复提取静态数据,降低了数据处理量。
区块链是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
在一种实施例中,本申请提供的计算机设备可以作为区块链系统中的一个节点,在得到数据内容后,可以对数据内容进行验证,在验证通过后,将数据内容作为新的区块,存储到区块链中,以保证数据内容不会被篡改。
图3为本申请实施例提供的数据管理方法的第二种流程示意图,本实施例针对用户终端、服务器和区块链三者之间如何进行交互进行详细描述,请参阅图3,该数据管理方法包括:
301:第一用户终端向数据服务器发送数据存储请求。
在程序的开发或者运行过程中,为了检测程序的运行状态,需要记录程序的运行过程,可以通过用户终端向数据服务器发送数据存储请求,从而使得数据服务器存储用户终端上的日志数据,便于后续对程序的运行状态进行记录。
302:数据服务器接收生产者线程的数据投放请求。
在接收到用户终端发送的数据存储请求后,生产者线程会生成日志数据,同时,生产者线程需要将日志数据进行存储,因此可以接收生产者线程的数据投放请求,从而将生产者线程生产的日志数据进行存储,在将日志数据进行存储前,可以先对日志数据进行处理,设置日志数据的静态模板以及静态模板对应的模板标识,如下表1:
静态模板 | 动态数据 |
时间 | 20200825 |
代码源文件 | main.c |
代码源文件行号 | 100 |
函数 | connect() |
错误码 | 404 |
表1
如表1,日志数据包括静态模板和动态数据,在静态模板中包括日志数据中动态数据的含义,例如动态数据中的“20200825”对应静态模板中的“时间”、动态数据中的“main.c”对应静态模板中的“代码源文件”,动态数据中的“100”对应静态模板中的“代码源文件行号”,动态数据中的“connect()”对应静态模板中的“函数”,动态数据中的“404”对应静态模板中的“错误码”,而该日志数据的静态模板的部分不改变,即静态模板中的“时间”对应的动态数据部分仅会进行具体的时间,静态模板中的“时间”不会修改,则可以为静态模板设置一个模板标识,例如静态模板标识1表示静态模板中的“时间”、“代码源文件”、“代码源文件行号”、“函数”、“错误码”,则在向缓存队列中投放日志数据时,仅需要投放模板表示和动态数据,如下表2所示:
表2
在生产者线程中,在需要将数据内容投放至缓存队列时,可以根据初始日志数据和静态模板生成表2所示的数据内容,从而可以在向缓存队列投放数据时,避免重复投放静态模板的数据,仅需要投放静态模板对应的模板标识即可,降低了数据处理量。
同时,在将静态模板和模板标识发送至生产者线程时,需要确定生产者线程对应的日志类型,然后根据生产者线程的日志类型,将日志类型对应的静态模板和模板标识发送至生产者线程,例如在预设10组静态模板和模板标识,但生产者线程仅生产2种类型的日志数据,假设向生产者线程发送10组静态模板和模板标识,则生产者线程在使用静态模板和模板标识时,首先需要接收10组静态模板和模板标识,然后需要从10组静态模板和模板标识中找出与生产者线程中的初始日志数据对应的静态模板和模板标识,查找的过程较为缓慢,而在根据生产者线程的日志类型向生产者线程发送对应的静态模板和模板标识时,仅需要向生产者线程发送2组对应的静态模板和模板标识,假设生产者线程仅生产了一种日志类型,则只需要在2组静态模板和模板标识中查找到对应的静态模板和模板标识,数据处理过程较快。
需要说明的是,动态数据中的“main.c”、“connect()”不代表确定的代码源文件和函数,在此仅表示该处的代码源文件和函数在动态数据中是可变的,相应的动态数据中的“20200825”、“100”、“404”也不代表确定的时间、代码源文件行号、错误码。
303:数据服务器向缓存队列中投放数据。
在接收到生产者线程的数据投放请求后,需要将生产者线程和缓存队列进行匹配,使得将生产者线程中的数据内容缓存至生产者线程对应的缓存队列中,如图4所示,假设具有生产者线程一411、生产者线程二421,在得到生产者线程一411、生产者线程二421的生产者线程标识后,获取缓存队列的队列标识,然后根据生产者线程标识和队列标识的一一对应关系,将生产者线程和缓存队列匹配,图4中的将生产者线程一411与缓存队列一412匹配,将生产者线程二421与缓存队列二422匹配,该对应关系可以通过在生产者线程一411的生产者线程标识和缓存队列一412的队列标识中均添加“tx123”,则可以根据“tx123”对应生产者线程一411和缓存队列一412,相应的,生产者线程二421和缓存队列二422也可以采用特殊的字符进行对应;
在生产者线程和缓存队列对应后,还需要确定缓存队列的投放参数,图4中空闲位置4121和空闲位置4221表示该处可投放数据,填充位置4122和填充位置4222表示该处已缓存有数据内容,则可以使缓存队列的投放参数包括位于缓存队列一412下侧空闲位置4121中与填充位置4122相邻的空闲位置,表示该处可以投放数据,然后在生产者线程一411和生产者线程二421投放数据时,根据投放参数投放数据;
在得到缓存队列的投放参数时,还可以获得缓存队列的读取参数,可以使缓存队列的投放参数包括位于缓存队列412上侧填充位置4122中与空闲位置4121相邻的填充位置,表示该处可以读取数据;
在本申请实施例中,将缓存队列设置为环形队列,使得生产者线程在向缓存队列中投放数据时,假设按照非环形队列设计缓存队列,则在向缓存队列投放数据时,只能在已经投放数据的位置之后的空闲位置投放数据,即使投放数据的位置中的数据被提取,该填充位置变为空闲位置,生产者线程也不会在该处投放数据,导致只能在缓存队列中增加空闲位置或者在更新缓存队列后依次向缓存队列投放数据,而采用环形队列后,在填充位置的数据被提取变为空闲数据时,生产者线程可以直接向该处投放数据,从而充分利用了缓存队列中的空间,降低了需要的内存。
在得到缓存队列的投放参数和读取参数时,为了避免投放参数和读取参数中的一个修改时,对另一个产生影响,可以对投放参数和读取参数进行处理,如图5所示,假设处理器的缓存行51的行长度为32字节,投放参数一的数据长度为16字节,读取参数一的数据长度为16字节,图5中以a表示,则可以根据投放参数一的数据长度、读取参数一的数据长度以及行长度,确定缓存队列的投放参数和读取参数处于同一缓存行51,如图5所示,在不对投放参数一和读取参数一的数据长度进行修改时,在对投放参数一和读取参数一中的任一参数进行修改时,由于投放参数一和读取参数一处于同一缓存行,因此投放参数一和读取参数一均会被修改为投放参数二和读取参数二,而在投放参数一和读取参数一中的任一参数失效时,会导致另一参数也失效,如图6所示,针对图5中投放参数一和读取参数一处于同一缓存行51,将投放参数一和读取参数一的数据长度设置为32字节,图6中以b表示,使得投放参数一和读取参数一的数据长度等于缓存行61的行长度,即32字节,从而使得在对投放参数一进行修改得到投放参数二时,读取参数一不会发生改变,在投放参数一失效时,不会影响到读取参数一。
304:数据服务器向消费者线程发送数据内容。
在向消费者线程发送数据内容时,如图4所示,可以向消费者线程43发送缓存队列一412和缓存队列二422中的数据内容,例如将缓存队列一412作为消费者线程43的目标缓存队列,则可以根据缓冲队列一412的读取参数,读取缓存队列一412中的数据内容,并将该数据内容发送至消费者线程;
在向消费者线程发送数据内容时,假设消费者线程同时提取两个缓存队列中的数据内容,例如图4中的缓存队列一412和缓存队列二422,则需要判断缓存队列一412和缓存队列二422中的数据内容的时间顺序,例如缓存队列一412中的数据内容的时间顺序从k至2k,缓存队列二422中的数据内容从m至2m,假设k小于m在读取缓存队列一412中时间为k的数据内容后,需要判断缓存队列一412中时间为k+1的数据内容与缓存队列二422中的时间为m的数据内容的时间顺序,假设k+1大于m,则需要先读取时间为m的数据内容,然后读取时间为k+1的数据内容,使得进入消费者线程的数据内容按照时间排序;
而在按照时间排序将数据内容发送至消费者线程时,存在需要查看某一缓存队列中的数据内容的情况,因此,可以为每一缓存队列中的数据内容赋予特定的标志,例如在缓存队列一中的数据内容中加入“1”表示该数据内容为缓存队列一中的数据,从而使得多个缓存队列中的数据内容发送至消费者线程时,即使按照时间顺序进行排序,也可以通过特定标志查看某一缓存队列中的数据内容;
在向消费者线程发送数据时,还可以使得消费者线程与缓存队列对应,通过设置消费者线程标识,使得根据消费者线程标识和缓存队列的队列标识,使得消费者线程和缓存队列对应,从而使得消费者线程仅从对应的缓存队列中获取数据内容;
在将消费者线程内的数据内容写入存储单元时,还可以通过检测消费者线程内是否存在模板标识,在存在模板标识时,将模板标识对应的静态模板进行还原,从而得到对应的日志数据,并进行存储。
305:数据服务器向区块链存储数据内容。
在消费者线程接收到数据内容后,可以将消费者线程中的数据内容存储到区块链中,从而避免数据被篡改,且在后续需要查看数据内容时,可以从区块链中提取数据内容进行查看。
306:数据服务器接收第二用户终端的数据解析请求。
在得到数据内容并存储后,在第二用户终端发送数据解析请求时,可以使得数据解析请求携带数据标识,从而可以根据数据解析请求查看到对应的数据,例如日志数据。
307:数据服务器从区块链中提取数据内容。
在接收到第二用户终端的数据解析请求后,使得数据服务器从区块链中提取数据内容,然后对数据内容进行处理,向第二用户终端发送数据内容。
308:数据服务器解析数据内容。
在数据服务器从区块链中提取到数据内容后,使得数据服务器调用数据内容中模板标识对应的静态模板,使得组合静态模板和数据内容中的动态数据,得到数据标识对应的数据内容,例如在提取到表2的日志数据后,根据表2中的日志数据中的模板标识,将模板标识对应的静态模板进行还原,然后根据静态模板和动态数据,得到表1中的日志数据,使得可以将日志数据发送至第二用户终端。
309:数据服务器向第二用户终端发送日志数据。
在将数据内容解析得到日志数据后,通过数据服务器向第二用户终端发送日志数据,使得第二用户终端可以查看到日志数据。
需要说明的是,第一用户终端和第二用户终端可以为同一用户终端,第二用户终端可以为开发人员终端。
本实施例还适用于其他数据管理任务。
相应的,图7为本申请实施例提供的数据管理装置的结构示意图;请参阅图7,该数据管理方法包括以下模块:
接收模块701,用于接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;
获取模块702,用于获取缓存队列的队列标识;
缓存模块703,用于基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中;
发送模块704,用于在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
在一实施例中,缓存模块703用于获取所有缓存队列的投放参数和读取参数,并缓存至处理器;根据生产者线程对应的缓存队列的队列标识,从处理器中确定生产者线程对应的投放参数;根据生产者线程对应的投放参数,将数据内容缓存至生产者线程对应的缓存队列中。
在一实施例中,缓存模块703用于获取消费者线程的消费者线程标识,并根据消费者线程标识确定与消费者线程对应的目标缓存队列;从处理器中确定目标缓存队列的读取参数;根据目标缓存队列的读取参数,读取目标缓存队列中的数据内容并发送至消费者线程。
在一实施例中,缓存模块703用于获取缓存队列的投放参数的数据长度、读取参数的数据长度;获取处理器的最大数据处理量,并根据处理器的最大数据处理量,得到处理器的缓存行的行长度;根据缓存队列的投放参数的数据长度、读取参数的数据长度以及行长度,确定缓存队列的投放参数与读取参数是否处于同一缓存行;在缓存队列的投放参数与读取参数处于同一缓存行时,修改缓存队列的投放参数的数据长度以及缓存队列的读取参数的数据长度,使得缓存队列的投放参数与读取参数不处于同一缓存行。
在一实施例中,缓存模块703用于根据行长度、确定缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位;根据缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位,修改缓存队列的投放参数和读取参数的长度。
在一实施例中,数据管理装置还包括预设模块,预设模块用于预设日志数据的静态模板以及静态模板对应的模板标识;将静态模板和模板标识发送至生产者线程,以使得生产者线程根据静态模板和模板标识以及初始日志数据,生成数据内容,数据内容包括初始日志数据相对于静态模板的动态数据以及模板标识。
在一实施例中,预设模块用于获取生产者线程对应的日志类型;根据生产者线程对应的日志类型,确定与日志类型对应的静态模板和模板标识;将日志类型对应的静态模板和模板标识发送至生产者线程。
在一实施例中,数据管理装置还包括组合模块,组合模块用于接收终端发送的日志数据解析请求,日志数据解析请求携带日志数据标识;获取日志数据标识对应的数据内容;调用数据内容中模板标识对应的静态模板;组合静态模板与数据内容中的动态数据,得到日志数据标识对应的日志数据;向终端发送日志数据。
在一实施例中,发送模块704用于检测消费者线程写入存储单元的数据内容;判断数据内容中是否存在模板标识;在数据内容中携带模板标识时,根据模板标识,确定数据内容对应的静态模板;根据静态模板以及数据内容中的动态数据,还原得到数据内容对应的日志数据,并存入存储单元。
相应的,本申请实施例还提供一种计算机设备,如图8所示,其示出了本申请实施例所涉及的计算机设备的结构示意图,具体来讲:
该计算机设备可以包括一个或者一个以上处理核心的处理器801、一个或一个以上计算机可读存储介质的存储器802、电源803和输入单元804等部件。本领域技术人员可以理解,图8中示出的计算机设备结构并不构成对计算机设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。其中:
处理器801是该计算机设备的控制中心,利用各种接口和线路连接整个计算机设备的各个部分,通过运行或执行存储在存储器802内的软件程序和/或模块,以及调用存储在存储器802内的数据,执行计算机设备的各种功能和处理数据,从而对计算机设备进行整体监控。可选的,处理器801可包括一个或多个处理核心;优选的,处理器801可集成应用处理器和调制解调处理器,其中,应用处理器主要处理操作系统、用户界面和应用程序等,调制解调处理器主要处理无线通信。可以理解的是,上述调制解调处理器也可以不集成到处理器801中。
存储器802可用于存储软件程序以及模块,处理器801通过运行存储在存储器802的软件程序以及模块,从而执行各种功能应用以及数据处理。存储器802可主要包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需的应用程序(比如声音播放功能、图像播放功能等)等;存储数据区可存储根据计算机设备的使用所创建的数据等。此外,存储器802可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他易失性固态存储器件。相应地,存储器802还可以包括存储器控制器,以提供处理器801对存储器802的访问。
计算机设备还包括给各个部件供电的电源803,优选的,电源803可以通过电源管理系统与处理器801逻辑相连,从而通过电源管理系统实现管理充电、放电以及功耗管理等功能。电源803还可以包括一个或一个以上的直流或交流电源、再充电系统、电源故障检测电路、电源转换器或者逆变器、电源状态指示器等任意组件。
该计算机设备还可包括输入单元804,该输入单元804可用于接收输入的数字或字符信息,以及产生与用户设置以及功能控制有关的键盘、鼠标、操作杆、光学或者轨迹球信号输入。
尽管未示出,计算机设备还可以包括显示单元等,在此不再赘述。具体在本实施例中,计算机设备中的处理器801会按照如下的指令,将一个或一个以上的应用程序的进程对应的可执行文件加载到存储器802中,并由处理器801来运行存储在存储器802中的应用程序,从而实现各种功能,如下:
接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;
获取缓存队列的队列标识;
基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中;
在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
在一种实施例中,实现功能:
获取所有缓存队列的投放参数和读取参数,并缓存至处理器;
根据生产者线程对应的缓存队列的队列标识,从处理器中确定生产者线程对应的投放参数;
根据生产者线程对应的投放参数,将数据内容缓存至生产者线程对应的缓存队列中。
在一种实施例中,实现功能:
获取消费者线程的消费者线程标识,并根据消费者线程标识确定与消费者线程对应的目标缓存队列;
从处理器中确定目标缓存队列的读取参数;
根据目标缓存队列的读取参数,读取目标缓存队列中的数据内容并发送至消费者线程。
在一种实施例中,实现功能:
获取缓存队列的投放参数的数据长度、读取参数的数据长度;
获取处理器的最大数据处理量,并根据处理器的最大数据处理量,得到处理器的缓存行的行长度;
根据缓存队列的投放参数的数据长度、读取参数的数据长度以及行长度,确定缓存队列的投放参数与读取参数是否处于同一缓存行;
在缓存队列的投放参数与读取参数处于同一缓存行时,修改缓存队列的投放参数的数据长度以及缓存队列的读取参数的数据长度,使得缓存队列的投放参数与读取参数不处于同一缓存行。
在一种实施例中,实现功能:
根据行长度、确定缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位;
根据缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位,修改缓存队列的投放参数和读取参数的长度。
在一种实施例中,实现功能:
预设日志数据的静态模板以及静态模板对应的模板标识;
将静态模板和模板标识发送至生产者线程,以使得生产者线程根据静态模板和模板标识以及初始日志数据,生成数据内容,数据内容包括初始日志数据相对于静态模板的动态数据以及模板标识。
在一种实施例中,实现功能:
获取生产者线程对应的日志类型;
根据生产者线程对应的日志类型,确定与日志类型对应的静态模板和模板标识;
将日志类型对应的静态模板和模板标识发送至生产者线程。
在一种实施例中,实现功能:
接收终端发送的日志数据解析请求,日志数据解析请求携带日志数据标识;
获取日志数据标识对应的数据内容;
调用数据内容中模板标识对应的静态模板;
组合静态模板与数据内容中的动态数据,得到日志数据标识对应的日志数据;
向终端发送日志数据。
在一种实施例中,实现功能:
检测消费者线程写入存储单元的数据内容;
判断数据内容中是否存在模板标识;
在数据内容中携带模板标识时,根据模板标识,确定数据内容对应的静态模板;
根据静态模板以及数据内容中的动态数据,还原得到数据内容对应的日志数据,并存入存储单元。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见上文针对数据管理方法的详细描述,此处不再赘述。
本领域普通技术人员可以理解,上述实施例的各种方法中的全部或部分步骤可以通过指令来完成,或通过指令控制相关的硬件来完成,该指令可以存储于一计算机可读存储介质中,并由处理器进行加载和执行。
为此,本申请实施例提供一种计算机可读存储介质,其中存储有多条指令,该指令能够被处理器进行加载,以执行本申请实施例所提供的任一种方法中的步骤。例如,该指令可以执行如下步骤:
接收生产者线程的数据投放请求;数据投放请求携带生产者线程的生产者线程标识、待投入的数据内容;
获取缓存队列的队列标识;
基于生产者线程标识和队列标识的一一对应关系,将数据内容缓存至生产者线程对应的缓存队列中;
在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将缓存队列中的数据内容发送至消费者线程,以使得消费者线程将数据内容对应的日志数据写入存储单元。
在一种实施例中,实现功能:
获取所有缓存队列的投放参数和读取参数,并缓存至处理器;
根据生产者线程对应的缓存队列的队列标识,从处理器中确定生产者线程对应的投放参数;
根据生产者线程对应的投放参数,将数据内容缓存至生产者线程对应的缓存队列中。
在一种实施例中,实现功能:
获取消费者线程的消费者线程标识,并根据消费者线程标识确定与消费者线程对应的目标缓存队列;
从处理器中确定目标缓存队列的读取参数;
根据目标缓存队列的读取参数,读取目标缓存队列中的数据内容并发送至消费者线程。
在一种实施例中,实现功能:
获取缓存队列的投放参数的数据长度、读取参数的数据长度;
获取处理器的最大数据处理量,并根据处理器的最大数据处理量,得到处理器的缓存行的行长度;
根据缓存队列的投放参数的数据长度、读取参数的数据长度以及行长度,确定缓存队列的投放参数与读取参数是否处于同一缓存行;
在缓存队列的投放参数与读取参数处于同一缓存行时,修改缓存队列的投放参数的数据长度以及缓存队列的读取参数的数据长度,使得缓存队列的投放参数与读取参数不处于同一缓存行。
在一种实施例中,实现功能:
根据行长度、确定缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位;
根据缓存队列的投放参数的长度单位以及缓存队列的读取参数的长度单位,修改缓存队列的投放参数和读取参数的长度。
在一种实施例中,实现功能:
预设日志数据的静态模板以及静态模板对应的模板标识;
将静态模板和模板标识发送至生产者线程,以使得生产者线程根据静态模板和模板标识以及初始日志数据,生成数据内容,数据内容包括初始日志数据相对于静态模板的动态数据以及模板标识。
在一种实施例中,实现功能:
获取生产者线程对应的日志类型;
根据生产者线程对应的日志类型,确定与日志类型对应的静态模板和模板标识;
将日志类型对应的静态模板和模板标识发送至生产者线程。
在一种实施例中,实现功能:
接收终端发送的日志数据解析请求,日志数据解析请求携带日志数据标识;
获取日志数据标识对应的数据内容;
调用数据内容中模板标识对应的静态模板;
组合静态模板与数据内容中的动态数据,得到日志数据标识对应的日志数据;
向终端发送日志数据。
在一种实施例中,实现功能:
检测消费者线程写入存储单元的数据内容;
判断数据内容中是否存在模板标识;
在数据内容中携带模板标识时,根据模板标识,确定数据内容对应的静态模板;
根据静态模板以及数据内容中的动态数据,还原得到数据内容对应的日志数据,并存入存储单元。
其中,该存储介质可以包括:只读存储器(ROM,Read Only Memory)、随机存取记忆体(RAM,Random Access Memory)、磁盘或光盘等。
由于该存储介质中所存储的指令,可以执行本申请实施例所提供的任一种方法中的步骤,因此,可以实现本申请实施例所提供的任一种方法所能实现的有益效果,详见前面的实施例,在此不再赘述。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。
以上对本申请实施例所提供的一种数据管理方法及装置、计算机设备、计算机可读存储介质进行了详细介绍,本文中应用了具体个例对本申请的原理及实施方式进行了阐述,以上实施例的说明只是用于帮助理解本申请的技术方案及其核心思想;本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例的技术方案的范围。
Claims (10)
1.一种数据管理方法,其特征在于,包括:
接收生产者线程的数据投放请求;所述数据投放请求携带所述生产者线程的生产者线程标识、待投入的数据内容;
获取缓存队列的队列标识;
获取缓存队列的投放参数的数据长度、读取参数的数据长度;获取处理器的最大数据处理量,并根据所述处理器的最大数据处理量,得到所述处理器的缓存行的行长度;根据所述缓存队列的投放参数的数据长度、读取参数的数据长度以及所述行长度,确定所述缓存队列的投放参数与读取参数是否处于同一缓存行;在所述缓存队列的投放参数与读取参数处于同一缓存行时,修改所述缓存队列的投放参数的数据长度以及所述缓存队列的读取参数的数据长度,使得所述缓存队列的投放参数与读取参数不处于同一缓存行;
基于生产者线程标识和队列标识的一一对应关系,将所述数据内容缓存至所述生产者线程对应的缓存队列中;其中,包括:获取所有缓存队列的投放参数和读取参数,并缓存至处理器;根据所述生产者线程对应的缓存队列的队列标识,从所述处理器中确定所述生产者线程对应的投放参数;根据所述生产者线程对应的投放参数,将所述数据内容缓存至所述生产者线程对应的缓存队列中;
在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将所述缓存队列中的数据内容发送至所述消费者线程,以使得所述消费者线程将所述数据内容对应的日志数据写入存储单元。
2.如权利要求1所述的数据管理方法,其特征在于,所述在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将所述缓存队列中的数据内容发送至所述消费者线程,以使得所述消费者线程将所述数据内容写入存储单元的步骤,包括:
获取消费者线程的消费者线程标识,并根据所述消费者线程标识确定与所述消费者线程对应的目标缓存队列;
从所述处理器中确定所述目标缓存队列的读取参数;
根据所述目标缓存队列的读取参数,读取所述目标缓存队列中的数据内容并发送至所述消费者线程。
3.如权利要求1所述的数据管理方法,其特征在于,所述修改所述缓存队列的投放参数的长度以及所述缓存队列的读取参数的长度的步骤,包括:
根据行长度、确定所述缓存队列的投放参数的长度单位以及所述缓存队列的读取参数的长度单位;
根据所述缓存队列的投放参数的长度单位以及所述缓存队列的读取参数的长度单位,修改所述缓存队列的投放参数和读取参数的长度。
4.如权利要求1至3任一所述的数据管理方法,其特征在于,在所述接收生产者线程的数据投放请求的步骤之前,还包括:
预设日志数据的静态模板以及所述静态模板对应的模板标识;
将所述静态模板和模板标识发送至生产者线程,以使得所述生产者线程根据所述静态模板和模板标识以及初始日志数据,生成所述数据内容,所述数据内容包括所述初始日志数据相对于所述静态模板的动态数据以及所述模板标识。
5.如权利要求4所述的数据管理方法,其特征在于,所述将所述静态模板和模板标识发送至生产者线程的步骤,包括:
获取所述生产者线程对应的日志类型;
根据所述生产者线程对应的日志类型,确定与所述日志类型对应的静态模板和模板标识;
将所述日志类型对应的静态模板和模板标识发送至所述生产者线程。
6.如权利要求4所述的数据管理方法,其特征在于,在所述将所述缓存队列中的数据内容发送至所述消费者线程的步骤之后,还包括:
接收终端发送的日志数据解析请求,所述日志数据解析请求携带日志数据标识;
获取所述日志数据标识对应的数据内容;
调用所述数据内容中模板标识对应的静态模板;
组合所述静态模板与所述数据内容中的动态数据,得到所述日志数据标识对应的日志数据;
向所述终端发送日志数据。
7.如权利要求4所述的数据管理方法,其特征在于,所述将所述缓存队列中的数据内容发送至所述消费者线程,以使得所述消费者线程将所述数据内容对应的日志数据写入存储单元的步骤,包括:
检测所述消费者线程写入所述存储单元的数据内容;
判断所述数据内容中是否存在模板标识;
在所述数据内容中携带所述模板标识时,根据所述模板标识,确定所述数据内容对应的静态模板;
根据所述静态模板以及所述数据内容中的动态数据,还原得到所述数据内容对应的日志数据,并存入所述存储单元。
8.一种数据管理装置,其特征在于,包括:
接收模块,用于接收生产者线程的数据投放请求;所述数据投放请求携带所述生产者线程的生产者线程标识、待投入的数据内容;
获取模块,用于获取缓存队列的队列标识;
所述装置还用于,获取缓存队列的投放参数的数据长度、读取参数的数据长度;获取处理器的最大数据处理量,并根据所述处理器的最大数据处理量,得到所述处理器的缓存行的行长度;根据所述缓存队列的投放参数的数据长度、读取参数的数据长度以及所述行长度,确定所述缓存队列的投放参数与读取参数是否处于同一缓存行;在所述缓存队列的投放参数与读取参数处于同一缓存行时,修改所述缓存队列的投放参数的数据长度以及所述缓存队列的读取参数的数据长度,使得所述缓存队列的投放参数与读取参数不处于同一缓存行;
缓存模块,用于基于生产者线程标识和队列标识的一一对应关系,将所述数据内容缓存至所述生产者线程对应的缓存队列中;其中,所述缓存模块,具体用于获取所有缓存队列的投放参数和读取参数,并缓存至处理器;根据所述生产者线程对应的缓存队列的队列标识,从所述处理器中确定所述生产者线程对应的投放参数;根据所述生产者线程对应的投放参数,将所述数据内容缓存至所述生产者线程对应的缓存队列中;
发送模块,用于在接收消费者线程的数据提取请求后,根据消费者线程与缓存队列的一一对应关系,将所述缓存队列中的数据内容发送至所述消费者线程,以使得所述消费者线程将所述数据内容对应的日志数据写入存储单元。
9.一种计算机设备,其特征在于,包括:包括存储器,处理器及存储在存储器上并可在处理器上运行的计算机程序,其中,所述处理器执行所述计算机程序时实现如权利要求1至7任一项方法的步骤。
10.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如权利要求1至7任一项方法中的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011018647.9A CN112131002B (zh) | 2020-09-24 | 2020-09-24 | 数据管理方法及装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011018647.9A CN112131002B (zh) | 2020-09-24 | 2020-09-24 | 数据管理方法及装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112131002A CN112131002A (zh) | 2020-12-25 |
CN112131002B true CN112131002B (zh) | 2023-10-13 |
Family
ID=73839776
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011018647.9A Active CN112131002B (zh) | 2020-09-24 | 2020-09-24 | 数据管理方法及装置 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112131002B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114928579B (zh) * | 2021-02-01 | 2024-04-09 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、计算机设备及存储介质 |
CN112988622A (zh) * | 2021-03-03 | 2021-06-18 | 广州安凯微电子股份有限公司 | 一种队列缓存方法及设备 |
CN113986555B (zh) * | 2021-11-10 | 2023-04-07 | 深圳前海微众银行股份有限公司 | 缓存优化方法、装置、设备及可读存储介质 |
CN116860869A (zh) * | 2023-05-29 | 2023-10-10 | 玖章算术(浙江)科技有限公司 | 一种主键并发场景下的队列投递方法和系统 |
Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190102223A1 (en) * | 2017-09-29 | 2019-04-04 | Niall Power | System, Apparatus And Method For Real-Time Activated Scheduling In A Queue Management Device |
CN110321215A (zh) * | 2018-03-29 | 2019-10-11 | 华为技术有限公司 | 队列控制方法及装置 |
CN110888727A (zh) * | 2019-11-26 | 2020-03-17 | 北京达佳互联信息技术有限公司 | 并发无锁队列实现方法、装置及存储介质 |
-
2020
- 2020-09-24 CN CN202011018647.9A patent/CN112131002B/zh active Active
Patent Citations (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20190102223A1 (en) * | 2017-09-29 | 2019-04-04 | Niall Power | System, Apparatus And Method For Real-Time Activated Scheduling In A Queue Management Device |
CN110321215A (zh) * | 2018-03-29 | 2019-10-11 | 华为技术有限公司 | 队列控制方法及装置 |
CN110888727A (zh) * | 2019-11-26 | 2020-03-17 | 北京达佳互联信息技术有限公司 | 并发无锁队列实现方法、装置及存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN112131002A (zh) | 2020-12-25 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112131002B (zh) | 数据管理方法及装置 | |
CN110851288B (zh) | 消息处理方法及装置 | |
CN110826111A (zh) | 测试监管方法、装置、设备及存储介质 | |
CN111694840A (zh) | 数据同步方法、装置、服务器及存储介质 | |
CN113315828B (zh) | 一种流量录制方法、装置及流量录制设备、存储介质 | |
CN110324416B (zh) | 下载路径跟踪方法、装置、服务器、终端及介质 | |
CN108833522A (zh) | 一种确定节点可信的系统及方法 | |
CN110866265A (zh) | 一种基于区块链的数据存储方法、设备及存储介质 | |
CN114239060A (zh) | 数据获取方法、装置、电子设备及存储介质 | |
WO2020000716A1 (zh) | 大数据分析系统、服务器、数据处理方法、程序和存储介质 | |
CN112084486A (zh) | 用户信息验证方法、装置、电子设备及存储介质 | |
CN111339141A (zh) | 一种数据传输的方法、区块链节点设备以及介质 | |
CN113139109A (zh) | 数据标注方法、装置、服务器及存储介质 | |
US20220114276A1 (en) | Controlling a data network with respect to a use of a distributed database | |
CN111722994A (zh) | 一种任务请求的响应方法及设备 | |
CN116451191A (zh) | 信息审核方法、装置、电子设备和计算机可读存储介质 | |
CN115001768A (zh) | 基于区块链的数据交互方法、装置、设备及存储介质 | |
CN112631551A (zh) | 随机数生成方法、装置、电子设备及存储介质 | |
CN110598374A (zh) | 基于区块链的作品登记方法、装置和计算机可读存储介质 | |
CN110677465A (zh) | 一种分布式锁的控制方法及装置 | |
WO2024093419A1 (zh) | 一种游戏数据校验方法、装置、设备、计算机可读存储介质和计算机程序产品 | |
CN116975850B (zh) | 合约运行方法、装置、电子设备及存储介质 | |
CN111367867B (zh) | 日志信息处理方法、装置、电子设备及存储介质 | |
CN107977284A (zh) | 一种数据处理方法、装置、服务器和介质 | |
JPWO2013183151A1 (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 |