CN112486913B - 一种基于集群环境下的日志异步存储方法和设备 - Google Patents
一种基于集群环境下的日志异步存储方法和设备 Download PDFInfo
- Publication number
- CN112486913B CN112486913B CN202011261846.2A CN202011261846A CN112486913B CN 112486913 B CN112486913 B CN 112486913B CN 202011261846 A CN202011261846 A CN 202011261846A CN 112486913 B CN112486913 B CN 112486913B
- Authority
- CN
- China
- Prior art keywords
- log
- file
- data
- queue
- read
- 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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/13—File access structures, e.g. distributed indices
-
- 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/16—File or folder operations, e.g. details of user interfaces specifically adapted to 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/1727—Details of free space management performed by the file system
-
- 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
-
- 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)
- Data Mining & Analysis (AREA)
- Databases & Information Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Human Computer Interaction (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
- Debugging And Monitoring (AREA)
Abstract
本发明的实施例提供了一种基于集群环境下的日志异步存储方法和设备。所述方法包括响应于访问请求,生成日志对象,进行序列化,得到二进制的日志数据;将二进制的日志数据映射到内存地址中,写入文件队列;响应于启动指令,启动第一线程,读取索引文件,根据优先级依次为文件队列分配第二线程,从内存中顺序读取文件队列中的日志数据;当读取到的日志数据达到日志存库服务触发条件时,触发日志存库服务,将所述读取到的日志数据存入数据库。以此方式,可以通过文件队列对日志数据进行异步存储,批量入库,缓解系统访问日志存储压力,提高系统响应速度和吞吐量,在应用或系统重启时不会造成日志丢失,保证访问日志的完整性。
Description
技术领域
本发明的实施例一般涉及计算机数据存储领域,并且更具体地,涉及一种基于集群环境下的日志异步存储方法和设备。
背景技术
用户的访问会生成服务调用日志,服务调用日志需要存入数据库中。目前服务调用日志是以同步的方式直接存入数据库,存储到缓存后异步存入数据库;存成文本文件方式采用第三方采集工具采集入库。而在集群环境下,大量用户访问、高并发请求的情况下数据库的性能已经是瓶颈,由于来不及同步处理日志信息,请求往往会发生堵塞,比如大量的insert的日志存储请求同时到达数据库,直接导致无数的行锁表锁,甚至最后请求会堆积过多,数据库或应用崩溃。
存储到缓存后异步存入数据库,在应用或缓存服务器重新启动后将丢失已缓存尚未入数据库的服务调用日志,缓存访问日志都进行存储则没有发挥缓存的效果性能受到影响。且不能通过进程间添加一层实现解耦,阻碍业务系统今后的扩展,降低系统响应速度和吞吐量。同时,服务调用的请求内容和返回内容包含音频、图像、文件等二进制数据,而第三方采集工具只能采集文本型日志,将二进制内容转码成文本将影响服务处理性能。
发明内容
根据本发明的实施例,提供了一种日志异步存储方案。
在本发明的第一方面,提供了一种日志异步存储方法。该方法包括:
响应于访问请求,生成日志对象,并将所述日志对象进行序列化,得到二进制的日志数据;
将所述二进制的日志数据映射到内存地址中,写入文件队列;所述文件队列包括多个有序的数据文件和一个索引文件;所述数据文件用于进行日志数据的读和写;所述索引文件用于记录当前读和写的数据文件编号、偏移量以及文件队列的优先级;
响应于第一应用程序的启动指令,启动第一线程,所述第一线程用于读取所述索引文件,根据索引文件中的优先级依次为文件队列分配第二线程,并启动第二线程;所述第二线程用于当所述文件队列中的数据文件不为空时,获取最近一次读取的偏移量,从内存中顺序读取所述文件队列中的日志数据;
当读取到的日志数据达到日志存库服务触发条件时,触发日志存库服务,将所述读取到的日志数据存入数据库。
进一步地,所述日志对象包括服务信息、授权信息、调用者信息、调用信息和返回内容。
进一步地,为每个数据文件分配存储空间,所述存储空间内包括多个有序的数据存储单元,且相邻顺序的两个数据文件,后一个数据文件的首位存储单元与前一个数据文件的末位存储单元对应关联。
进一步地,当向所述数据文件中写入日志数据时,向所述数据文件的数据存储单元中依次写入日志数据,当所述数据文件的末位存储单元达到最大存储空间时,根据数据文件之间的关联关系,切换到下一个数据文件的首位存储单元继续存储;
当从所述数据文件中读取日志数据时,从所述数据文件中的数据单元中依次读取日志数据,当完成所述数据文件中末位存储单元的读取后,根据数据文件之间的关联关系,切换到下一个数据文件的首位存储单元继续读取。
进一步地,所述文件队列采用MappedByteBuffer对日志文件进行读写操作。
进一步地,所述文件队列将写入的日志文件采用二进制存储,存储结构为起始符+消息内容+结束符。
进一步地,所述日志存库服务触发条件包括:
读取到的日志数据达到预设日志数据值,和/或
当前文件队列由非空状态变成空置状态。
进一步地,还包括:
队列备份线程,用于扫描文件队列的日志存储状态,如果当前扫描的文件队列与上一次扫描的日志存储状态不同,则将发送变更的日志文件同步到备份服务器。
进一步地,在一次日志存库服务后,更新文件队列中索引文件的偏移量。
在本发明的第二方面,提供了一种电子设备。该电子设备包括:存储器和处理器,所述存储器上存储有计算机程序,所述处理器执行所述程序时实现如以上所述的方法。
应当理解,发明内容部分中所描述的内容并非旨在限定本发明的实施例的关键或重要特征,亦非用于限制本发明的范围。本发明的其它特征将通过以下的描述变得容易理解。
本发明通过文件队列对日志数据进行异步存储,批量入库,缓解系统访问日志存储压力,提高系统响应速度和吞吐量,保证访问日志的完整性;采用的嵌入式文件队列使用MappedByteBuffer内存文件映射技术极大提升了队列的性能,且在应用或系统重启时不会造成日志丢失,保证调用访问有据可查。
附图说明
结合附图并参考以下详细说明,本发明各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标记表示相同或相似的元素,其中:
图1示出了根据本发明的实施例的日志异步存储方法的流程图;
图2示出了根据本发明的实施例的文件队列的结构示意图;
图3示出了能够实施本发明的实施例的示例性电子设备的方框图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的全部其他实施例,都属于本发明保护的范围。
另外,本文中术语“和/或”,仅仅是一种描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。另外,本文中字符“/”,一般表示前后关联对象是一种“或”的关系。
本发明中,通过文件队列对日志数据进行异步存储,批量入库,缓解系统访问日志存储压力,提高系统响应速度和吞吐量,保证访问日志的完整性;采用的嵌入式文件队列使用MappedByteBuffer内存文件映射技术极大提升了队列的性能,且在应用或系统重启时不会造成日志丢失,保证调用访问有据可查。
图1示出了本发明实施例的日志异步存储方法的流程图。
该方法S101包括:
S101、响应于访问请求,生成日志对象,并将所述日志对象进行序列化,得到二进制的日志数据;
日志对象通过访问请求信息中的授权信息在应用后台获取服务信息、授权信息和调用者信息,在访问完成后根据服务信息、授权信息、调用者信息和返回内容,生成日志对象。所述日志对象包括服务信息、授权信息、调用者信息、调用信息和返回内容。
访问信息包括:服务访问开始时间、服务访问结束时间、调用结果、创建时间、请求内容、返回内容、异常信息、授权信息等。
调用者信息包括:调用者名称、调用者系统名称、调用者IP等。
服务基本信息包括:服务系统所属的系统,服务的版本,服务类型(Webservice、Rest),调用的方法名等。
调用信息,即调用详情包括:请求头、请求内容(二进制)、响应头、响应内容(二进制)。
作为本发明的一种实施例,例如一种所述日志对象,包括:
将所述日志对象进行序列化,是将日志对象序列化成二进制数据。
S102、将所述二进制的日志数据映射到内存地址中,写入文件队列;所述文件队列包括多个有序的数据文件和一个索引文件;所述数据文件用于进行日志数据的读和写;所述索引文件用于记录当前读和写的数据文件编号、偏移量以及数据文件的优先级。
日志存储是通过文件型队列来存储的,文件队列服务嵌入到每个应用程序,本地化文件队列存储效率极高,单台服务器每秒的性能接近20万qps,又能避免宕机、重启等原因引起的日志丢失问题。完全能支撑服务产生的调用日志实时推入队列。
所述索引文件(IndexFile)包括5个标识,分别是:读文件编号(Read FileNo.)、写文件编号(Write FileNo.)、读偏移量(Read offset)、写偏移量(Write offset)和优先级(Priority Level)。所述读文件编号(Read FileNo.)记录读取日志数据的数据文件编号;所述写文件编号(Write FileNo.)记录写入日志数据的数据文件编号;所述读偏移量(Readoffset)记录读取日志数据的位置以及偏移量;所述写偏移量(Read offset)记录写入日志数据的位置以及偏移量;所述优先级(Priority Level)跟队列的消息积压情况相关,队列的消息积压情况越严重,队列的优先级就越高,反之越低。
如图2所示为本发明的实施例的文件队列的结构示意图。
每个文件队列包括多个数据文件和一个索引文件;所述数据文件用于进行日志数据的读和写;所述索引文件用于记录当前读和写的数据文件编号和偏移量以及文件队列的优先级。
进一步地,为每个数据文件分配存储空间,所述存储空间内包括多个有序的数据存储单元,且相邻顺序的两个数据文件,后一个数据文件的首位存储单元与前一个数据文件的末位存储单元对应关联。
作为本发明的一种实施例,如图2所示,所述文件队列包括3个数据文件和一个索引文件。为每个数据文件分配存储空间,例如每个数据文件的存储空间大小为50MB。相邻两个数据文件都有8个数据存储单元,为每个数据存储单元分配标识,从编号1开始递增到8,通过编号标识的先后顺序进行关联,例如前一个数据文件中的8个数据存储单元从1~8的顺序顺次关联。而在一个文件队列中的不同数据文件之间通过数据文件的数据存储单元进行关联,关联原则为:后一个数据文件的首位存储单元与前一个数据文件的末位存储单元对应关联。例如,文件队列中的前一个数据文件的第8个数据存储单元与后一个数据文件的第1个数据存储单元相互关联。
作为本发明的一种实施例,所述数据文件的文件名以.idb为后缀,所述索引文件的文件名以.db为后缀。
在高并发环境下,日志数据处理不及时请求往往发生堵塞,比如大量的insert的请求同时到达数据库,直接导致无数的行锁表锁,甚至最后请求会堆积过多,数据库或应用崩溃。
而作为本发明的一种实施例,所述文件队列采用MappedByteBuffer进行读写操作,利用了NIO中的FileChannel模型直接将磁盘上的物理文件直接映射到用户态的内存地址中,将对文件的操作转化为直接对内存地址进行操作,允许应用直接从内存中读取文件内容,通过将整个或部分数据文件映射到内存,由操作系统来处理加载请求和写入文件,应用只需要和内存打交道,读和写不需要同步与数据库建立映射关系,在日志数据进行写入和读取时,不直接写入数据库以及从数据库中读取,不提起数据库的行锁和表锁,这使得IO操作非常快,从而避免大量的insert的请求同时到达数据库时导致的请求堆积过多,致使数据库或应用崩溃的问题,缓解了系统的压力,极大地提高了文件的读写效率。
作为本发明的一种实施例,生产者生产日志数据,通过分布式的高速缓存系统(Memcached)写入文件队列,消费者通过分布式的高速缓存系统(Memcached)读取文件队列中的日志数据。
进一步地,当向所述数据文件中写入日志数据时,向所述数据文件的数据存储单元中依次写入日志数据,当所述数据文件的末位存储单元达到最大存储空间时,根据数据文件之间的关联关系,切换到下一个数据文件的首位存储单元继续存储。
在上述的一种实施例,当向所述数据文件中写入日志数据时,首先向文件队列中的第一数据文件中的编号为1的数据存储单元中进行写入,当编号为1的数据存储单元已经写满后顺次写入编号为2的数据存储单元,直至第一数据文件的编号为8的数据存储单元也被写满,则根据数据存储单元之间的关联关系,继续向第二数据文件的编号为1的数据存储单元进行写入。
进一步地,当从所述数据文件中读取日志数据时,从所述数据文件中的数据单元中依次读取日志数据,当完成所述数据文件中末位存储单元的读取后,根据数据文件之间的关联关系,切换到下一个数据文件的首位存储单元继续读取。
在上述的一种实施例,当从所述数据文件中读取日志数据时,按照文件队列中的数据文件编号以及数据存储单元的编号顺序进行顺次读取,例如从日志数据位置开始顺次读取,如果读取到当前数据文件的末位存储单元,仍未读取结束,则在读取完当前数据文件的末位存储单元后继续根据关联关系找到下一关联的数据文件中的编号为1的数据存储单元进行读取。
按编号顺序读取可以充分利用文件队列中的存储空间,并且在写入和读取日志数据的过程中,不会使日志数据丢失或混乱,保证访问日志的完整性。
作为本发明的一种实施例,所述文件队列将写入的日志文件采用二进制存储,同时队列文件支持各类的图片、音频和二进制消息,存储结构为起始符+消息内容+结束符。
S103、响应于第一应用程序的启动指令,启动第一线程,所述第一线程用于读取所述索引文件,根据索引文件中的优先级依次为文件队列分配第二线程,并启动第二线程;所述第二线程用于当所述文件队列中的数据文件不为空时,获取最近一次读取的偏移量,从内存中顺序读取所述文件队列中的日志数据。
当第一应用程序需要读取文件队列中的日志数据时,第一应用程序启动日志存储线程作为第一线程,所述第一线程在第一应用程序启动时自动启动。
所述第一线程启动后,首先读取每个文件队列中的索引文件,识别出所述索引文件中的优先级,通过优先级能够解析出当前队列的消息积压情况。优先调度优先级高的队列,为其分配日志处理线程作为第二线程并启动日志处理线程。
所述日志处理线程启动后,首先检查文件队列中的数据文件是否为空,如果文件队列中的数据文件为空,则表示当前该文件队列并没有写入日志数据,则无法进行读取。如果文件队列不为空,则获取上次的读偏移量,从所述读偏移量开始,顺序从文件队列的数据文件中读取二进制日志数据。而对读取到的日志数据进行反序列化。
而当文件队列取空之后,所述日志存储线程进入休眠状态,等待下一次日志写入文件队列时被启动。
作为本发明的一种实施例,在对读取到的日志数据进行反序列化后,将日志对象所对应的调用详情转换成文件,推入minio文件系统。
S104、当达到日志存库服务触发条件时,触发日志存库服务,将所述读取到的日志数据存入数据库。
预先设定日志存库服务触发条件,当从文件队列中读取日志数据达到预先设定的日志存库服务触发条件时,触发日志存库服务,所述日志存库服务为,将读取到的日志数据一次性批量存入相应的数据库中,以此实现日志异步批量入库,提高系统响应速度和吞吐量。
进一步地,所述日志存库服务触发条件包括:
读取到的日志数据达到预设日志数据值,和/或
当前文件队列由非空状态变成空置状态。
作为本发明的一种实施例,所述日志存库服务触发条件可以为:
预设一日志数据值,当读取到的日志数据达到所述预设的日志数据值时,日志存库服务被触发。
例如,预设日志数据值为100条,当读取到的日志数据条数达到100条时,触发日志存库服务,将该100条日志数据一次性批量存储到相应数据库中。
作为本发明的一种实施例,所述日志存库服务触发条件还可以为:
判断当前文件队列是否被取空,如果当前文件队列已被取空,则触发日志存库服务。应当说明的是,当前文件队列由非空状态变成空置状态,是通过读取日志数据,在日志数据被完全消费后,删除掉文件队列中的日志数据,导致文件队列为空,此时触发日志存库服务。而当文件队列为空置状态的第二种情况,即文件队列中并没有写入日志数据,此时由于没有日志数据的写入,也就无法进行读取,不会触发日志存库服务。
作为本发明的一种实施例,当同时满足上述两种日志存库服务触发条件时,也触发日志存库服务。
作为本发明的一种实施例,还包括队列备份线程,实时扫描日志队列的变更情况,将变更的日志文件同步到备份服务器。例如在数据批量入库成功后,进行队列消息出堆栈确认,即更新文件队列索引文件的读写偏移量,此时由于文件队列中的日志文件发生了变更,变更的日志文件即为入库的日志文件,故此时将入库的已读日志文件同步到备份服务器。
根据本发明的实施例,充分借助文件队列和线程技术,对海量日志信息进行批量处理,借助文件队列的高速存取和消峰功能,实现访问日志批量入库,在提高系统响应速度和吞吐量的基础上保障访问日志的完整性。
本方法的主要优势体现在以下:
1.异步:很多场景下,不会立即处理消息,此时可以在文件型MQ中存储访问日志,并在某一时刻再进行处理。
2.解耦:不同进程间添加一层实现解耦,方便今后的扩展。
3.消除峰值:在高并发环境下,处理不及时请求往往发生堵塞,比如大量的insert的请求同时到达数据库,直接导致无数的行锁、表锁,甚至最后请求会堆积过多,数据库或应用崩溃。通过使用消息队列,我们可以异步处理请求,从而缓解系统的压力。
4.缩短处理时间:在一些高并发的业务场景中,可以通过异步队列执行批量入库,提高系统响应速度和吞吐量。
5.数据完整:在系统宕机,应用重启、系统重启等情况下,都不会造成日志丢失,保证调用访问有据可查。
需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于可选实施例,所涉及的动作和模块并不一定是本发明所必须的。
如图3所示,设备300包括中央处理单元(CPU)301,其可以根据存储在只读存储器(ROM)302中的计算机程序指令或者从存储单元308加载到随机访问存储器(RAM)303中的计算机程序指令,来执行各种适当的动作和处理。在RAM303中,还可以存储设备300操作所需的各种程序和数据。CPU301、ROM302以及RAM303通过总线304彼此相连。输入/输出(I/O)接口305也连接至总线304。
设备300中的多个部件连接至I/O接口305,包括:输入单元306,例如键盘、鼠标等;输出单元307,例如各种类型的显示器、扬声器等;存储单元308,例如磁盘、光盘等;以及通信单元309,例如网卡、调制解调器、无线通信收发机等。通信单元309允许设备300通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
处理单元301执行上文所描述的各个方法和处理,例如方法S101~S104。例如,在一些实施例中,方法S101~S104可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元308。在一些实施例中,计算机程序的部分或者全部可以经由ROM302和/或通信单元309而被载入和/或安装到设备300上。当计算机程序加载到RAM303并由CPU301执行时,可以执行上文描述的方法S101~S104的一个或多个步骤。备选地,在其他实施例中,CPU301可以通过其他任何适当的方式(例如,借助于固件)而被配置为执行方法S101~S104。
本文中以上描述的功能可以至少部分地由一个或多个硬件逻辑部件来执行。例如,非限制性地,可以使用的示范类型的硬件逻辑部件包括:场可编程门阵列(FPGA)、专用集成电路(ASIC)、专用标准产品(ASSP)、芯片上系统的系统(SOC)、负载可编程逻辑设备(CPLD)等等。
用于实施本发明的方法的程序代码可以采用一个或多个编程语言的任何组合来编写。这些程序代码可以提供给通用计算机、专用计算机或其他可编程数据处理装置的处理器或控制器,使得程序代码当由处理器或控制器执行时使流程图和/或框图中所规定的功能/操作被实施。程序代码可以完全在机器上执行、部分地在机器上执行,作为独立软件包部分地在机器上执行且部分地在远程机器上执行或完全在远程机器或服务器上执行。
在本发明的上下文中,机器可读介质可以是有形的介质,其可以包含或存储以供指令执行系统、装置或设备使用或与指令执行系统、装置或设备结合地使用的程序。机器可读介质可以是机器可读信号介质或机器可读储存介质。机器可读介质可以包括但不限于电子的、磁性的、光学的、电磁的、红外的、或半导体系统、装置或设备,或者上述内容的任何合适组合。机器可读存储介质的更具体示例会包括基于一个或多个线的电气连接、便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦除可编程只读存储器(EPROM或快闪存储器)、光纤、便捷式紧凑盘只读存储器(CD-ROM)、光学储存设备、磁储存设备、或上述内容的任何合适组合。
此外,虽然采用特定次序描绘了各操作,但是这应当理解为要求这样操作以所示出的特定次序或以顺序次序执行,或者要求所有图示的操作应被执行以取得期望的结果。在一定环境下,多任务和并行处理可能是有利的。同样地,虽然在上面论述中包含了若干具体实现细节,但是这些不应当被解释为对本发明的范围的限制。在单独的实施例的上下文中描述的某些特征还可以组合地实现在单个实现中。相反地,在单个实现的上下文中描述的各种特征也可以单独地或以任何合适的子组合的方式实现在多个实现中。
尽管已经采用特定于结构特征和/或方法逻辑动作的语言描述了本主题,但是应当理解所附权利要求书中所限定的主题未必局限于上面描述的特定特征或动作。相反,上面所描述的特定特征和动作仅仅是实现权利要求书的示例形式。
Claims (8)
1.一种基于集群环境下的日志异步存储方法,其特征在于,包括:
响应于访问请求,生成日志对象,并将所述日志对象进行序列化,得到二进制的日志数据;
将所述二进制的日志数据映射到内存地址中,写入文件队列;所述文件队列包括多个有序的数据文件和一个索引文件;所述数据文件用于进行日志数据的读和写;所述索引文件用于记录当前读和写的数据文件编号、偏移量以及文件队列的优先级;
响应于第一应用程序的启动指令,启动第一线程,所述第一线程用于读取所述索引文件,根据索引文件中的优先级依次为文件队列分配第二线程,并启动第二线程;所述第二线程用于当所述文件队列中的数据文件不为空时,获取最近一次读取的偏移量,从内存中顺序读取所述文件队列中的日志数据;
当读取到的日志数据达到日志存库服务触发条件时,触发日志存库服务,将所述读取到的日志数据存入数据库;
为每个数据文件分配存储空间,所述存储空间内包括多个有序的数据存储单元,且相邻顺序的两个数据文件,后一个数据文件的首位存储单元与前一个数据文件的末位存储单元对应关联;
当向所述数据文件中写入日志数据时,向所述数据文件的数据存储单元中依次写入日志数据,当所述数据文件的末位存储单元达到最大存储空间时,根据数据文件之间的关联关系,切换到下一个数据文件的首位存储单元继续存储;
当从所述数据文件中读取日志数据时,从所述数据文件中的数据存储单元中依次读取日志数据,当完成所述数据文件中末位存储单元的读取后,根据数据文件之间的关联关系,切换到下一个数据文件的首位存储单元继续读取。
2.根据权利要求1所述的方法,其特征在于,所述日志对象包括服务信息、授权信息、调用者信息、调用信息和返回内容。
3.根据权利要求1所述的方法,其特征在于,所述文件队列采用MappedByteBuffer对日志文件进行读写操作。
4.根据权利要求1所述的方法,其特征在于,所述文件队列将写入的日志文件采用二进制存储,存储结构为起始符+消息内容+结束符。
5. 根据权利要求1所述的方法,其特征在于,所述日志存库服务触发条件包括:
读取到的日志数据达到预设日志数据值,和/或
当前文件队列由非空状态变成空置状态。
6.根据权利要求1所述的方法,其特征在于,还包括:
队列备份线程,用于扫描文件队列的日志存储状态,如果当前扫描的文件队列与上一次扫描的日志存储状态不同,则将发送变更的日志文件同步到备份服务器。
7.根据权利要求1所述的方法,其特征在于,在一次日志存库服务后,更新文件队列中索引文件的偏移量。
8.一种电子设备,包括存储器和处理器,所述存储器上存储有计算机程序,其特征在于,所述处理器执行所述程序时实现如权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011261846.2A CN112486913B (zh) | 2020-11-12 | 2020-11-12 | 一种基于集群环境下的日志异步存储方法和设备 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011261846.2A CN112486913B (zh) | 2020-11-12 | 2020-11-12 | 一种基于集群环境下的日志异步存储方法和设备 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112486913A CN112486913A (zh) | 2021-03-12 |
CN112486913B true CN112486913B (zh) | 2023-09-22 |
Family
ID=74930047
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011261846.2A Active CN112486913B (zh) | 2020-11-12 | 2020-11-12 | 一种基于集群环境下的日志异步存储方法和设备 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112486913B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112965805B (zh) * | 2021-03-25 | 2023-12-05 | 兴业数字金融服务(上海)股份有限公司 | 基于内存映射文件的跨进程异步任务处理方法及系统 |
CN116737673B (zh) * | 2022-09-13 | 2024-03-15 | 荣耀终端有限公司 | 嵌入式操作系统中文件系统的调度方法、设备及存储介质 |
CN115543214B (zh) * | 2022-11-25 | 2023-03-28 | 深圳华锐分布式技术股份有限公司 | 低时延场景下的数据存储方法、装置、设备及介质 |
CN116755637B (zh) * | 2023-08-17 | 2024-02-09 | 深圳华锐分布式技术股份有限公司 | 交易数据存储方法、装置、设备及介质 |
Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102552A (zh) * | 2013-04-15 | 2014-10-15 | 深圳中兴网信科技有限公司 | 一种消息处理方法及装置 |
CN107193558A (zh) * | 2017-05-12 | 2017-09-22 | 北京五八信息技术有限公司 | 一种日志文件的生成方法和装置 |
CN108319543A (zh) * | 2018-01-24 | 2018-07-24 | 广州江南科友科技股份有限公司 | 一种计算机日志数据的异步处理方法及其介质、系统 |
CN109284257A (zh) * | 2018-08-10 | 2019-01-29 | 锐捷网络股份有限公司 | 一种日志写入方法、装置、电子设备及存储介质 |
CN109471743A (zh) * | 2018-11-12 | 2019-03-15 | 深圳前海微众银行股份有限公司 | 日志收集方法、装置及计算机可读存储介质 |
CN111143236A (zh) * | 2019-12-07 | 2020-05-12 | 杭州安恒信息技术股份有限公司 | 一种内存映射实现队列及其数据读取和写入方法 |
CN111367755A (zh) * | 2020-02-17 | 2020-07-03 | 上海基分文化传播有限公司 | 一种移动终端的用户日志写入方法及系统 |
CN111367873A (zh) * | 2018-12-26 | 2020-07-03 | 深圳市优必选科技有限公司 | 日志数据的存储方法、装置、终端及计算机存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10817500B2 (en) * | 2014-03-13 | 2020-10-27 | Sybase, Inc. | Reduce log contention by batching log record transfers to the log |
-
2020
- 2020-11-12 CN CN202011261846.2A patent/CN112486913B/zh active Active
Patent Citations (8)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN104102552A (zh) * | 2013-04-15 | 2014-10-15 | 深圳中兴网信科技有限公司 | 一种消息处理方法及装置 |
CN107193558A (zh) * | 2017-05-12 | 2017-09-22 | 北京五八信息技术有限公司 | 一种日志文件的生成方法和装置 |
CN108319543A (zh) * | 2018-01-24 | 2018-07-24 | 广州江南科友科技股份有限公司 | 一种计算机日志数据的异步处理方法及其介质、系统 |
CN109284257A (zh) * | 2018-08-10 | 2019-01-29 | 锐捷网络股份有限公司 | 一种日志写入方法、装置、电子设备及存储介质 |
CN109471743A (zh) * | 2018-11-12 | 2019-03-15 | 深圳前海微众银行股份有限公司 | 日志收集方法、装置及计算机可读存储介质 |
CN111367873A (zh) * | 2018-12-26 | 2020-07-03 | 深圳市优必选科技有限公司 | 日志数据的存储方法、装置、终端及计算机存储介质 |
CN111143236A (zh) * | 2019-12-07 | 2020-05-12 | 杭州安恒信息技术股份有限公司 | 一种内存映射实现队列及其数据读取和写入方法 |
CN111367755A (zh) * | 2020-02-17 | 2020-07-03 | 上海基分文化传播有限公司 | 一种移动终端的用户日志写入方法及系统 |
Also Published As
Publication number | Publication date |
---|---|
CN112486913A (zh) | 2021-03-12 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112486913B (zh) | 一种基于集群环境下的日志异步存储方法和设备 | |
WO2021180025A1 (zh) | 一种消息处理方法、装置、电子设备及介质 | |
US9836516B2 (en) | Parallel scanners for log based replication | |
CN110555001B (zh) | 数据处理方法、装置、终端及介质 | |
CN113032099B (zh) | 云计算节点、文件管理方法及装置 | |
CN110069557B (zh) | 数据传输方法、装置、设备及存储介质 | |
CN109522273B (zh) | 一种实现数据写入的方法及装置 | |
CN110008041B (zh) | 一种消息处理方法及装置 | |
CN111400246B (zh) | 异步导入文件方法、装置、计算机设备和存储介质 | |
US20230030856A1 (en) | Distributed table storage processing method, device and system | |
CN111414362A (zh) | 数据读取方法、装置、设备及存储介质 | |
CN115203159B (zh) | 一种数据存储方法、装置、计算机设备和存储介质 | |
CN114896215A (zh) | 元数据的存储方法及装置 | |
CN112860412B (zh) | 业务数据处理方法、装置、电子设备及存储介质 | |
EP3945420A1 (en) | Method and apparatus for data processing, server and storage medium | |
CN111090782A (zh) | 一种图数据存储方法、装置、设备及存储介质 | |
CN111078643B (zh) | 一种批量删除文件的方法、装置及电子设备 | |
CN113157738B (zh) | 堆内数据缓存同步方法、装置、计算机设备及存储介质 | |
CN111984197B (zh) | 计算机缓存分配方法 | |
CN112463037B (zh) | 一种元数据保存方法、装置、设备、产品 | |
CN114328747A (zh) | 数据同步方法、装置、计算机设备和介质 | |
CN114089912A (zh) | 基于消息中间件的数据处理方法及装置、存储介质 | |
CN112800123A (zh) | 数据处理方法、装置、计算机设备和存储介质 | |
CN115525618A (zh) | 存储集群、数据存储方法、系统及存储介质 | |
CN114265906A (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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |