CN116627333A - 日志缓存方法、装置、电子设备及计算机可读存储介质 - Google Patents
日志缓存方法、装置、电子设备及计算机可读存储介质 Download PDFInfo
- Publication number
- CN116627333A CN116627333A CN202310584075.8A CN202310584075A CN116627333A CN 116627333 A CN116627333 A CN 116627333A CN 202310584075 A CN202310584075 A CN 202310584075A CN 116627333 A CN116627333 A CN 116627333A
- Authority
- CN
- China
- Prior art keywords
- log data
- queue
- message middleware
- disk
- original
- 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
- 238000000034 method Methods 0.000 title claims abstract description 59
- 230000000903 blocking effect Effects 0.000 claims abstract description 33
- 238000012545 processing Methods 0.000 claims abstract description 29
- 238000004590 computer program Methods 0.000 claims description 17
- 239000000872 buffer Substances 0.000 claims description 10
- 238000012544 monitoring process Methods 0.000 claims description 4
- 230000008569 process Effects 0.000 description 11
- 230000003139 buffering effect Effects 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 238000010586 diagram Methods 0.000 description 4
- 230000006870 function Effects 0.000 description 4
- 239000000243 solution Substances 0.000 description 4
- 238000009825 accumulation Methods 0.000 description 3
- 238000007405 data analysis Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000005192 partition Methods 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 230000009471 action Effects 0.000 description 1
- 239000007853 buffer solution Substances 0.000 description 1
- 238000013480 data collection Methods 0.000 description 1
- 230000007423 decrease Effects 0.000 description 1
- 230000003247 decreasing effect Effects 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000001914 filtration Methods 0.000 description 1
- 230000007246 mechanism Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000006855 networking Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000013307 optical fiber Substances 0.000 description 1
- 239000007858 starting material Substances 0.000 description 1
- 238000006467 substitution reaction Methods 0.000 description 1
- 238000012546 transfer Methods 0.000 description 1
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/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/0602—Interfaces specially adapted for storage systems specifically adapted to achieve a particular effect
- G06F3/0614—Improving the reliability of storage systems
- G06F3/0619—Improving the reliability of storage systems in relation to data integrity, e.g. data losses, bit errors
-
- 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
-
- 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
-
- 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/547—Messaging middleware
-
- 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
-
- 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
Abstract
本申请涉及数据处理技术领域,提供了一种日志缓存方法、装置、电子设备及计算机可读存储介质。该方法包括:接收原始日志数据;将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将队列日志数据写入磁盘;获取环形队列的剩余容量值;当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;控制消息中间件将消息中间件日志数据写入环形队列,作为队列日志数据,或,控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘。本申请提供的日志缓存方法,保证日志数据高性能的同时尽最大可能保证日志数据不丢失,同时能够大幅度提升日志数据写入磁盘的能力。
Description
技术领域
本申请涉及数据处理技术领域,尤其涉及一种日志缓存方法、装置、电子设备及计算机可读存储介质。
背景技术
现有技术中,访问系统的流量增加,导致系统产生的业务日志量增加。系统日志用于做数据分析、帮助技术人员排查问题,故需要保证系统日志尽量不丢失,并提升日志写入磁盘的效率。通常,使用log4j2框架将系统日志写入磁盘,在log4j2的框架下,通过异步的方式,将系统日志写入高性能的环形队列,再通过环形队列将系统日志写入磁盘。
然而,高性能的环形队列缓存能力有限,无法缓存超过环形队列上限的系统日志,从而导致在环形队列缓存已满的情况下,产生处理系统日志的速度变慢,或丢弃系统日志的情况。
发明内容
有鉴于此,本申请实施例提供了一种日志缓存方法、装置、电子设备及计算机可读存储介质,以解决现有技术中处理日志数据较慢的问题。
本申请实施例的第一方面,提供了一种日志缓存方法,包括:
接收原始日志数据;
将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将队列日志数据写入磁盘;
获取环形队列的剩余容量值;
当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;
控制消息中间件将消息中间件日志数据写入环形队列,作为队列日志数据,或,控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘。
本申请实施例的第二方面,提供了一种日志缓存装置,包括:
接收模块,被配置为接收原始日志数据;
缓存模块,被配置为将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将队列日志数据写入磁盘;
确定模块,被配置为获取环形队列的剩余容量值;
处理模块,被配置称为当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;
写入模块,被配置为控制消息中间件将消息中间件日志数据写入环形队列,作为队列日志数据,或,控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘。
本申请实施例的第三方面,提供了一种电子设备,包括存储器、处理器以及存储在存储器中并且可在处理器上运行的计算机程序,该处理器执行计算机程序时实现上述方法的步骤。
本申请实施例的第四方面,提供了一种计算机可读存储介质,该计算机可读存储介质存储有计算机程序,该计算机程序被处理器执行时实现上述方法的步骤。
本申请实施例与现有技术相比存在的有益效果是:接收原始日志数据,将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将队列日志数据写入磁盘。获取环形队列的剩余容量值,剩余容量值分为存在不为零及零。当剩余容量值为零时,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据。控制消息中间件将消息中间件日志数据写入环形队列,作为队列日志数据,灵活支持消息中间件将原始日志数据进行缓存,再将消息中间件日志数据写入环形队列中,从而通过环形队列将所有原始日志数据写入磁盘,保证日志数据高性能的同时尽最大可能保证日志数据不丢失。或者,控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘,同时将队列日志数据写入磁盘,能够通过不同于消费者队列的新队列将原始日志数据写入磁盘,也保留了通过消费者队列将原始日志数据写入磁盘的方式,能够大幅度提升日志数据写入磁盘的能力。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例的一种应用场景的场景示意图;
图2是本申请实施例提供的一种日志缓存方法的流程示意图;
图3是本申请实施例提供的另一种日志缓存方法的流程示意图;
图4是本申请实施例提供的又一种日志缓存方法的流程示意图;
图5是本申请实施例提供的一种处理日志数据的流程示意图;
图6是本申请实施例提供的一种日志缓存装置的示意图;
图7是本申请实施例提供的电子设备的示意图。
具体实施方式
以下描述中,为了说明而不是为了限定,提出了诸如特定系统结构、技术之类的具体细节,以便透彻理解本申请实施例。然而,本领域的技术人员应当清楚,在没有这些具体细节的其它实施例中也可以实现本申请。在其它情况中,省略对众所周知的系统、装置、电路以及方法的详细说明,以免不必要的细节妨碍本申请的描述。
下面将结合附图详细说明根据本申请实施例的一种日志缓存方法和装置。
图1是本申请实施例的一种应用场景的场景示意图。该应用场景可以包括第一终端设备101、第二终端设备102和第三终端设备103、服务器104以及网络105。
第一终端设备101、第二终端设备102和第三终端设备103可以是硬件,也可以是软件。当第一终端设备101、第二终端设备102和第三终端设备103为硬件时,其可以是具有显示屏且支持与服务器104通信的各种电子设备,包括但不限于智能手机、平板电脑、膝上型便携计算机和台式计算机等;当第一终端设备101、第二终端设备102和第三终端设备103为软件时,其可以安装在如上所述的电子设备中。第一终端设备101、第二终端设备102和第三终端设备103可以实现为多个软件或软件模块,也可以实现为单个软件或软件模块,本申请实施例对此不作限制。进一步地,第一终端设备101、第二终端设备102和第三终端设备103上可以安装有各种应用,例如数据处理应用、即时通信工具、社交平台软件、搜索类应用、购物类应用等。
服务器104可以是提供各种服务的服务器,例如,对与其建立通信连接的终端设备发送的请求进行接收的后台服务器,该后台服务器可以对终端设备发送的请求进行接收和分析等处理,并生成处理结果。服务器104可以是一台服务器,也可以是由若干台服务器组成的服务器集群,或者还可以是一个云计算服务中心,本申请实施例对此不作限制。
需要说明的是,服务器104可以是硬件,也可以是软件。当服务器104为硬件时,其可以是为第一终端设备101、第二终端设备102和第三终端设备103提供各种服务的各种电子设备。当服务器104为软件时,其可以是为第一终端设备101、第二终端设备102和第三终端设备103提供各种服务的多个软件或软件模块,也可以是为第一终端设备101、第二终端设备102和第三终端设备103提供各种服务的单个软件或软件模块,本申请实施例对此不作限制。
网络105可以是采用同轴电缆、双绞线和光纤连接的有线网络,也可以是无需布线就能实现各种通信设备互联的无线网络,例如,蓝牙(Bluetooth)、近场通信(Near FieldCommunication,NFC)、红外(Infrared)等,本申请实施例对此不作限制。
需要说明的是,第一终端设备101、第二终端设备102和第三终端设备103、服务器104以及网络105的具体类型、数量和组合可以根据应用场景的实际需求进行调整,本申请实施例对此不作限制。
本申请下文中以环形队列为分裂者disruptor高性能环形队列为例,进行示例性的解释说明。其中,disruptor高性能环形队列为线程间的高性能消息框架。
本申请实施例基于TSP云平台(Telematics Service Provider)执行,TSP云平台是一种车联网平台,用于提供呼叫中心、导航定位、影音娱乐、车辆监控、远程升级、信息安全等诸多功能。TSP云平台中包括log4j2组件、filebeat组件、Kafka组件、logStash组件及elasticsearch组件,以实现日志数据采集、过滤、格式调整,最终存储至elasticsearch组件。
其中,TSP云平台中,log4j2组件是基于Java语言的开源日志框架;
filebeat组件是用于转发和集中日志数据的轻量级传送工具,filebeat监视指定的日志文件或位置,收集日志事件,并将日志数据转发到elasticsearch或logstash进行索引;
kafka组件是一种高吞吐量的分布式发布订阅消息系统,用于处理消费者线程在网站中的所有动作流数据;
logstash组件是具有实时流水线能力的开源的数据收集引擎,logstash可以动态统一不同来源的数据,并将数据标准化到预设目标输出;
elasticsearch组件是一个分布式、高扩展、高实时的搜索与数据分析引擎。
图2是本申请实施例提供的一种日志缓存方法的流程示意图。如图2所示,该日志缓存方法包括以下步骤:
S201,接收原始日志数据;
S202,将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将队列日志数据写入磁盘;
S203,获取环形队列的剩余容量值;
S204,当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;
S205,控制消息中间件将消息中间件日志数据写入环形队列,作为队列日志数据,或,控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘。
图2的日志缓存方法可以由图1的服务器执行,原始日志数据通过终端设备传递至服务器。
本申请一示例性实施例中,通过生产者线程接收原始日志数据,并将原始日志数据写入环形队列,得到队列日志数据,消费者线程异步从环形队列中获取原始日志数据,通过数据流的方式,将原始日志数据写入磁盘,以达到对原始日志数据存储的目的。
其中,由于生产者线程通常是由多个线程组成,产生原始日志数据的速度较快,而受到系统吞吐量等因素的限制,消费者线程从环形队列中将原始数据日志写入磁盘的速度相对于将原始日志数据写入环形队列的速度较慢。在原始日志数据高并发的情况下,原始日志数据容易阻塞在生产者线程无法写入环形队列,从而导致处理原始日志数据的速度变慢。
由此,现有技术中,引入消息中间件kafka组件,在TSP云平台中,生产者线程获取的原始日志数据能够直接作为kafka组件的输入,一种方式中,若kafka组件采用同步的方式将输入至kafka组件的原始日志数据写入磁盘,则会影响通过环形队列将原始日志数据写入磁盘的主流程执行,从而导致处理原始日志数据的速度变慢。另一种方式中,kafka组件采用异步的方式将输入至kafka组件的原始日志数据写入磁盘,能够保证处理原始日志数据的速度,但当kafka组件产生波动或者集群宕机时,原始日志数据会大量丢失,导致写入磁盘的日志数据不可控,且很难被相关技术人员察觉到。
本申请一示例性实施例中,获取环形队列的剩余容量值,其中,环形队列的剩余容量值包括剩余容量值不为零及剩余容量值为零的情况。在环形队列的剩余容量值为零时,即当前生产者线程无法将原始日志数据写入环形队列进行缓存时,将原始日志数据发送至kafka组件进行缓存,缓存在kafka组件的日志数据作为消息中间件日志数据。
接述上例,控制kafka组件将消息中间件日志数据写入环形队列,与通过生产者线程写入环形队列的原始日志数据一同作为队列日志数据,并将队列日志数据写入磁盘。
其中,环形队列中有多个内存空间,通过指针能够指示日志数据写入环形队列进行缓存的地址。消息中间件日志数据写入环形队列与通过生产者线程写入环形队列是并行的,可以通过设置消息中间件日志数据写入环形队列的指针所指示的缓存地址与生产者线程对应的指针所指示的缓存地址不同实现。
本申请另一示例性实施例中,在创建生产者线程时,同时创建一个阻塞队列,将消息中间件日志数据写入阻塞队列,通过阻塞队列将消息中间件日志数据写入磁盘,同时保持将原始日志数据通过环形队列写入磁盘。
通过本申请提供的日志缓存方法,在一种方式中,能够通过消息中间件缓存原始日志数据,再将该日志数据写入环形队列,最终写入磁盘,最大程度上保证了原始日志数据不丢失。在另一种方式中,原始日志数据能够通过环形队列及阻塞队列同时写入磁盘,新增了一个用于处理原始日志数据的队列,从而提升了写入磁盘的速度,提升了处理原始日志数据的效率,也能够提高用户请求并发量。
在一些实施例中,控制消息中间件将消息中间件日志数据写入环形队列,包括:
若当前剩余容量值不为零,控制消息中间件将消息中间件日志数据写入环形队列。
本申请一示例性实施例中,环形队列会持续将队列系统日志写入磁盘,从而使得环形队列的剩余容量值发生更新,使得剩余容量值为零变成不为零,在监测到环形队列的剩余容量值不为零时,将消息中间件日志数据写入环形队列,写入磁盘。
通过本申请提供的日志缓存方法,能够根据环形队列的剩余容量值,将消息中间件作为原始日志数据的缓存中转处,当剩余容量值不为零时,通过消息中间件将消息中间件日志数据写入环形队列,以承载更多原始日志数据,并尽最大可能保证原始日志数据不丢失。
在一些实施例中,当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据,包括:
若当前剩余容量值为零,控制重载线程按照第一时间间隔获取原始日志数据;
将获取的原始日志数据存入消息中间件,作为消息中间件日志数据。
本申请一示例性实施例中,log4j2组件启动kafka组件,同时启动重载线程,作为现有消费者线程之外的消费者线程,在当前剩余容量值为零时,控制重载线程按照第一时间间隔获取原始日志数据。若当前已存在消息中间件日志数据,控制重载线程按照第一时间间隔获取原始日志数据的同时,将消息中间件日志数据传写入环形队列,直至将消息中间件日志数据全部写入环形队列。
其中,可以设置默认第一时间间隔为100ms(毫秒),并且第一时间间隔可以由相关技术人员在100ms的基础上进行自由调整。设置默认第一时间间隔为100ms的原因为:在100ms的情况下,处理原始日志数据的延迟性相对较低,且不会耗费中央处理器CPU(Central Processing Unit)资源,若设置的第一时间间隔较短,则会导致CPU资源消耗过高。
图3是本申请实施例提供的另一种日志缓存方法的流程示意图,上文实施例中的日志缓存方法可以由图3所示,图3所示的日志缓存方法可以应用在短时间内生成原始日志数据量大,即短时间的流量高峰的场景下,例如,流量高峰在早晨、中午、晚上中的某一时间段,等待该时间段过后流量会逐步下降的场景。
若剩余容量值持续为零,即环形队列持续无容量剩余情况时,则表示原始日志数据难以写入磁盘,相关技术人员需要对图3所示的日志缓存方法容忍一定时间的延迟,比如一小时延迟、两小时延迟等。相关技术人员也可采用如图4所示的日志缓存方法将原始日志数据写入磁盘进行存储。
图4是本申请实施例提供的又一种日志缓存方法的流程示意图。如图4所示,通过生产者线程将原始日志数据写入环形队列,消费者线程通过环形队列异步将原始日志数据写入磁盘,当剩余容量值为零时,根据阻塞线程将写入消息中间件的消息中间件日志数据写入阻塞队列,再通过阻塞线程将阻塞队列中的消息中间件日志数据写入磁盘,同时将队列日志数据通过消费者线程写入磁盘。
其中,在控制kafka组件将消息中间件日志数据写入环形队列时,环形队列通过数据流的方式将队列日志数据写入磁盘,存储至同一个日志文件中,直至该日志文件已满,创建一个新的日志文件进行存储。
其中,通过消费者线程写入磁盘形成的目录及日志文件与通过阻塞线程写入磁盘形成的目录及日志文件为不同的目录及日志文件。
本申请一示例性实施例中,以阻塞队列为BlockQueen队列为例,进行示例性说明,若当前剩余容量值为零,log4j2组件通过springBoot(一种Java平台上的一种开源应用框架)的启动starter机制引入kafka组件,将原始日志数据阻塞线程及kafka组件预设配置信息,将原始日志数据写入kafka组件中,作为消息中间件日志数据,并在在内存中创建一个新的BlockQueen队列,通过阻塞线程将BlockQueen队列中消息中间件日志数据写入磁盘,同时保持通过消费者线程将队列日志写入磁盘。
其中,BlockQueen队列为一个支持两个附加操作的队列,即JDK(JavaDevelopment Kit)原生队列的一种形式。kafka组件预设配置信息包括定义主题topic、分区数、分区策略、同步、同步发送、异步批量发送、批量发送大小等。将消息中间件日志数据及队列日志数据写入磁盘时,以数据流的方式写入。
图4所示的日志缓存方法可以应用在原始日志数据写入量大的场景中,即流量高峰持续时间久的场景中。
通过本申请实施例提供的日志缓存方法,实现两个线程同时将原始日志数据写入磁盘进行存储,能够提升处理原始日志数据的效率,从而提高用户请求并发量。
在一些实施例中,将原始日志数据写入环形队列进行缓存的过程、将原始日志数据发送至消息中间件进行缓存的过程、控制消息中间件将消息中间件日志数据写入环形队列或控制消息中间件将消息中间件日志数据写入阻塞队列的过程为异步执行。
通过本申请实施例提供的日志缓存方法,异步执行上述操作,能够最大限度保证主流程处理原始日志数据的速度,且保证原始日志数据不易丢失,有利于相关技术人员根据存储的日志数据排查问题、做数据分析等处理操作。
图5是本申请实施例提供的一种处理日志数据的流程示意图。如图5所示,fileBeat组件收集所有日志数据,分线程将采集到的所有日志数据写入磁盘日志文件,不同的线程对应不同的日志文件,由不同的日志文件组成日志文件目录,日志文件目录以环形队列的形式存储日志文件。其中,日志文件目录可以是多个。fileBeat组件收集所有日志数据之后,将收集到的日志数据发送至logstash组件进行处理,处理完成后发送至elasticsearch进行系统层级的存储。
在一些实施例中,还包括:
监测报警信息,报警信息为剩余容量值为零时接收到原始日志数据后生成的反馈信息;
基于第二时间间隔,统计当前第二时间间隔内产生报警信息的次数;
将第二时间间隔内统计的次数存入数据库。
log4j2组件通过生产者线程将原始日志数据写入disruptor高性能环形队列时,log4j2会调用disruptor的RingBuffer#tryPublishEvent方法,若剩余容量值为零,则此方法会生成反馈信息,将该反馈信息作为报警信息的内容。在log4j2接收到反馈信息后,通过接口回调的形式将结果返回至系统,系统接收后,根据第二时间间隔,统计当前第二时间间隔内产生报警信息的次数,并将第二时间间隔内统计的次数存入数据库,或者调用预设接口通过三方消息中间件通知相关技术人员。相关技术人员可通过数据库中的统计记录或三方消息中间件的方式判断原始日志数据的阻塞情况。
同时,相关技术人员还能够通过kafka组件提供的API(Application ProgrammingInterface,应用程序编程接口)查询对应定义主题下面的原始日志数据堆积数量,可以根据自定义时间间隔统计堆积数量,并将自定义时间间隔内统计的堆积数量存入数据库,以便相关技术人员查看原始日志数据的阻塞情况。
通过本申请实施例提供的日志缓存方法,当剩余容量值为零时,能够通过三方消息中间件传递原始日志数据的阻塞情况,并将原始日志数据的阻塞情况缓存至数据库中,增加了灵活性,能够兼容更多业务场景。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
图6是本申请实施例提供的一种日志缓存装置的示意图。如图6所示,该日志缓存装置包括:接收模块601,缓存模块602,确定模块603,处理模块604和写入模块605。
接收模块601,被配置为接收原始日志数据;
缓存模块602,被配置为将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将队列日志数据写入磁盘;
确定模块603,被配置为获取环形队列的剩余容量值;
处理模块604,被配置称为当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;
写入模块605,被配置为控制消息中间件将消息中间件日志数据写入环形队列,作为队列日志数据,或,控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘。
在一些实施例中,写入模块605被配置为控制消息中间件将消息中间件日志数据写入环形队列,用于:
若当前剩余容量值不为零,控制消息中间件将消息中间件日志数据写入环形队列。
在一些实施例中,写入模块605被配置为当剩余容量值为零,将原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据,用于:
若当前剩余容量值为零,控制重载线程按照第一时间间隔获取原始日志数据;
将获取的原始日志数据存入消息中间件,作为消息中间件日志数据。
在一些实施例中,缓存模块602被配置为将队列日志数据写入磁盘,用于:
基于消费者线程,将队列日志数据写入磁盘。
在一些实施例中,写入模块605被配置为控制消息中间件将消息中间件日志数据通过阻塞队列写入磁盘,用于:
基于消费者线程及阻塞队列对应的阻塞线程,将队列日志数据及消息中间件日志数据写入磁盘。
在一些实施例中,将原始日志数据写入环形队列进行缓存的过程、将原始日志数据发送至消息中间件进行缓存的过程、控制消息中间件将消息中间件日志数据写入环形队列或控制消息中间件将消息中间件日志数据写入阻塞队列的过程为异步执行。
在一些实施例中,日志缓存装置还用于:
监测报警信息,报警信息为剩余容量值为零时接收到原始日志数据后生成的反馈信息;
基于第二时间间隔,统计当前第二时间间隔内产生报警信息的次数;
将第二时间间隔内统计的次数存入数据库。
应理解,上述实施例中各步骤的序号的大小并不意味着执行顺序的先后,各过程的执行顺序应以其功能和内在逻辑确定,而不应对本申请实施例的实施过程构成任何限定。
图7是本申请实施例提供的电子设备7的示意图。如图7所示,该实施例的电子设备7包括:处理器701、存储器702以及存储在该存储器702中并且可在处理器701上运行的计算机程序703。处理器701执行计算机程序703时实现上述各个方法实施例中的步骤。或者,处理器701执行计算机程序703时实现上述各装置实施例中各模块/单元的功能。
电子设备7可以是桌上型计算机、笔记本、掌上电脑及云端服务器等电子设备。电子设备7可以包括但不仅限于处理器701和存储器702。本领域技术人员可以理解,图7仅仅是电子设备7的示例,并不构成对电子设备7的限定,可以包括比图示更多或更少的部件,或者不同的部件。
处理器701可以是中央处理单元(Central Processing Unit,CPU),也可以是其它通用处理器、数字信号处理器(Digital Signal Processor,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其它可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等。
存储器702可以是电子设备7的内部存储单元,例如,电子设备7的硬盘或内存。存储器702也可以是电子设备7的外部存储设备,例如,电子设备7上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(Secure Digital,SD)卡,闪存卡(Flash Card)等。存储器702还可以既包括电子设备7的内部存储单元也包括外部存储设备。存储器702用于存储计算机程序以及电子设备所需的其它程序和数据。
所属领域的技术人员可以清楚地了解到,为了描述的方便和简洁,仅以上述各功能单元、模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能单元、模块完成,即将装置的内部结构划分成不同的功能单元或模块,以完成以上描述的全部或者部分功能。实施例中的各功能单元、模块可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中,上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
集成的模块/单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读存储介质中。基于这样的理解,本申请实现上述实施例方法中的全部或部分流程,也可以通过计算机程序来指令相关的硬件来完成,计算机程序可以存储在计算机可读存储介质中,该计算机程序在被处理器执行时,可以实现上述各个方法实施例的步骤。计算机程序可以包括计算机程序代码,计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。计算机可读介质可以包括:能够携带计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、电载波信号、电信信号以及软件分发介质等。需要说明的是,计算机可读介质包含的内容可以根据司法管辖区内立法和专利实践的要求进行适当的增减,例如,在某些司法管辖区,根据立法和专利实践,计算机可读介质不包括电载波信号和电信信号。
以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围,均应包含在本申请的保护范围之内。
Claims (10)
1.一种日志缓存方法,其特征在于,应用于服务器,包括:
接收原始日志数据;
将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将所述队列日志数据写入磁盘;
获取所述环形队列的剩余容量值;
当所述剩余容量值为零,将所述原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;
控制所述消息中间件将所述消息中间件日志数据写入所述环形队列,作为所述队列日志数据,或,控制所述消息中间件将所述消息中间件日志数据通过阻塞队列写入所述磁盘。
2.根据权利要求1所述的方法,其特征在于,控制所述消息中间件将所述消息中间件日志数据写入所述环形队列,包括:
若当前所述剩余容量值不为零,控制所述消息中间件将所述消息中间件日志数据写入所述环形队列。
3.根据权利要求2所述的方法,其特征在于,当所述剩余容量值为零,将所述原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据,包括:
若当前所述剩余容量值为零,控制重载线程按照第一时间间隔获取所述原始日志数据;
将获取的所述原始日志数据存入所述消息中间件,作为所述消息中间件日志数据。
4.根据权利要求1所述的方法,其特征在于,将所述队列日志数据写入磁盘,包括:
基于消费者线程,将所述队列日志数据写入所述磁盘。
5.根据权利要求1所述的方法,其特征在于,控制所述消息中间件将所述消息中间件日志数据通过阻塞队列写入所述磁盘,包括:
基于消费者线程及所述阻塞队列对应的阻塞线程,将所述队列日志数据及所述消息中间件日志数据写入磁盘。
6.根据权利要求1所述的方法,其特征在于,将原始日志数据写入环形队列进行缓存的过程、将所述原始日志数据发送至消息中间件进行缓存的过程、控制所述消息中间件将所述消息中间件日志数据写入所述环形队列或控制所述消息中间件将所述消息中间件日志数据写入阻塞队列的过程为异步执行。
7.根据权利要求1至6中任一项所述的方法,其特征在于,还包括:
监测报警信息,所述报警信息为所述剩余容量值为零时接收到所述原始日志数据后生成的反馈信息;
基于第二时间间隔,统计当前所述第二时间间隔内产生所述报警信息的次数;
将所述第二时间间隔内统计的次数存入数据库。
8.一种日志缓存装置,其特征在于,包括:
接收模块,被配置为接收原始日志数据;
缓存模块,被配置为将原始日志数据写入环形队列进行缓存,得到队列日志数据,并将所述队列日志数据写入磁盘;
确定模块,被配置为获取所述环形队列的剩余容量值;
处理模块,被配置称为当所述剩余容量值为零,将所述原始日志数据发送至消息中间件进行缓存,得到消息中间件日志数据;
写入模块,被配置为控制所述消息中间件将所述消息中间件日志数据写入所述环形队列,作为所述队列日志数据,或,控制所述消息中间件将所述消息中间件日志数据通过阻塞队列写入所述磁盘。
9.一种电子设备,包括存储器、处理器以及存储在所述存储器中并且可在所述处理器上运行的计算机程序,其特征在于,所述处理器执行所述计算机程序时实现如权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,所述计算机可读存储介质存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现如权利要求1至7中任一项所述方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310584075.8A CN116627333A (zh) | 2023-05-23 | 2023-05-23 | 日志缓存方法、装置、电子设备及计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310584075.8A CN116627333A (zh) | 2023-05-23 | 2023-05-23 | 日志缓存方法、装置、电子设备及计算机可读存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN116627333A true CN116627333A (zh) | 2023-08-22 |
Family
ID=87602006
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310584075.8A Pending CN116627333A (zh) | 2023-05-23 | 2023-05-23 | 日志缓存方法、装置、电子设备及计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116627333A (zh) |
Cited By (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117295118A (zh) * | 2023-10-08 | 2023-12-26 | 广州市玄武无线科技股份有限公司 | 一种稳定性强且短信数据缓冲及流量控制的方法 |
CN117478535A (zh) * | 2023-12-26 | 2024-01-30 | 北京天空卫士网络安全技术有限公司 | 一种日志存储的方法和装置 |
-
2023
- 2023-05-23 CN CN202310584075.8A patent/CN116627333A/zh active Pending
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN117295118A (zh) * | 2023-10-08 | 2023-12-26 | 广州市玄武无线科技股份有限公司 | 一种稳定性强且短信数据缓冲及流量控制的方法 |
CN117478535A (zh) * | 2023-12-26 | 2024-01-30 | 北京天空卫士网络安全技术有限公司 | 一种日志存储的方法和装置 |
CN117478535B (zh) * | 2023-12-26 | 2024-04-19 | 北京天空卫士网络安全技术有限公司 | 一种日志存储的方法和装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US11146502B2 (en) | Method and apparatus for allocating resource | |
WO2021180025A1 (zh) | 一种消息处理方法、装置、电子设备及介质 | |
CN116627333A (zh) | 日志缓存方法、装置、电子设备及计算机可读存储介质 | |
CN111679990A (zh) | 测试数据生成方法、装置、可读介质及电子设备 | |
CN111198859A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN113485962A (zh) | 日志文件的存储方法、装置、设备和存储介质 | |
CN110636367A (zh) | 一种视频加载方法、装置、终端设备及介质 | |
CN111163336B (zh) | 视频资源推送方法、装置、电子设备及计算机可读介质 | |
CN114584480A (zh) | 用于服务降级处理的方法和装置 | |
CN114116247A (zh) | 基于Redis的消息处理方法、装置、系统、服务器和介质 | |
WO2023142824A1 (zh) | Gpu资源利用率的监控方法、装置、计算机设备及介质 | |
CN113127225A (zh) | 一种数据处理任务的调度方法、装置和系统 | |
CN111198853A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN112015746B (zh) | 数据实时处理方法、装置、介质和电子设备 | |
CN112910855B (zh) | 一种样例报文处理方法及装置 | |
US11277300B2 (en) | Method and apparatus for outputting information | |
CN114374657A (zh) | 一种数据处理方法和装置 | |
CN113761433A (zh) | 业务处理方法和装置 | |
CN112163176A (zh) | 数据存储方法、装置、电子设备和计算机可读介质 | |
CN112115154A (zh) | 数据处理和数据查询方法、装置、设备和计算机可读介质 | |
CN110727694A (zh) | 数据处理方法、装置、电子设备及存储介质 | |
CN111274104A (zh) | 数据处理方法、装置、电子设备及计算机可读存储介质 | |
CN110099122B (zh) | 用于发送网络请求的方法和装置 | |
US11496602B2 (en) | Fence computing | |
CN117880052A (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 | ||
TA01 | Transfer of patent application right |
Effective date of registration: 20240117 Address after: No. 13 Xingxiang Road, Zengjia Town, High tech Zone, Shapingba District, Chongqing, 400039 Applicant after: Chongqing Selis Phoenix Intelligent Innovation Technology Co.,Ltd. Address before: 610095 No. 2901, floor 29, unit 1, building 1, No. 151, Tianfu Second Street, high tech Zone, China (Sichuan) pilot Free Trade Zone, Chengdu, Sichuan Province Applicant before: Chengdu Thalys Technology Co.,Ltd. |
|
TA01 | Transfer of patent application right |