CN114490251A - 日志处理系统、日志处理方法及终端设备 - Google Patents

日志处理系统、日志处理方法及终端设备 Download PDF

Info

Publication number
CN114490251A
CN114490251A CN202111668637.4A CN202111668637A CN114490251A CN 114490251 A CN114490251 A CN 114490251A CN 202111668637 A CN202111668637 A CN 202111668637A CN 114490251 A CN114490251 A CN 114490251A
Authority
CN
China
Prior art keywords
log
log data
queue
thread
data
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
CN202111668637.4A
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.)
Ubtech Robotics Corp
Original Assignee
Ubtech Robotics Corp
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 Ubtech Robotics Corp filed Critical Ubtech Robotics Corp
Priority to CN202111668637.4A priority Critical patent/CN114490251A/zh
Publication of CN114490251A publication Critical patent/CN114490251A/zh
Pending legal-status Critical Current

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3089Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
    • G06F11/3096Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents wherein the means or processing minimize the use of computing system or of computing system component resources, e.g. non-intrusive monitoring which minimizes the probe effect: sniffing, intercepting, indirectly deriving the monitored data from other directly available data
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3006Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is distributed, e.g. networked systems, clusters, multiprocessor systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3003Monitoring arrangements specially adapted to the computing system or computing system component being monitored
    • G06F11/3017Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system is implementing multitasking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/3065Monitoring arrangements determined by the means or processing involved in reporting the monitored data

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • Computing Systems (AREA)
  • Quality & Reliability (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Mathematical Physics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请适用于机器人的日志数据处理的技术领域,提供了日志处理系统、日志处理方法及终端设备,所述日志处理系统包括日志存储节点和至少两个日志产生节点,每个所述日志产生节点均包括传输线程和任务线程;所述任务线程用于执行任务,并产生对应的日志数据;针对每一个所述日志产生节点,所述传输线程获取所述任务线程所产生的日志数据,并将所述日志数据向所述日志存储节点发送;所述日志存储节点以批处理的方式存储所述传输线程发送的日志数据。通过上述系统在存储日志数据时,不会影响任务线程原有业务的逻辑。

Description

日志处理系统、日志处理方法及终端设备
技术领域
本申请属于机器人的日志数据处理的技术领域,尤其涉及日志处理系统、日志处理方法、终端设备及计算机可读存储介质。
背景技术
由于机器人,如类人型的机器人,其对实时性有较高的要求,因此,机器人系统对任务执行的时间有苛刻的要求。
日志的收集和记录对于一个大型系统的调试和日常维护有至关重要的作用,而现有的日志的收集和记录可能会导致输入/输出(Input/Output,I/O)阻塞,从而影响该日志对应的任务的实时性,进而导致任务执行周期抖动,即现有的日志在收集和记录时可能会影响到正常业务的逻辑。
发明内容
本申请实施例提供了日志处理系统、日志处理方法及终端设备,可以解决现有方法在收集日志时可能会影响到正常业务的逻辑的问题。
第一方面,本申请实施例提供了一种日志处理系统,所述日志处理系统包括日志存储节点和至少两个日志产生节点,各个所述日志产生节点均为分布式系统中的子节点,每个所述日志产生节点均包括传输线程和任务线程;
所述任务线程用于执行任务,并产生对应的日志数据;
针对每一个所述日志产生节点,所述传输线程获取所述任务线程所产生的日志数据,并将所述日志数据向所述日志存储节点发送;
所述日志存储节点以批处理的方式存储所述传输线程发送的日志数据。
第二方面,本申请实施例提供了一种日志处理方法,应用于日志产生节点,各个所述日志产生节点均为分布式系统中的子节点,所述日志产生节点包括传输线程和任务线程,所述日志处理方法包括:
所述任务线程用于执行任务,并产生对应的日志数据;
所述传输线程获取所述任务线程所产生的日志数据,并将所述日志数据向日志存储节点发送。
第三方面,本申请实施例提供了一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现如第二方面所述的方法。
第四方面,本申请实施例提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现如第二方面所述的方法。
第五方面,本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行上述第二方面所述的方法。
本申请实施例与现有技术相比存在的有益效果是:
在本申请实施例中,任务的执行采用任务线程执行,而日志数据的传输采用传输线程执行。由于任务的执行和日志数据的传输是通过不同线程异步执行,因此,在传输日志数据时不会影响到任务线程原有业务的逻辑,从而使得任务线程能够及时响应原有业务。同时,由于日志存储节点以批处理的方式存储传输线程发送的日志数据,而批处理的方式存储日志数据时,能够减少日志数据的写入次数,也即,能够避免频繁占用中央处理器(Central Processing Unit,CPU)和I/O资源做写日志数据的操作,因此,能够减少算力资源的消耗。即采用本申请实施例的日志处理系统进行日志数据的传输和存储时,不仅能够保证任务线程及时响应原有业务,而且能够减少算力资源的消耗,从而使得本申请实施例的日志处理系统适用于对实时性有较高要求的实时系统。此外,由于本申请实施例的日志处理系统是基于网络协议实现,即不依赖于具体的硬件平台,只要目标平台支持网络通信即可,且各个日志产生节点均为分布式系统中的子节点,因此,本申请实施例提供的日志处理系统是一个适用于跨平台的分布式系统。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍。
图1是本申请一实施例提供的一种日志处理系统的结构示意图;
图2是本申请一实施例提供的一个日志产生节点的结构示意图;
图3是本申请一实施例提供的通过CAS实现的无锁队列入队的流程示意图;
图4是本申请一实施例提供的任务线程对应的日志数据插入流程示意图;
图5是本申请另一实施例提供的通过CAS实现的无锁队列出队的流程示意图;
图6是本申请一实施例提供的传输线程对应的日志数据取出流程示意图;
图7是本申请另一实施例提供的日志存储节点存储日志数据的方法流程图;
图8是本申请实施例提供的一种日志处理方法的流程示意图;
图9是本申请实施例提供的终端设备的结构示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
应当理解,当在本申请说明书和所附权利要求书中使用时,术语“包括”指示所描述特征、整体、步骤、操作、元素和/或组件的存在,但并不排除一个或多个其它特征、整体、步骤、操作、元素、组件和/或其集合的存在或添加。
还应当理解,在本申请说明书和所附权利要求书中使用的术语“和/或”是指相关联列出的项中的一个或多个的任何组合以及所有可能组合,并且包括这些组合。
另外,在本申请说明书和所附权利要求书的描述中,术语“第一”、“第二”、“第三”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
在本申请说明书中描述的参考“一个实施例”或“一些实施例”等意味着在本申请的一个或多个实施例中包括结合该实施例描述的特定特征、结构或特点。由此,在本说明书中的不同之处出现的语句“在一个实施例中”、“在一些实施例中”、“在其他一些实施例中”、“在另外一些实施例中”等不是必然都参考相同的实施例,而是意味着“一个或多个但不是所有的实施例”,除非是以其他方式另外特别强调。
实施例一:
目前,用于执行任务的线程(即任务线程)在执行任务并获得对应的日志数据(或称日志)后,将通过该任务线程将日志数据传输出去。由于多个任务线程进行日志数据的传输时,任务线程的I/O有可能会出现阻塞,而一旦出现阻塞,将会导致该任务线程难以及时响应原有的任务,即影响到原有业务的逻辑。
为了避免在传输日志数据时影响到原有业务的逻辑,本申请实施例提供了一种日志处理系统。在该日志处理系统中,新增用于传输日志数据的线程(即本申请的传输线程)。即在本申请实施例中,任务的执行采用任务线程执行,而日志数据的传输采用传输线程执行。由于日志传输通过另一个线程异步执行,因此,不会影响任务线程原有业务的逻辑。
下面结合附图对本申请实施例提供的日志处理系统进行描述。
图1示出了本申请实施例提供的一种日志处理系统的结构示意图,在图1中,日志处理系统1包括日志存储节点11和至少两个日志产生节点12(图1仅示出了两个)。其中,上述的各个日志产生节点12均为分布式系统中的子节点。
在图1可看出,每个日志产生节点12均通过虚拟的分布式日志总线将日志数据发送给日志存储节点11。该虚拟的分布式日志总线通过网络通信实现。只要日志产生节点12的网络能够联通,则该日志产生节点12即可接入该虚拟的分布式日志总线。
本申请实施例中,每个该日志产生节点12均包括传输线程和任务线程,该任务线程用于执行任务,并产生对应的日志数据。其中,日志数据包含以下至少一项:日志产生节点的名称、日志优先级、产生日志的时间戳、产生日志的源码文件名和行号、日志内容。
针对每一个该日志产生节点12,该传输线程获取该任务线程所产生的日志数据,并将该日志数据向该日志存储节点11发送。
本申请实施例中,每个日志产生节点12包括至少一个任务线程。当任务线程的数量大于1时,在每个任务线程产生日志数据后,将其产生的日志数据存入队列缓冲区,传输线程再从该队列缓冲区读取日志数据。由于任务线程先将其产生的日志数据存入队列缓冲区,而不是由各个任务线程直接向传输线程提交日志数据,因此,能够降低由于直接向传输线程提交日志数据而产生的阻塞的概率。
本申请实施例中,日志存储节点11以批处理的方式存储该传输线程发送的日志数据。
这里的批处理是指:日志存储节点11缓存一段时间内的日志数据后,再统一存储已缓存的所有的日志数据。例如,假设这里的一段时间为200毫秒(ms),则日志存储节点11将缓存从当前时刻到200ms之后的时长内的所有的日志数据,这些日志数据可能为一个日志产生节点12产生,也可能为多个日志产生节点12产生,在200ms到达时,该日志存储节点再统一存储缓存的所有的日志数据。
本申请实施例中,任务的执行采用任务线程执行,而日志数据的传输采用传输线程执行。由于任务的执行和日志数据的传输是通过不同线程异步执行,因此,在传输日志数据时不会影响到任务线程原有业务的逻辑,从而使得任务线程能够及时响应原有业务。同时,由于日志存储节点以批处理的方式存储传输线程发送的日志数据,而批处理的方式存储日志数据时,能够减少日志数据的写入次数,也即,能够避免频繁占用中央处理器和I/O资源做写日志数据的操作,因此,能够减少算力资源的消耗。即采用本申请实施例的日志处理系统进行日志数据的传输和存储时,不仅能够保证任务线程及时响应原有业务,而且能够减少算力资源的消耗,从而使得本申请实施例的日志处理系统适用于对实时性有较高要求的实时系统。此外,由于本申请实施例的日志处理系统是基于网络协议实现,即不依赖于具体的硬件平台,只要目标平台支持网络通信即可,且各个日志产生节点均为分布式系统中的子节点,因此,本申请实施例提供的日志处理系统是一个适用于跨平台的分布式系统。
在一些实施例中,为了进一步避免任务线程在提交日志数据时产生阻塞,该传输线程获取该任务线程所产生的日志数据,并将该日志数据向该日志存储节点发送,包括:
该任务线程通过比较并交换(Compare And Swap,CAS)的原子操作将该日志数据插入无锁队列中。其中,无锁队列通过链表实现。
该传输线程通过该CAS的原子操作从该无锁队列提取该日志数据,将提取的该日志数据向该日志存储节点发送。
其中,CAS是一种同步原语,包括x86、ARM、POWERPC等大多数CPU架构都支持,此指令可以保证在多线程并行执行情况下仍可安全的实现数据交换。
图2示出了一个日志产生节点的结构示意图,在图2中,日志产生节点12包括多个任务线程(任务线程1至任务线程N)和一个传输线程,且各个任务线程在产生日志数据之后通过CAS的原子操作将日志数据插入无锁队列中,传输线程再通过CAS的原子操作从无锁队列读取对应的日志数据。
由于凡是涉及到锁的地方一旦出现资源冲突都会发生多次任务切换和调度,而任务的重新调度必然产生额外的延迟,因此,本申请实施例采用CAS的原子操作,可以不用借助锁实现资源的互斥访问,从而节省加锁或解锁所消耗的额外的时间开销,进而使得多个任务线程之间的数据传输不会产生额外的线程调度延时,也即能够避免任务线程在提交日志数据时产生阻塞,从而进一步保证任务线程响应原有业务的实时性。
在一些实施例中,该任务线程通过比较并交换CAS的原子操作将该日志数据插入无锁队列中,包括:
该任务线程获取该无锁队列的队列头快照以及该无锁队列的队列头,若该队列头快照和该队列头相等,则将该日志数据作为该无锁队列的新的队列头所指向的日志数据,以将该日志数据插入该无锁队列中。若该队列头快照和该队列头不相等,则返回执行该获取该无锁队列的队列头快照以及该无锁队列的队列头的步骤以及后续步骤。
图3示出了通过CAS实现的无锁队列入队的流程示意图。
在入队,首先新建一个日志数据节点,同时获取无锁队列的队列头快照,该队列头快照通过指针赋值的操作得到。将新建的日志数据节点的next指针指向队列头,然后进入CAS循环:若队列头快照与队列头相等(即两个指针的值相等),则表明队列头未发生改变(即没有其他任务线程插入日志数据),此时,将队列头更新为新建的日志数据节点,否则,重新获取队列头快照,并重复执行CAS循环。
由于同一个日志产生节点12中通常包括多个任务线程,因此,当一个任务线程需要在无锁队列插入日志数据时,其需要先判断是否有其他任务线程在无锁队列插入了日志数据。即,本申请实施例中,由于任务线程只有在判断出队列头快照与队列头相等时,才将其产生的日志数据作为新的队列头(任务线程对应的日志数据插入流程如图4所示),因此能够提高日志数据插入的准确度。
在一些实施例中,该传输线程通过该CAS的原子操作从该无锁队列提取该日志数据,包括:
该传输线程判断该无锁队列是否为空,若不为空,则获取该无锁队列的队列尾快照。具体地,判断该无锁队列的队列头指针和队列尾指针是否相等,若相等,则判定该无锁队列为空,否则,判定该无锁队列不为空。
若该队列尾快照与该无锁队列的队列尾相等,则保存该队列尾指向的日志数据,同时将该队列尾的上一个节点作为新的队列尾。
若该队列尾快照与该无锁队列的队列尾不相等,则返回执行该获取该无锁队列的队列尾快照的步骤以及后续步骤。
图5示出了通过CAS实现的无锁队列出队的流程示意图。
在出队时,首先获取无锁队列的队列尾快照,然后判断该无锁队列是否为空,若无锁队列为空则结束本次操作;若无锁队列非空,则执行CAS循环:判断队列尾是否与队列尾快照相等,以判断队列尾是否被其他任务线程改变,若未发生改变,则保存队列尾指针指向的日志数据,同时修改队列尾为队列尾的上一个节点;若队列尾发生改变,说明其他任务线程正在操作无锁队列,则重新获取队列尾快照,并重复CAS循环。
本申请实施例中,由于传输线程只有在判断出队列尾快照与队列尾相等时,才修改队列尾为队列尾的上一个节点(传输线程对应的日志数据取出流程如图6所示),因此能够提高日志数据取出的准确度。
在一些实施例中,该日志存储节点以批处理的方式存储该传输线程发送的日志数据,包括:
该日志存储节点读取该传输线程发送的该日志数据,并确定读取的该日志数据所属的日志产生节点。具体地,日志数据可以携带日志产生节点的名称,该日志产生节点的名称唯一标识该日志产生节点。这样,当日志存储节点读取日志数据时,通过日志产生节点的名称能够确定该日志数据所属的日志产生节点
若已创建与确定的日志产生节点对应的数据表,则将读取的日志数据按照日志产生节点分类存入到对应的数据表。其中,每个日志产生节点均对应一个数据表,即同一个数据表用于存储同一个日志产生节点所对应的日志数据。
若未创建与确定的日志产生节点对应的数据表,则创建对应的数据表,并将读取的日志数据按照日志产生节点分类存入到对应的数据表。
将该数据表中的日志数据以批处理的方式存储在数据库。
图7示出了本申请实施例提供的日志存储节点存储日志数据的方法流程图。在图7中,日志存储节点从虚拟的分布式日志总线上侦听所有日志产生节点12发出的日志数据,若日志产生节点的唯一标识对应的数据表存在,则将日志数据按照日志产生节点的唯一标识(如名称)进行分类和合并;若日志产生节点的唯一标识对应的数据表不存在,则新建数据表,再将日志数据按照日志产生节点的唯一标识进行分类和合并,最后将日志数据批量写入数据库中。
由于先将日志数据按日志产生节点分类后,再写入对应的数据表,因此,后续批量将数据表的日志数据存储在数据库时,只需将缓存的同一数据表中的日志数据存储到数据库中与该数据表同一名称的数据表中即可,从而提高存储的速度。
在一些实施例中,日志存储节点11还用于:
判断该数据库中任一数据表存储的日志数据的数量是否超出配额。其中,这里的配额是指数据表中能够存储的最多的日志数据条目。
若超出配额,则删掉该数据表中最旧的日志数据,其中,被删掉的日志数据的数量与超出配额的日志数据的数量相等。
其中,最旧的日志数据是指最先存储的日志数据。
本申请实施例中,日志存储节点11判断不同日志产生节点12对应的数据表内存储的日志数据的数量是否超出配额,在判断出某一个日志产生节点12对应的数据表存储的日志数据的数量超出配额后,从该数据表最先存储的日志数据开始,截取与超出配额的日志数据的数量相等的日志数据,并删除截取的日志数据。由于最先存储的日志数据被再次使用的概率较低,因此,上述删除方法既能够避免删除到有用的日志数据,又能避免磁盘空间写满。
在一些实施例中,不同数据表(即不同日志产生节点对应的数据表)的配额不同。由于不同日志产生节点所产生的日志数据条目通常不同,因此,按照日志产生节点设置其对应的数据表的配额,能够提高设置的配额的准确度。
在一些实施例中,日志存储节点11还用于:
接收日志数据的查询指令,该查询指令包括日志数据的指向信息;
从该数据库中查找出该指向信息所指向的日志数据,并确定查找出的该日志数据对应的告警等级。
反馈查找出的该日志数据以及对应的告警等级。其中,告警等级包括故障、告警、信息、调试。
其中,日志数据的指向信息包括以下一种:日志产生节点的名称、日志优先级、产生日志的时间戳、产生日志的源码文件名和行号、日志内容。例如,若日志数据的指向信息为日志产生节点的名称,则将日志产生节点的名称所对应的日志产生节点所产生的日志数据作为待查询的日志数据。
当然,若在每产生一个日志数据之后,均确定该日志数据对应的告警等级再存储该日志数据以及该日志数据对应的告警等级,则日志数据的指向信息还可以包括告警等级,此时,可依据告警等级查找对应的日志数据,且在查找出日志数据后无需再重新确定日志数据的告警等级。
本申请实施例中,告警等级能够反馈日志数据的重要程度,比如,在告警等级为故障时,表明该日志数据很重要,用户需根据该日志数据尽快修复故障,也即,由于在根据查询指令查找对应的日志数据后,除了反馈日志数据,还反馈对应的告警等级,因此,有利于用户能够快速确定该日志数据的重要程度。
在一些实施例中,反馈的告警等级通过颜色表示,比如,在告警等级为“故障”时采用红色表示,在告警等级为“告警”时采用黄色表示,在告警等级为“信息”时采用黑色表示,在告警等级为“调试”时采用灰色表示。例如,在显示“故障”对应的日志数据时,以红色显示。
由于以颜色表示告警等级,而用户对颜色的反应很敏感,因此,通过颜色表示对应的告警等级,有利于用户快速确定出日志数据对应的重要程度。
实施例二:
图8示出了本申请实施例提供了一种日志处理方法的流程示意图,应用于上述实施例一的日志产生节点,该日志产生节点包括传输线程和任务线程,上述日志处理方法包括:
步骤S81,任务线程用于执行任务,并产生对应的日志数据。
其中,日志数据包含以下至少一项:日志产生节点的名称、日志优先级、产生日志的时间戳、产生日志的源码文件名和行号、日志内容。
步骤S82,传输线程获取该任务线程所产生的日志数据,并将该日志数据向日志存储节点发送。
在本申请实施例中,任务的执行采用任务线程执行,而日志数据的传输采用传输线程执行。由于任务的执行和日志数据的传输是通过不同线程异步执行,因此,在传输日志数据时不会影响到任务线程原有业务的逻辑,从而使得任务线程能够及时响应原有业务。
在一些实施例中,日志产生节点包括至少一个任务线程。当任务线程的数量大于1时,在每个任务线程产生日志数据后,将其产生的日志数据存入队列缓冲区,传输线程再从该队列缓冲区读取日志数据。由于任务线程先将其产生的日志数据存入队列缓冲区,而不是由各个任务线程直接向传输线程提交日志数据,因此,能够降低由于直接向传输线程提交日志数据而产生的阻塞的概率。
在一些实施例中,为了进一步避免任务线程在提交日志数据时产生阻塞,上述步骤S82包括:
该任务线程通过CAS的原子操作将该日志数据插入无锁队列中。其中,无锁队列通过链表实现。
该传输线程通过该CAS的原子操作从该无锁队列提取该日志数据,将提取的该日志数据向该日志存储节点发送。
在一些实施例中,该任务线程通过比较并交换CAS的原子操作将该日志数据插入无锁队列中,包括:
该任务线程获取该无锁队列的队列头快照以及该无锁队列的队列头,若该队列头快照和该队列头相等,则将该日志数据作为该无锁队列的新的队列头所指向的日志数据,以将该日志数据插入该无锁队列中。若该队列头快照和该队列头不相等,则返回执行该获取该无锁队列的队列头快照以及该无锁队列的队列头的步骤以及后续步骤。
在一些实施例中,该传输线程通过该CAS的原子操作从该无锁队列提取该日志数据,包括:
该传输线程判断该无锁队列是否为空,若不为空,则获取该无锁队列的队列尾快照。具体地,判断该无锁队列的队列头指针和队列尾指针是否相等,若相等,则判定该无锁队列为空,否则,判定该无锁队列不为空。
若该队列尾快照与该无锁队列的队列尾相等,则保存该队列尾指向的日志数据,同时将该队列尾的上一个节点作为新的队列尾。
若该队列尾快照与该无锁队列的队列尾不相等,则返回执行该获取该无锁队列的队列尾快照的步骤以及后续步骤。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
实施例三:
图9为本申请一实施例提供的终端设备的结构示意图。如图9所示,该实施例的终端设备9包括:至少一个处理器90(图9中仅示出一个处理器)、存储器91以及存储在该存储器91中并可在该至少一个处理器90上运行的计算机程序92,该处理器90执行该计算机程序92时实现上述任意各个方法实施例中的步骤。
该终端设备9可以是桌上型计算机、笔记本、掌上电脑及云端服务器等计算设备。该终端设备可包括,但不仅限于,处理器90、存储器91。本领域技术人员可以理解,图9仅仅是终端设备9的举例,并不构成对终端设备9的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件,例如还可以包括输入输出设备、网络接入设备等。
所称处理器90可以是中央处理单元(Central Processing Unit,CPU),该处理器90还可以是其他通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。通用处理器可以是微处理器或者该处理器也可以是任何常规的处理器等。
该存储器91在一些实施例中可以是该终端设备9的内部存储单元,例如终端设备9的硬盘或内存。该存储器91在另一些实施例中也可以是该终端设备9的外部存储设备,例如该终端设备9上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。进一步地,该存储器91还可以既包括该终端设备9的内部存储单元也包括外部存储设备。该存储器91用于存储操作系统、应用程序、引导装载程序(BootLoader)、数据以及其他程序等,例如该计算机程序的程序代码等。该存储器91还可以用于暂时地存储已经输出或者将要输出的数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将该装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。另外,各功能单元、模块的具体名称也只是为了便于相互区分,并不用于限制本申请的保护范围。上述系统中单元、模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
本申请实施例还提供了一种网络设备,该网络设备包括:至少一个处理器、存储器以及存储在所述存储器中并可在所述至少一个处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现上述任意各个方法实施例中的步骤。
本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行时实现可实现上述各个方法实施例中的步骤。
本申请实施例提供了一种计算机程序产品,当计算机程序产品在终端设备上运行时,使得终端设备执行时实现可实现上述各个方法实施例中的步骤。
所述集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一计算机可读存储介质中,该计算机程序在被处理器执行时,可实现上述各个方法实施例的步骤。其中,所述计算机程序包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质至少可以包括:能够将计算机程序代码携带到拍照装置/终端设备的任何实体或装置、记录介质、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、电载波信号、电信信号以及软件分发介质。例如U盘、移动硬盘、磁碟或者光盘等。在某些司法管辖区,根据立法和专利实践,计算机可读介质不可以是电载波信号和电信信号。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述或记载的部分,可以参见其它实施例的相关描述。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、或者计算机软件和电子硬件的结合来实现。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
在本申请所提供的实施例中,应该理解到,所揭露的装置/网络设备和方法,可以通过其它的方式实现。例如,以上所描述的装置/网络设备实施例仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。另一点,所显示或讨论的相互之间的耦合或直接耦合或通讯连接可以是通过一些接口,装置或单元的间接耦合或通讯连接,可以是电性,机械或其它的形式。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施例方案的目的。
以上所述实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。

Claims (10)

1.一种日志处理系统,其特征在于,所述日志处理系统包括日志存储节点和至少两个日志产生节点,各个所述日志产生节点均为分布式系统中的子节点,每个所述日志产生节点均包括传输线程和任务线程;
所述任务线程用于执行任务,并产生对应的日志数据;
针对每一个所述日志产生节点,所述传输线程获取所述任务线程所产生的日志数据,并将所述日志数据向所述日志存储节点发送;
所述日志存储节点以批处理的方式存储所述传输线程发送的日志数据。
2.如权利要求1所述的日志处理系统,其特征在于,所述传输线程获取所述任务线程所产生的日志数据,并将所述日志数据向所述日志存储节点发送,包括:
所述任务线程通过比较并交换CAS的原子操作将所述日志数据插入无锁队列中;
所述传输线程通过所述CAS的原子操作从所述无锁队列提取所述日志数据,将提取的所述日志数据向所述日志存储节点发送。
3.如权利要求2所述的日志处理系统,其特征在于,所述任务线程通过比较并交换CAS的原子操作将所述日志数据插入无锁队列中,包括:
所述任务线程获取所述无锁队列的队列头快照以及所述无锁队列的队列头,若所述队列头快照和所述队列头相等,则将所述日志数据作为所述无锁队列的新的队列头所指向的日志数据,以将所述日志数据插入所述无锁队列中,若所述队列头快照和所述队列头不相等,则返回执行所述获取所述无锁队列的队列头快照以及所述无锁队列的队列头的步骤以及后续步骤。
4.如权利要求2所述的日志处理系统,其特征在于,所述传输线程通过所述CAS的原子操作从所述无锁队列提取所述日志数据,包括:
所述传输线程判断所述无锁队列是否为空,若不为空,则获取所述无锁队列的队列尾快照;
若所述队列尾快照与所述无锁队列的队列尾相等,则保存所述队列尾指向的日志数据,同时将所述队列尾的上一个节点作为新的队列尾;
若所述队列尾快照与所述无锁队列的队列尾不相等,则返回执行所述获取所述无锁队列的队列尾快照的步骤以及后续步骤。
5.如权利要求1所述的日志处理系统,其特征在于,所述日志存储节点以批处理的方式存储所述传输线程发送的日志数据,包括:
所述日志存储节点读取所述传输线程发送的所述日志数据,并确定读取的所述日志数据所属的日志产生节点;
若已创建与确定的日志产生节点对应的数据表,则将读取的日志数据按照日志产生节点分类存入到对应的数据表;
若未创建与确定的日志产生节点对应的数据表,则创建对应的数据表,并将读取的日志数据按照日志产生节点分类存入到对应的数据表;
将所述数据表中的日志数据以批处理的方式存储在数据库。
6.如权利要求5所述的日志处理系统,其特征在于,所述日志存储节点还用于:
判断所述数据库中任一数据表存储的日志数据的数量是否超出配额;
若超出配额,则删掉所述数据表中最旧的日志数据,其中,被删掉的日志数据的数量与超出配额的日志数据的数量相等。
7.如权利要求1至6任一项所述的日志处理系统,其特征在于,所述日志存储节点还用于:
接收日志数据的查询指令,所述查询指令包括日志数据的指向信息;
从所述数据库中查找出所述指向信息所指向的日志数据,并确定查找出的所述日志数据对应的告警等级;
反馈查找出的所述日志数据以及对应的告警等级。
8.一种日志处理方法,其特征在于,应用于日志产生节点,所述日志产生节点包括传输线程和任务线程,所述日志处理方法包括:
所述任务线程用于执行任务,并产生对应的日志数据;
所述传输线程获取所述任务线程所产生的日志数据,并将所述日志数据向日志存储节点发送。
9.一种终端设备,包括存储器、处理器以及存储在所述存储器中并可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求8所述的方法。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求8所述的方法。
CN202111668637.4A 2021-12-30 2021-12-30 日志处理系统、日志处理方法及终端设备 Pending CN114490251A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202111668637.4A CN114490251A (zh) 2021-12-30 2021-12-30 日志处理系统、日志处理方法及终端设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202111668637.4A CN114490251A (zh) 2021-12-30 2021-12-30 日志处理系统、日志处理方法及终端设备

Publications (1)

Publication Number Publication Date
CN114490251A true CN114490251A (zh) 2022-05-13

Family

ID=81507864

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202111668637.4A Pending CN114490251A (zh) 2021-12-30 2021-12-30 日志处理系统、日志处理方法及终端设备

Country Status (1)

Country Link
CN (1) CN114490251A (zh)

Cited By (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115237875A (zh) * 2022-09-26 2022-10-25 成都卫士通信息产业股份有限公司 一种日志数据处理方法、装置、设备、存储介质
CN115328878A (zh) * 2022-10-17 2022-11-11 成都卫士通信息产业股份有限公司 日志数据存储系统、方法、设备及介质
CN115378802A (zh) * 2022-08-24 2022-11-22 深圳市晨北科技有限公司 一种日志收集方法、装置、设备及计算机可读存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115378802A (zh) * 2022-08-24 2022-11-22 深圳市晨北科技有限公司 一种日志收集方法、装置、设备及计算机可读存储介质
CN115237875A (zh) * 2022-09-26 2022-10-25 成都卫士通信息产业股份有限公司 一种日志数据处理方法、装置、设备、存储介质
CN115237875B (zh) * 2022-09-26 2023-01-24 成都卫士通信息产业股份有限公司 一种日志数据处理方法、装置、设备、存储介质
CN115328878A (zh) * 2022-10-17 2022-11-11 成都卫士通信息产业股份有限公司 日志数据存储系统、方法、设备及介质

Similar Documents

Publication Publication Date Title
CN114490251A (zh) 日志处理系统、日志处理方法及终端设备
US9787706B1 (en) Modular architecture for analysis database
CN109787777B (zh) 一种网卡模式切换方法、装置、电子设备及存储介质
US20110265098A1 (en) Message Passing with Queues and Channels
CN108509327A (zh) 一种日志输出方法、装置、终端设备和存储介质
CN108762735B (zh) 工作流引擎的管理方法及装置、存储介质、终端
CN111431757A (zh) 虚拟网络的流量采集方法及装置
CN111737564B (zh) 一种信息查询方法、装置、设备及介质
CN104239134A (zh) 一种众核系统的任务管理方法和装置
KR20210106379A (ko) 블록체인에 기반한 데이터 처리 방법, 장치, 기기, 매체 및 프로그램
CN111046106A (zh) 缓存数据同步方法、装置、设备及介质
US20110246582A1 (en) Message Passing with Queues and Channels
CN112052144B (zh) 信息管理方法、装置、电子设备及存储介质
CN112559202A (zh) 基于嵌入式实时操作系统的飞行器应用软件通讯方法
US7975183B2 (en) Dynamic debugging of platform transactions via context aware transactional debug marking
US9659041B2 (en) Model for capturing audit trail data with reduced probability of loss of critical data
CN112083914B (zh) 实现对象模型嵌入式操作系统软总线的方法及系统
CN115168358A (zh) 数据库访问方法、装置、电子设备及存储介质
CN109375990B (zh) 一种基于原子操作的环形链表方法
EP3519966A1 (en) Non-coupled software lockstep
CN114265637A (zh) 档案管理系统配置方法、系统、电子设备以及存储介质
CN113157628A (zh) 存储系统、数据处理方法、装置、存储系统及电子设备
CN112416951B (zh) 数据传递方法及其装置、计算机可存储介质
CN116431561B (zh) 基于异构众核加速卡的数据同步方法、装置、设备及介质
US11875151B1 (en) Inter-process serving of machine learning features from mapped memory for machine learning models

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