CN116521639A - 一种日志数据的处理方法、电子设备和计算机可读介质 - Google Patents
一种日志数据的处理方法、电子设备和计算机可读介质 Download PDFInfo
- Publication number
- CN116521639A CN116521639A CN202310594858.4A CN202310594858A CN116521639A CN 116521639 A CN116521639 A CN 116521639A CN 202310594858 A CN202310594858 A CN 202310594858A CN 116521639 A CN116521639 A CN 116521639A
- Authority
- CN
- China
- Prior art keywords
- buffer
- log
- buffer area
- time interval
- 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
Links
- 238000003672 processing method Methods 0.000 title abstract description 13
- 239000000872 buffer Substances 0.000 claims abstract description 269
- 238000012545 processing Methods 0.000 claims abstract description 117
- 238000000034 method Methods 0.000 claims abstract description 52
- 230000008569 process Effects 0.000 claims description 14
- 238000012544 monitoring process Methods 0.000 claims description 10
- 238000004590 computer program Methods 0.000 claims description 9
- 230000007246 mechanism Effects 0.000 abstract description 17
- 238000012423 maintenance Methods 0.000 abstract description 15
- 238000011161 development Methods 0.000 abstract description 14
- 238000000926 separation method Methods 0.000 abstract description 7
- 238000010586 diagram Methods 0.000 description 15
- 230000007717 exclusion Effects 0.000 description 8
- 238000004891 communication Methods 0.000 description 7
- 238000007405 data analysis Methods 0.000 description 6
- 238000004458 analytical method Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 230000003287 optical effect Effects 0.000 description 4
- 238000012986 modification Methods 0.000 description 3
- 230000004048 modification Effects 0.000 description 3
- 230000008901 benefit Effects 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 239000000835 fiber Substances 0.000 description 2
- 230000000644 propagated effect Effects 0.000 description 2
- 238000011084 recovery Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000002457 bidirectional effect Effects 0.000 description 1
- 239000012141 concentrate Substances 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 230000009977 dual effect Effects 0.000 description 1
- 239000004973 liquid crystal related substance Substances 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012360 testing method Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/1805—Append-only file systems, e.g. using logs or journals to store data
- G06F16/1815—Journaling file systems
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/17—Details of further file system functions
- G06F16/172—Caching, prefetching or hoarding of files
-
- 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
-
- 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/0638—Organizing or formatting or addressing of data
- G06F3/0643—Management of files
-
- 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/0655—Vertical data movement, i.e. input-output transfer; data movement between one or more hosts and one or more storage devices
- G06F3/0656—Data buffering arrangements
-
- 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/0671—In-line storage system
- G06F3/0673—Single storage device
- G06F3/0674—Disk device
- G06F3/0676—Magnetic disk device
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明公开了一种日志数据的处理方法、电子设备和计算机可读介质,涉及日志管理技术领域。该方法由包括第一缓冲区、日志处理线程和第二缓冲区的日志数据的处理***执行,具体实施方式包括:第一缓冲区接收一个或多个业务线程发送的日志数据;日志处理线程将第二缓冲区的日志数据写入日志文件;其中,第二缓冲区是由第一缓冲区切换而来的。该实施方式能够利用双缓冲区的日志数据的处理***,实现日志数据的读写分离和批处理,避免业务线程竞争,简化日志处理机制,降低磁盘操作的内存开销,提升日志写入效率和数据吞吐量,缩减开发和维护成本。
Description
技术领域
本发明涉及日志管理技术领域,尤其涉及一种日志数据的处理方法、电子设备和计算机可读介质。
背景技术
软件(software)应用于各种终端设备,是指终端操作***中按照特定顺序组织的程序和指令集合。为了对软件进行分析,通常利用日志对软件的开发、测试、维护、运行等过程进行记录,以便于定位故障、还原现场、数据分析、监控业务等。
现有的日志处理过程中,通常采用异步日志的方式,多个业务线程分别将产生的日志消息发送给日志线程,日志线程每收集一条日志消息即写入日志文件。为了保证数据的完整性,多个业务线程之间建立全局互斥锁,任意时刻保证仅有一个业务线程与日志线程通信,防止写入中断丢失数据。
在实现本发明过程中,发明人发现现有技术中至少存在如下问题:
现有的日志处理基于竞争/占有模式的锁机制实现,使得日志处理机制复杂,代码冗余度高,开发成本大的同时维护成本较高;任意时刻仅有一个业务线程与日志线程通信,使得日志写入效率低下,无法满足海量数据量下及时的故障定位、数据分析等需求。
发明内容
有鉴于此,本发明实施例提供一种日志数据的处理方法、电子设备和计算机可读介质,能够利用双缓冲区的日志数据的处理***,实现日志数据的读写分离和批处理,避免业务线程的竞争,简化日志处理机制,代码冗余度低,降低了磁盘操作的内存开销,提升了日志写入效率和日志数据吞吐量,缩减开发和维护成本,提升软件性能。
为实现上述目的,根据本发明实施例的一个方面,提供了一种日志数据的处理方法,
所述方法由日志数据的处理***执行,所述日志数据的处理***包括第一缓冲区、日志处理线程和第二缓冲区,所述方法包括:
所述第一缓冲区接收一个或多个业务线程发送的日志数据;
所述日志处理线程将所述第二缓冲区的日志数据写入日志文件;其中,所述第二缓冲区是由所述第一缓冲区切换而来的。
可选地,在所述日志处理线程将所述第二缓冲区的日志数据写入日志文件之前,还包括:
所述日志处理线程判断所述第二缓冲区的数据量是否超过预设的写入阈值;
在所述日志处理线程确定所述第二缓冲区的数据量超过预设的写入阈值的情况下,判断最新的所述切换时间间隔是否为初始的切换时间间隔将所述第二缓冲区的日志数据写入所述日志文件;
在最新的所述切换时间间隔不是初始的切换时间间隔的情况下,利用初始的切换时间间隔更新所述切换时间间隔。
可选地,在所述日志处理线程确定所述第二缓冲区的数据量未超过预设的写入阈值的情况下,还包括:
所述日志处理线程判断监控时间间隔是否到达最新的切换时间间隔;
递增微写次数;
根据预设的时间间隔增量和所述微写次数,更新所述切换时间间隔。
可选地,在所述日志处理线程将所述第二缓冲区的全部日志数据写入所述日志文件后、或者在所述监控时间间隔到达最新的切换时间间隔的情况下,还包括:
所述日志处理线程判断所述第二缓冲区是否包括临时缓冲区;
在所述第二缓冲区包括临时缓冲区的情况下,所述日志处理线程释放所述第二缓冲区中的临时缓冲区,并切换所述第二缓冲区和所述第一缓冲区;
或者,在所述第二缓冲区不包括临时缓冲区的情况下,所述日志处理线程直接切换所述第二缓冲区和所述第一缓冲区。
可选地,还包括:
所述日志处理线程判断所述第一缓冲区的数据量是否超过所述第一缓冲区的缓冲区容量;
在所述第一缓冲区的数据量超过所述第一缓冲区的缓冲区容量的情况下,为所述第一缓冲区分配临时缓冲区,并将所述临时缓冲区链接于所述第一缓冲区之后。
可选地,所述第一缓冲区包括基础缓冲区,或者,所述第一缓冲区包括基础缓冲区和一个或者多个临时缓冲区;所述判断所述第一缓冲区的数据量是否超过所述第一缓冲区的缓冲区容量,包括:
在所述第一缓冲区仅包括基础缓冲区的情况下,判断所述第一基础缓冲区的数据量是否超过预设的基础容量;或者,
在所述第一缓冲区包括基础缓冲区和临时缓冲区的情况下,判断最后一个所述临时缓冲区的数据量是否超过预设的临时容量。
可选地,所述将所述临时缓冲区链接于所述第一缓冲区之后,包括:
在所述第一缓冲区仅包括基础缓冲区的情况下,将所述临时缓冲区链接于所述基础缓冲区之后;或者,
在所述第一缓冲区包括基础缓冲区和临时缓冲区的情况下,将所述临时缓冲区链接于最后一个所述临时缓冲区之后。
可选地,所述根据预设的时间间隔增量和所述微写次数,更新所述切换时间间隔,包括:
在最新的所述切换时间间隔的基础上增加所述微写次数倍的时间间隔增量,得到更新后的切换时间间隔。
根据本发明实施例的再一个方面,提供了一种日志数据的处理的电子设备,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现本发明提供的日志数据的处理方法。
根据本发明实施例的另一个方面,提供了一种计算机可读介质,其上存储有计算机程序,所述程序被处理器执行时实现本发明提供的日志数据的处理方法。
上述发明中的一个实施例具有如下优点或有益效果:因为采用包括第一缓冲区、日志处理线程和第二缓冲区的日志数据的处理***,由第一缓冲区接收业务线程发送的日志数据;同时由日志处理线程将第二缓冲区的日志数据写入日志文件,第一缓冲区和第二缓冲区相互切换的技术手段,所以克服了现有的日志处理基于竞争/占有模式的锁机制实现,使得日志处理机制复杂,代码冗余度高,开发成本大的同时维护成本较高;日志写入效率低下,无法满足海量数据量下及时的故障定位、数据分析等需求的技术问题,进而达到能够利用双缓冲区的日志数据的处理***,实现日志数据的读写分离和批处理,避免业务线程的竞争,简化日志处理机制,代码冗余度低,降低了磁盘操作的内存开销,提升了日志写入效率和日志数据吞吐量,缩减开发和维护成本,提升软件性能的技术效果。
上述的非惯用的可选方式所具有的进一步效果将在下文中结合具体实施方式加以说明。
附图说明
附图用于更好地理解本发明,不构成对本发明的不当限定。其中:
图1是根据本发明实施例的日志数据的处理方法的主要流程的示意图;
图2是根据本发明实施例的日志数据的处理***的示意图;
图3是根据本发明实施例的日志数据的确定方法的主要流程的示意图;
图4是根据本发明实施例的采用双链表形式的缓冲区的示意图;
图5是根据本发明实施例的日志数据的处理***的运行方法的主要流程的示意图;
图6是根据本发明实施例的第一缓冲区和第二缓冲区的切换示意图;
图7示出了适于应用于本发明实施例的日志数据的处理方法的主要流程方法或日志数据的处理方法的主要流程***的示例性***架构图;
图8是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图。
具体实施方式
以下结合附图对本发明的示范性实施例做出说明,其中包括本发明实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本发明的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
需要说明的是,本公开的技术方案中,所涉及的用户个人信息的采集、收集、更新、分析、处理、使用、传输、存储等方面,均符合相关法律法规的规定,被用于合法的用途,且不违背公序良俗。对用户个人信息采取必要措施,防止对用户个人信息数据的非法访问,维护用户个人信息安全、网络安全和国家安全。
现有的软件日志处理过程中,为了对日志进行分析,日志线程需要对多个业务线程的日志消息进行收集,并写入日志文件,方可便于开发、运维和分析人员等提取有效信息,以提升软件性能。但是,多个业务线程之间采用全局互斥锁的方式——也即,任意时刻仅允许一个上锁的业务线程访问日志线程,上锁的业务线程每向日志线程发送一条日志消息,即由日志线程收集并写入日志文件,写入完成后即释放互斥锁,由其它业务线程发送下一条日志消息,从而实现各条日志消息的写入——一方面,全局互斥锁的方式虽然可以保证日志数据的完整性、解放业务线程使其专注于自身业务,但是却会导致磁盘I/O(输入/输出,Input/Output)操作次数过于频繁,内存开销过大,同时逐个日志消息的写入使得日志处理耗时较长,写入效率低下;另一方面,为全部业务线程构建互斥锁、并且由日志线程同时处理收集和写入操作,使得日志处理机制过于复杂,代码冗余度高,导致开发和维护成本较大。
通过本发明的日志数据的处理方法,采用双缓冲技术实现读写分离,能够避免业务线程之间互斥锁的竞争,缩减磁盘I/O次数,降低内存开销,提高日志的处理效率;同时,由于日志处理机制的简化,降低了代码复杂度,使得日志***的开发和维护成本大大减小。
图1是根据本发明实施例的日志数据的处理方法的主要流程的示意图,如图1所示,本发明的日志数据的处理方法包括如下步骤:
在本发明实施例中,本发明的日志数据的处理方法由日志数据的处理***执行,如图2所示,日志数据的处理***包括第一缓冲区、日志处理线程和第二缓冲区。
步骤S101,所述第一缓冲区接收一个或多个业务线程发送的日志数据。
在本发明实施例中,业务线程的运行通常是各个业务步骤按顺序执行,一个业务步骤可能产生一条或者多条日志消息,而日志文件通常用于开发、运维、数据分析等场景(比如,开发人员的故障定位、错误还原,或者运维人员的业务监控、报警维护,或者分析人员的用户数据分析、参数趋势分析等),故而并非全部的业务消息皆需写入日志文件。因此,在本发明实施例中,由业务线程的日志流对象根据后续数据分析人员等的使用需求,采集日志数据并发送至第一缓冲区,由第一缓冲区接收业务线程发送的日志数据,以便于日志处理线程后续将日志数据写入日志文件。
不同于现有的业务线程每产生一条日志消息、日志处理线程接收后即需立即将该条日志消息写入日志文件,本发明的日志数据的处理***的第一缓冲区接收业务线程产生的日志数据,再由日志处理线程写入,也即,将日志数据积攒够一个缓冲区的数据量后再写入日志文件,实现日志数据的批处理写入,大大缩减了磁盘I/O次数,从而降低内存开销。
在本发明实施例中,如图3所示,本发明的日志数据的确定方法包括如下步骤:
在本发明实施例中,本发明的日志数据的确定方法由业务线程执行。
步骤S301,接收日志文件的使用请求;其中,所述使用请求包括采集关键词。
在本发明实施例中,日志文件的使用请求是由日志文件的使用方发出的,包括开发、运维、数据分析等机构,各机构根据开发需求、运维需求、分析需求等确定需要使用的日志文件,并发送给业务线程,使得业务线程的日志流对象采集与使用请求的采集关键词对应的日志数据,以便于各机构使用。比如,采集关键词包括“用户名”、“交易金额”和“交易方式”等。
步骤S302,根据所述采集关键词,所述业务线程的日志流对象采集所述日志数据。
在本发明实施例中,业务线程的日志流对象根据采集关键词,从业务线程的运行日志中采集匹配的日志数据。
在本发明实施例中,通过本发明的日志数据的确定方法,业务线程按照使用机构的使用请求采集对应的日志数据,从而在满足日志文件的使用场景的情况下精简日志文件,防止数据冗余,提升日志使用效率。
在本发明实施例中,第一缓冲区包括基础缓冲区,或者,第一缓冲区包括基础缓冲区、一个或者多个临时缓冲区,临时缓冲区的个数根据实际的日志数据量进行选择性设置。为了提高日志数据的处理***的性能和可扩展性,第一缓冲区采用双链表形式,基础缓冲区和临时缓冲区之间、以及多个临时缓冲区之间双向链接,如图4所示,以实现缓冲区的动态调整,降低内存分配和释放的开销。
在本发明实施例中,基础缓冲区的基础容量、临时缓冲区的临时容量的大小可以根据实际的日志数据量进行选择性设置。
步骤S102,所述日志处理线程将所述第二缓冲区的日志数据写入日志文件;其中,所述第二缓冲区是由所述第一缓冲区切换而来的。
在本发明实施例中,第二缓冲区由第一缓冲区切换而来,因此,第二缓冲区的基础缓冲区和临时缓冲区的容量大小、临时缓冲区的个数由切换前的第一缓冲区确定,也即,第二缓冲区同样包括基础缓冲区,或者,第二缓冲区同样包括基础缓冲区、一个或者多个临时缓冲区。
在本发明实施例中,如图5所示,本发明的日志数据的处理***的运行方法包括如下步骤:
在本发明实施例中,日志数据的处理***中日志数据的添加和写入并行,故而相较于传统的日志收集和写入,本发明的日志数据的处理***利用双缓冲区,实现日志数据的读写分离,防止互斥锁机制的锁竞争和频繁的磁盘I/O操作,降低内存消耗,提高了日志数据的吞吐量和写入效率。
步骤S501,启动所述日志数据的处理***。
在本发明实施例中,日志数据的处理***启动后,日志处理线程启动。
步骤S502,所述第一缓冲区接收所述业务线程发送的日志数据,同时,所述日志处理线程从所述第二缓冲区获取待写入的日志数据并全部写入日志文件。在本发明实施例中,在日志数据的写入过程中,还包括:
所述日志处理线程判断所述第一缓冲区的数据量是否超过预设的缓冲区容量,如果是,为所述第一缓冲区分配一个临时缓冲区,并将所述临时缓冲区链接于所述第一缓冲区之后。
在本发明实施例中,所述判断所述第一缓冲区的数据量是否超过预设的缓冲区容量,包括:
在所述第一缓冲区仅包括基础缓冲区的情况下,判断所述基础缓冲区的数据量是否超过预设的基础容量,或者,
在所述第一缓冲区包括基础缓冲区和临时缓冲区的情况下,判断最后一个所述临时缓冲区的数据量是否超过预设的临时容量。
在本发明实施例中,所述将所述临时缓冲区链接于所述第一缓冲区之后,包括:
在所述第一缓冲区仅包括基础缓冲区的情况下,将所述临时缓冲区链接于所述基础缓冲区之后,或者,
在所述第一缓冲区包括基础缓冲区和临时缓冲区的情况下,将所述临时缓冲区链接于最后一个所述临时缓冲区之后。
步骤S503,所述日志处理线程判断所述第二缓冲区的数据量是否超过预设的写入阈值,如果是,转至步骤S504;如果否,转至步骤S508。
在本发明实施例中,由于业务线程处理用户请求的时间段通常比较集中(比如,工作时间段),故而非工作时间段用户请求较少,第一缓冲区的日志数据微乎其微,因此,为了减少第一缓冲区和第二缓冲区的切换次数,日志处理线程在写入时,先对第二缓冲区的数据量进行判断,对于第二缓冲区的数据量小于写入阈值的情况下,不断增加切换时间间隔,以降低***资源消耗。
进一步地,第二缓冲区的写入阈值根据实际的缓冲区容量进行选择性设置,可以是基础缓冲区容量的极小比例值,比如,5%的基础缓冲区容量。
步骤S504,判断最新的所述切换时间间隔是否为初始的切换时间间隔,如果是,转至步骤S505;如果否,转至步骤S511。
在本发明实施例中,由于第二缓冲区的数据量超过预设的写入阈值可能是工作时间段用户请求恢复带来的,因此,在第二缓冲区的数据量超过预设的写入阈值的情况下,对最新的切换时间间隔进行判断,以在日志数据的数据量恢复正常的情况下对切换时间间隔进行更新,恢复为初始的切换时间间隔。
步骤S505,判断所述第二缓冲区是否包括临时缓冲区,如果是,转至步骤S506;如果否,转至步骤S507。
步骤S506,释放所述第二缓冲区中的临时缓冲区,并切换所述第二缓冲区和所述第一缓冲区。
在本发明实施例中,在第二缓冲区包括临时缓冲区的情况下,日志处理线程释放第二缓冲区中的临时缓冲区,并切换第二缓冲区和第一缓冲区,如图6所示,由第一缓冲区接收、日志处理线程从第二缓冲区写入,切换为由第二缓冲区添加、日志处理线程从第一缓冲区写入,相应地,第二缓冲区变为第一缓冲区、第一缓冲区变为第二缓冲区。
进一步地,通过释放临时缓冲区,可以降低内存的分配开销,以便于将释放的临时缓冲区重新分配给第一缓冲区。
步骤S507,直接切换所述第二缓冲区和所述第一缓冲区。
在本发明实施例中,在第二缓冲区不包括临时缓冲区的情况下,则无需释放临时缓冲区,日志处理线程直接切换第二缓冲区和第一缓冲区即可。
步骤S508,所述日志处理线程判断监控时间间隔是否到达最新的切换时间间隔,如果是,转至步骤S509。
在本发明实施例中,监控时间间隔为日志处理线程从启动开始至当前时刻的时间间隔,或者,监控时间间隔为日志处理线程从上次切换结束开始至当前时刻的时间间隔。
在本发明实施例中,在确定第二缓冲区的数据量未超过预设的写入阈值的情况下,日志处理线程对监控时间间隔进行监控,判断是否到达最新的切换时间间隔。
进一步地,在日志处理线程初次判断的情况下,最新的切换时间间隔为初始的切换时间间隔;在日志处理线程非初次判断的情况下,最新的切换时间间隔为初始的切换时间间隔或者更新后的切换时间间隔,根据切换时间间隔是否更新而定。需要说明的是,初始的切换时间间隔可以根据实际的缓冲区容量进行选择性设置,通常大于工作时间段下缓冲区的全部日志数据写入日志文件所需的时间。比如,初始的切换时间间隔为10s。
步骤S509,递增微写次数。
在本发明实施例中,在日志处理线程确定到达最新的切换时间间隔的情况下,递增微写次数。其中,微写次数的初始值为0。
进一步地,在日志处理线程确定未到达最新的切换时间间隔的情况下,继续等待,直至到达最新的切换时间间隔。
步骤S510,根据预设的时间间隔增量和所述微写次数,更新所述切换时间间隔。
在本发明实施例中,在第一缓冲区的日志数据极少的情况下,为了减少第一缓冲区和第二缓冲区的切换次数,日志处理线程增加切换时间间隔,以减少磁盘I/O操作次数,降低***资源消耗。。
进一步地,增大切换时间间隔是在当前的切换时间间隔的基础上增加写空次数倍的时间间隔增量,也即,更新后的切换时间间隔=当前的切换时间间隔+写空次数*时间间隔增量。其中,时间间隔增量可以根据实际的切换需求进行选择性设置,比如,时间间隔增量为1s。
更进一步地,更新切换时间间隔后,转至步骤S505。
步骤S511,利用初始的切换时间间隔更新所述切换时间间隔。
在本发明实施例中,在第二缓冲区的数据量超过预设的写入阈值、最新的切换时间间隔非初始的切换时间间隔的情况下,将切换时间间隔更新为初始的切换时间间隔,以满足工作时间段下日志数据量的写入需求。进一步地,更新切换时间间隔后,转至步骤S505。
在本发明实施例中,通过本发明的日志数据的处理***的运行方法,日志处理线程在将日志数据写入第二缓冲区时,根据第二缓冲区的数据量进行判断,确定是直接写入日志文件还是调整切换时间间隔,以最大化降低内存消耗,提升日志处理效率。
在本发明实施例中,通过所述日志数据的处理***包括第一缓冲区、日志处理线程和第二缓冲区,所述第一缓冲区接收一个或多个业务线程发送的日志数据;所述日志处理线程将所述第二缓冲区的日志数据写入日志文件;其中,所述第二缓冲区是由所述第一缓冲区切换而来的等步骤,能够利用双缓冲区的日志数据的处理***,实现日志数据的读写分离和批处理,避免业务线程的竞争,简化日志处理机制,代码冗余度低,降低了磁盘操作的内存开销,提升了日志写入效率和日志数据吞吐量,缩减开发和维护成本,提升软件性能。
图7示出了适于应用于本发明实施例的日志数据的处理方法或日志数据的处理***的示例性***架构图,如图7所示,本发明实施例的日志数据的处理方法或日志数据的处理***的示例性***架构包括:
如图7所示,***架构700可以包括终端设备701、702、703,网络704和服务器705。网络704用以在终端设备701、702、703和服务器705之间提供通信链路的介质。网络704可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。
用户可以使用终端设备701、702、703通过网络704与服务器705交互,以接收或发送消息等。终端设备701、702、703上可以安装有各种通讯客户端应用,例如日志类应用、购物类应用、网页浏览器应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
终端设备701、702、703可以是具有显示屏并且支持网页浏览的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等等。
服务器705可以是提供各种服务的服务器,例如对用户利用终端设备701、702、703所浏览的日志类网站提供支持的后台管理服务器。后台管理服务器可以对接收到的日志消息等数据进行分析等处理,并将处理结果(比如,日志文件)反馈给终端设备701、702、703。
需要说明的是,本发明实施例所提供的日志数据的处理方法一般由服务器705执行,相应地,日志数据的处理***一般设置于服务器7 05中。
应该理解,图7中的终端设备、网络和服务器的数目仅仅是示意性的。根据实现需要,可以具有任意数目的终端设备、网络和服务器。
图8是适于用来实现本发明实施例的终端设备或服务器的计算机***的结构示意图,如图8所示,本发明实施例的终端设备或服务器的计算机***800包括:
中央处理单元(CPU)801,其可以根据存储在只读存储器(ROM)802中的程序或者从存储部分808加载到随机访问存储器(RAM)803中的程序而执行各种适当的动作和处理。在RAM803中,还存储有***800操作所需的各种程序和数据。CPU801、ROM802以及RAM803通过总线804彼此相连。输入/输出(I/O)接口805也连接至总线804。
以下部件连接至I/O接口805:包括键盘、鼠标等的输入部分806;包括诸如阴极射线管(CRT)、液晶显示器(LCD)等以及扬声器等的输出部分807;包括硬盘等的存储部分808;以及包括诸如LAN卡、调制解调器等的网络接口卡的通信部分809。通信部分809经由诸如因特网的网络执行通信处理。驱动器810也根据需要连接至I/O接口805。可拆卸介质811,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器810上,以便于从其上读出的计算机程序根据需要被安装入存储部分808。
特别地,根据本发明公开的实施例,上文参考流程图描述的过程可以被实现为计算机软件程序。例如,本发明公开的实施例包括一种计算机程序产品,其包括承载在计算机可读介质上的计算机程序,该计算机程序包含用于执行流程图所示的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分809从网络上被下载和安装,和/或从可拆卸介质811被安装。在该计算机程序被中央处理单元(CPU)801执行时,执行本发明的***中限定的上述功能。
需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本发明中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。而在本发明中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、RF等等,或者上述的任意合适的组合。
附图中的流程图和框图,图示了按照本发明各种实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,上述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图或流程图中的每个方框、以及框图或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
描述于本发明实施例中所涉及到的模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的模块也可以设置在处理器中,例如,可以描述为:一种处理器包括第一缓冲区、日志处理线程和第二缓冲区。其中,这些模块的名称在某种情况下并不构成对该模块本身的限定,例如,日志处理线程还可以被描述为“将所述第二缓冲区的日志数据写入日志文件的模块”。
作为另一方面,本发明还提供了一种计算机可读介质,该计算机可读介质可以是上述实施例中描述的设备中所包含的;也可以是单独存在,而未装配入该设备中。上述计算机可读介质承载有一个或者多个程序,当上述一个或者多个程序被一个该设备执行时,使得该设备包括:所述日志数据的处理***包括第一缓冲区、日志处理线程和第二缓冲区,所述方法包括:所述第一缓冲区接收一个或多个业务线程发送的日志数据;所述日志处理线程将所述第二缓冲区的日志数据写入日志文件;其中,所述第二缓冲区是由所述第一缓冲区切换而来的。
根据本发明实施例的技术方案,利用包括双缓冲机制的日志数据的处理***,实现日志数据的读写分离,能够避免业务线程之间互斥锁的竞争,缩减磁盘I/O次数,降低内存开销,提高日志的处理效率;同时,由于日志处理机制的简化,降低了代码复杂度,使得日志***的开发和维护成本大大减小。
上述具体实施方式,并不构成对本发明保护范围的限制。本领域技术人员应该明白的是,取决于设计要求和其他因素,可以发生各种各样的修改、组合、子组合和替代。任何在本发明的精神和原则之内所作的修改、等同替换和改进等,均应包含在本发明保护范围之内。
Claims (10)
1.一种日志数据的处理方法,其特征在于,所述方法由日志数据的处理***执行,所述日志数据的处理***包括第一缓冲区、日志处理线程和第二缓冲区,所述方法包括:
所述第一缓冲区接收一个或多个业务线程发送的日志数据;
所述日志处理线程将所述第二缓冲区的日志数据写入日志文件;其中,所述第二缓冲区是由所述第一缓冲区切换而来的。
2.根据权利要求1所述的方法,其特征在于,还包括:
所述日志处理线程判断所述第二缓冲区的数据量是否超过预设的写入阈值;
在所述日志处理线程确定所述第二缓冲区的数据量超过预设的写入阈值的情况下,判断最新的所述切换时间间隔是否为初始的切换时间间隔;
在最新的所述切换时间间隔不是初始的切换时间间隔的情况下,利用初始的切换时间间隔更新所述切换时间间隔。
3.根据权利要求2所述的方法,其特征在于,在所述日志处理线程确定所述第二缓冲区的数据量未超过预设的写入阈值的情况下,还包括:
所述日志处理线程判断监控时间间隔是否到达最新的切换时间间隔;
递增微写次数;
根据预设的时间间隔增量和所述微写次数,更新所述切换时间间隔。
4.根据权利要求2所述的方法,其特征在于,在所述日志处理线程将所述第二缓冲区的全部日志数据写入所述日志文件后、或者在所述监控时间间隔到达最新的切换时间间隔的情况下,还包括:
所述日志处理线程判断所述第二缓冲区是否包括临时缓冲区;
在所述第二缓冲区包括临时缓冲区的情况下,所述日志处理线程释放所述第二缓冲区中的临时缓冲区,并切换所述第二缓冲区和所述第一缓冲区;
或者,在所述第二缓冲区不包括临时缓冲区的情况下,所述日志处理线程直接切换所述第二缓冲区和所述第一缓冲区。
5.根据权利要求2所述的方法,其特征在于,还包括:
所述日志处理线程判断所述第一缓冲区的数据量是否超过所述第一缓冲区的缓冲区容量;
在所述第一缓冲区的数据量超过所述第一缓冲区的缓冲区容量的情况下,为所述第一缓冲区分配临时缓冲区,并将所述临时缓冲区链接于所述第一缓冲区之后。
6.根据权利要求5所述的方法,其特征在于,所述第一缓冲区包括基础缓冲区,或者,所述第一缓冲区包括基础缓冲区和一个或者多个临时缓冲区;所述判断所述第一缓冲区的数据量是否超过所述第一缓冲区的缓冲区容量,包括:
在所述第一缓冲区仅包括基础缓冲区的情况下,判断所述第一基础缓冲区的数据量是否超过预设的基础容量;或者,
在所述第一缓冲区包括基础缓冲区和临时缓冲区的情况下,判断最后一个所述临时缓冲区的数据量是否超过预设的临时容量。
7.根据权利要求6所述的方法,其特征在于,所述将所述临时缓冲区链接于所述第一缓冲区之后,包括:
在所述第一缓冲区仅包括基础缓冲区的情况下,将所述临时缓冲区链接于所述基础缓冲区之后;或者,
在所述第一缓冲区包括基础缓冲区和临时缓冲区的情况下,将所述临时缓冲区链接于最后一个所述临时缓冲区之后。
8.根据权利要求3所述的方法,其特征在于,所述根据预设的时间间隔增量和所述微写次数,更新所述切换时间间隔,包括:
在最新的所述切换时间间隔的基础上增加所述微写次数倍的时间间隔增量得到更新后的切换时间间隔。
9.一种日志数据的处理的电子设备,其特征在于,包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-8中任一所述的方法。
10.一种计算机可读介质,其上存储有计算机程序,其特征在于,所述程序被处理器执行时实现如权利要求1-8中任一所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310594858.4A CN116521639A (zh) | 2023-05-24 | 2023-05-24 | 一种日志数据的处理方法、电子设备和计算机可读介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310594858.4A CN116521639A (zh) | 2023-05-24 | 2023-05-24 | 一种日志数据的处理方法、电子设备和计算机可读介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116521639A true CN116521639A (zh) | 2023-08-01 |
Family
ID=87397661
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310594858.4A Pending CN116521639A (zh) | 2023-05-24 | 2023-05-24 | 一种日志数据的处理方法、电子设备和计算机可读介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116521639A (zh) |
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891647A (zh) * | 2024-03-18 | 2024-04-16 | 荣耀终端有限公司 | 日志处理方法、电子设备和计算机可读存储介质 |
-
2023
- 2023-05-24 CN CN202310594858.4A patent/CN116521639A/zh active Pending
Cited By (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117891647A (zh) * | 2024-03-18 | 2024-04-16 | 荣耀终端有限公司 | 日志处理方法、电子设备和计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
EP4033374A1 (en) | Method and device for synchronizing node data | |
CN109032796B (zh) | 一种数据处理方法和装置 | |
CN112199442B (zh) | 分布式批量下载文件方法、装置、计算机设备及存储介质 | |
CN113254445B (zh) | 实时数据存储方法、装置、计算机设备及存储介质 | |
CN110837423A (zh) | 一种自动导引运输车数据采集的方法和装置 | |
CN110851276A (zh) | 一种业务请求处理方法、装置、服务器和存储介质 | |
CN116521639A (zh) | 一种日志数据的处理方法、电子设备和计算机可读介质 | |
CN107357526B (zh) | 用于处理网络数据的方法和装置、服务器和存储介质 | |
CN113051055A (zh) | 一种任务处理方法和装置 | |
CN111124291A (zh) | 分布式存储***的数据存储处理方法、装置、电子设备 | |
CN115987965A (zh) | 一种文件上传方法、装置、设备及存储介质 | |
CN112818204B (zh) | 一种业务的处理方法、装置、设备及存储介质 | |
CN113076175B (zh) | 用于虚拟机的内存共享方法及装置 | |
US11386043B2 (en) | Method, device, and computer program product for managing snapshot in application environment | |
CN106484536B (zh) | 一种io调度方法、装置和设备 | |
CN112463514A (zh) | 分布式缓存集群的监测方法和装置 | |
CN112699116A (zh) | 一种数据处理方法和*** | |
CN112749204A (zh) | 一种读取数据的方法和装置 | |
CN113132480B (zh) | 一种数据传输方法、装置和*** | |
CN110262756B (zh) | 用于缓存数据的方法和装置 | |
CN111008074B (zh) | 一种文件处理方法、装置、设备和介质 | |
CN115794353B (zh) | 云网业务服务质量优化处理方法、装置、设备及存储介质 | |
CN111367875B (zh) | 一种话单文件处理方法、***、设备及介质 | |
CN112783716B (zh) | 一种监控方法和装置 | |
CN117421104A (zh) | 一种业务处理方法、装置、电子设备及计算机可读介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination |