CN113609091B - 日志管理方法、装置、设备及存储介质 - Google Patents
日志管理方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN113609091B CN113609091B CN202110949207.3A CN202110949207A CN113609091B CN 113609091 B CN113609091 B CN 113609091B CN 202110949207 A CN202110949207 A CN 202110949207A CN 113609091 B CN113609091 B CN 113609091B
- Authority
- CN
- China
- Prior art keywords
- log
- instance
- index data
- information
- meta
- 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
Images
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/13—File access structures, e.g. distributed indices
- G06F16/134—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/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
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/10—File systems; File servers
- G06F16/18—File system types
- G06F16/182—Distributed file systems
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)
- Debugging And Monitoring (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了一种日志管理方法、装置、设备及存储介质。该方法包括:获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;所述索引数据用于对日志项进行操作;将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到可嵌入数据库RocksDB中。本发明实施例的技术方案,实现单个进程中的多个实例共享日志,提高资源利用率和磁盘性能,对大规模的日志文件可以进行高效处理。
Description
技术领域
本发明实施例涉及计算机技术领域,尤其涉及一种日志管理方法、装置、设备及存储介质。
背景技术
在分布式***中,通常采用多个进程保存数据的多个副本,保证***的可靠性。可以使用进程的日志文件来实现多个副本的数据同步,并使用Raft协议,基于日志形式实现数据的一致性。
现有技术中,针对Multi-Raft场景,单进程内可能需要管理万级别的raft实例,如果每个raft实例维护独立的日志,会导致以下问题:日志数据占用过多***资源,如文件句柄、磁盘空间等;磁盘随机写现象严重,影响磁盘性能。
发明内容
本发明实施例提供一种日志管理方法、装置、设备及存储介质,以实现单个进程中的多个实例共享日志,提高磁盘性能,对大规模的日志文件可以进行高效处理。
第一方面,本发明实施例提供了一种日志管理方法,包括:
获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;
将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中。
可选的,索引数据,包括:与各日志文件对应的日志索引,日志索引用于对日志文件进行读取操作;
根据实例标识和日志项生成与各实例对应的索引数据,包括:
获取日志项的日志编号;
将实例标识与日志编号的组合作为键名,将日志项对应的存储分区的编号与日志文件偏移量的组合作为键值,生成键值对形式的日志索引。
可选的,索引数据,还包括:用于日志回收的实例元信息,以及用于节点重启后恢复索引数据的全局元信息;
实例元信息,包括:实例的可删除日志文件的日志编号的最大值,与日志编号最大值对应的任期,以及实例的实例删除标识;
全局元信息,包括:各实例的索引数据最后一次落盘时,处于开放状态的存储分区的编号。
可选的,将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中,包括:
按照日志项的写入顺序,依次从各实例的日志项中确定当前待处理的目标日志项,并将目标日志项存储到处于开放状态的磁盘存储分区中形成日志文件;
对各实例的索引数据进行编码,以键值对的形式存储到RocksDB中。
可选的,在将与各实例对应的索引数据存储到RocksDB中之前,还包括:关闭RocksDB的预写日志功能。
可选的,还包括:
响应于全局元信息的定时更新消息,将全局元信息更新为当前处于开放状态的磁盘存储分区的编号,并根据更新后的全局元信息进行索引数据落盘处理;和/或,
响应于索引数据的恢复请求,从RocksDB实例中读取全局元信息,从全局元信息对应的存储分区编号开始,顺序扫描日志文件,恢复索引数据。
可选的,还包括:
响应于日志回收的定时触发消息,扫描各实例的索引数据;
针对各实例,删除在实例元信息的日志编号最大值之前的日志索引;
删除磁盘中处于关闭状态,且未被任何日志索引引用的存储分区。
第二方面,本发明实施例还提供了一种日志管理装置,包括:
获取模块,用于获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;
存储模块,用于将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中。
第三方面,本发明实施例还提供了一种计算机设备,设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当一个或多个程序被一个或多个处理器执行,使得一个或多个处理器实现如本发明任意实施例提供的日志管理方法。
第四方面,本发明实施例还提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现本发明任意实施例提供的日志管理方法。
本发明实施例中,通过获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志项进行操作;将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中,解决了现有技术中各实例维护独立的日志数据,导致资源浪费,磁盘随机写严重的问题,实现单个进程中的多个实例共享日志,提高资源利用率和磁盘性能,对大规模的日志文件可以进行高效处理。
附图说明
图1a是本发明实施例一中的一种日志管理方法的流程图;
图1b是本发明实施例一中的一种日志数据组织方式的示意图;
图2是本发明实施例二中的一种日志管理装置的结构示意图;
图3是本发明实施例三中的计算机设备的结构示意图。
具体实施方式
下面结合附图和实施例对本发明作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释本发明,而非对本发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本发明相关的部分而非全部结构。
实施例一
图1a是本发明实施例一中的一种日志管理方法的流程图,本实施例可适用于对多个实例的日志数据进行顺序写的情况,该方法可以由日志管理装置来执行,该装置可以由硬件和/或软件来实现,并一般可以集成在提供日志管理服务的计算机设备中。如图1a所示,该方法包括:
步骤110、获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作。
其中,目标进程中的实例可以是raft协议实例,raft协议是一种基于日志的分布式一致性协议。Raft协议的原理如下:首先从集群所有节点中选举出一个Leader,其余节点为Follower,由Leader来负责管理日志。当Leader将日志复制到大多数节点时,就能将之应用到状态机。为了保证日志条目的有序性,算法将时间划分为不同的term,term是一个连续的单调递增的整数。当节点中发生Leader选举时,term加一,当节点观察到比自身更大的term时,切换到该term。
本实施例中,每个raft实例被分配唯一且固定长度的实例标识uuid,uuid可以是递增长整形数值。Raft实例的每个日志项有两个属性:任期term和日志编号log sequence,两个属性都是递增长整形数值;并且term+log sequence唯一标志一个日志项。与raft协议相关的日志处理操作包括:读取指定的日志项;写入日志项;从指定log sequence开始,删除所有后续日志项;从指定log sequence开始,删除所有之前的日志项等。其中,实例的日志数据存储在内存中时称为日志项,存储在磁盘中时称为日志文件。
本实施例中,如图1b左下侧所示,磁盘划分出多个存储分区segment来顺序存储各raft实例的日志项,每个存储分区分配一个唯一递增的编号。为了能够对大量raft实例的海量日志文件进行快速的日志读写等操作,可以针对各raft实例的日志文件生成索引(index)数据,如图1b右侧所示,用于帮助对日志文件进行相应的处理操作,提高对大规模日志文件的处理效率。
可选的,索引数据,可以包括:与各日志文件对应的日志索引,日志索引用于对日志文件进行读取操作;根据实例标识和日志项生成与各实例对应的索引数据,可以包括:获取日志项的日志编号;将实例标识与日志编号的组合作为键名,将日志项对应的存储分区的编号与日志文件偏移量的组合作为键值,生成键值对形式的日志索引。
本实施例中,为了实现raft协议中读取日志文件的操作,可以为每个日志文件分别生成一个日志索引。其中,日志索引中的键名raft uuid+log sequence为寻址方式,键值segment id+日志文件偏移量是该日志文件在磁盘存储分区中的物理存储位置。
示例性的,如图1b所示,对于raft 0的日志项0,其存储在存储分区i中,文件偏移量为0,则将{0,0}作为键名,将{i,0}作为键值,得到该日志项对应的日志文件的日志索引{0,0}:{i,0}。当然,日志索引的表示方式并不固定,只要能指示日志文件在磁盘存储分区中的物理存储位置即可。
可选的,索引数据,还可以包括:用于日志回收的实例元信息,以及用于节点重启后恢复索引数据的全局元信息;实例元信息,包括:实例的可删除日志文件的日志编号的最大值,与日志编号最大值对应的任期,以及实例的实例删除标识;全局元信息,包括:各实例的索引数据最后一次落盘时,处于开放状态的存储分区的编号。
本实施例中,为了实现raft协议中回收日志文件的操作,每个raft实例维护以下元信息:purged_id,记录raft实例的最大可删除日志文件的log sequence,以及该logsequence对应的term;is_delete,布尔类型数据,标识该raft实例是否已被删除,如果raft实例已被删除,则属于该raft实例的所有日志文件都可回收。
此外,由于日志文件不能丢失,因此必须实时落盘,而index数据因为可以根据日志文件恢复出来,因此不必实时落盘,只需根据需要落盘一部分即可。为了保证在节点从故障中恢复重启后,能够将未落盘的index数据恢复出来,需额外维护全局元信息,记录各raft实例的index数据最后一次落盘时,处于open状态的存储分区的编号。
其中,磁盘的每个存储分区可以有开放open状态和关闭closed状态两种,但同一时间只能有一个open状态的存储分区,用于写入日志文件。
步骤120、将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中。
本实施例中,在生成index数据之后,根据日志项和index数据各自的特性,可以分别采用不同的存储模型,以达到更好的性能。例如,对于各raft实例的日志项,将各日志项顺序存储到磁盘的各存储分区中形成日志文件,实现多实例日志共享,消除随机写问题;对于index数据,使用RocksDB进行存储,保证读写快速和高效应对高负载服务。
可选的,将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中,可以包括:按照日志项的写入顺序,依次从各实例的日志项中确定当前待处理的目标日志项,并将目标日志项存储到处于开放状态的磁盘存储分区中形成日志文件;对各实例的索引数据进行编码,以键值对的形式存储到RocksDB中。
本实施例中,由于只有当前处于open状态的存储分区才能写入日志数据,因此,在对各实例的日志项进行顺序写时,可以先确定当前待写入的目标日志项,然后判断处于open状态的存储分区是否足够存储目标日志项。如果足够,则将目标日志项写入该存储分区中形成日志文件,如果不够存储目标日志项,则将当前存储分区切换为closed状态,并生成一个新的存储分区,并设为open状态,将目标日志项存储到新的存储分区中。
由于RocksDB是键值存储器,因此,在存储到RocksDB中时,index数据已经被转换为键值对形式的数据。index数据可以按照以下规则进行编码转换:对于日志索引,键名为raft uuid+log sequence,键值为segment id+日志文件偏移量;对于Raft实例元信息,由于raft协议的log sequence从0开始,可以使用-1或其他非0数值作为特殊的占位符,以-1为例,可以将raft uuid+-1作为键名,将Raft实例元信息作为键值;对于全局元信息,raftuuid从0开始递增长,为了有特殊的唯一uuid,可以使用-1或其他非0数值作为占位符,以-1为例,可以将-1+-1作为键名,将全局元信息作为键值。
可选的,在将与各实例对应的索引数据存储到RocksDB中之前,还可以包括:关闭RocksDB的预写日志功能。
本实施例中,为了保证性能,需要保证每次写入日志项的io次数趋向于1,使得index数据的存储不会引入额外的输入输出开销。由于index数据写入RocksDB时,RocksDB会自动对写入事件生成日志文件,导致输入输出开销增加,因此,在将index数据写入RocksDB之前,预先关闭RocksDB本身的预写日志(write ahead log)功能。
本实施例中,相对于日志项,index数据的数据量通常会小很多,因此,index数据可以存储于共享的RocksDB中,由log gc与recovery逻辑共同保证Index数据的完整性。其中,log gc流程由后台线程定期触发,负责日志文件的回收与index数据的落盘,Recovery逻辑用于故障重启后根据日志文件恢复index数据。
可选的,还可以包括:响应于全局元信息的定时更新消息,将全局元信息更新为当前处于开放状态的磁盘存储分区的编号,并根据更新后的全局元信息进行索引数据落盘处理;和/或,响应于索引数据的恢复请求,从RocksDB实例中读取全局元信息,从全局元信息对应的存储分区编号开始,顺序扫描日志文件,恢复索引数据。
本实施例中,当接收到对全局元信息的定时更新消息时,可以将全局元信息更新为当前处于open状态的存储分区的编号,然后将更新后的全局元信息存到RocksDB中,调用RocksDB的接口实现index数据落盘。其中,RocksDB是一个嵌入式键值存储器,其中的键和值是任意的字节流,RocksDB中的所有数据是按序存放的。如果接收到index数据的恢复请求,则意味着需要在故障重启后根据日志文件恢复index数据。恢复index数据的逻辑可以是:从RocksDB实例中读取全局元信息,获取index数据最后一次落盘时,处于open状态的存储分区的编号,从该存储分区编号开始,顺序扫描日志文件,重新生成index数据。
可选的,还可以包括:响应于日志回收的定时触发消息,扫描各实例的索引数据;针对各实例,删除在实例元信息的日志编号最大值之前的日志索引;删除磁盘中处于关闭状态,且未被任何日志索引引用的存储分区。
本实施例中,可以定时统计是否有日志文件或者index数据需要回收,其中,在回收日志文件时,不会删除单个日志项,只按存储分区为单位进行删除。响应于日志回收的定时触发消息,扫描各实例的index数据,根据每个raft实例的元信息,统计该实例的日志项中是否有可以删除的,或者该实例是否已经被删除。如果有,则需更新purged_id或is_delete。
具体的,对于单个raft实例,可以删除purged_id之前的日志索引。当删除所有无用日志索引后,如果统计发现某个存储分区处于closed状态且未被任何索引引用,则删除该存储分区,释放占用的磁盘空间。
本发明实施例中,通过获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中,解决了现有技术中各实例维护独立的日志数据,导致资源浪费,磁盘随机写严重的问题,实现单个进程中的多个实例共享日志,通过生成与日志文件对应的索引数据,根据日志数据与索引数据各自的特性,采用不同的存储模型,提高资源利用率和磁盘性能,对大规模的日志文件进行高效处理。
实施例二
图2是本发明实施例二中的一种日志管理装置的结构示意图,本实施例可适用于对多个实例的日志数据进行顺序写的情况,该装置可以由硬件和/或软件来实现,并一般可以集成在提供日志管理服务的计算机设备中。如图2所示,该装置包括:
获取模块210,用于获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;
存储模块220,用于将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中。
本发明实施例中,通过获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中,解决了现有技术中各实例维护独立的日志数据,导致资源浪费,磁盘随机写严重的问题,实现单个进程中的多个实例共享日志,提高资源利用率和磁盘性能,对大规模的日志文件可以进行高效处理。
可选的,索引数据,包括:与各日志文件对应的日志索引,日志索引用于对日志文件进行读取操作;
获取模块210,用于:获取日志项的日志编号;
将实例标识与日志编号的组合作为键名,将日志项对应的存储分区的编号与日志文件偏移量的组合作为键值,生成键值对形式的日志索引。
可选的,索引数据,还包括:用于日志回收的实例元信息,以及用于节点重启后恢复索引数据的全局元信息;
实例元信息,包括:实例的可删除日志文件的日志编号的最大值,与日志编号最大值对应的任期,以及实例的实例删除标识;
全局元信息,包括:各实例的索引数据最后一次落盘时,处于开放状态的存储分区的编号。
可选的,存储模块220,用于:
按照日志项的写入顺序,依次从各实例的日志项中确定当前待处理的目标日志项,并将目标日志项存储到处于开放状态的磁盘存储分区中形成日志文件;
对各实例的索引数据进行编码,以键值对的形式存储到RocksDB中。
可选的,存储模块220,还用于:在将与各实例对应的索引数据存储到RocksDB中之前,关闭RocksDB的预写日志功能。
可选的,还包括:信息更新模块,用于响应于全局元信息的定时更新消息,将全局元信息更新为当前处于开放状态的磁盘存储分区的编号,并根据更新后的全局元信息进行索引数据落盘处理;和/或,
数据恢复模块,用于响应于索引数据的恢复请求,从RocksDB实例中读取全局元信息,从全局元信息对应的存储分区编号开始,顺序扫描日志文件,恢复索引数据。
可选的,还包括:
日志回收模块,用于响应于日志回收的定时触发消息,扫描各实例的索引数据;
针对各实例,删除在实例元信息的日志编号最大值之前的日志索引;
删除磁盘中处于关闭状态,且未被任何日志索引引用的存储分区。
本发明实施例所提供的日志管理装置可执行本发明任意实施例所提供的日志管理方法,具备执行方法相应的功能模块和有益效果。
实施例三
图3是本发明实施例三公开的一种计算机设备的结构示意图。图3示出了适于用来实现本发明实施方式的示例性设备12的框图。图3显示的设备12仅仅是一个示例,不应对本发明实施例的功能和使用范围带来任何限制。
如图3所示,设备12以通用计算设备的形式表现。设备12的组件可以包括但不限于:一个或者多个处理器或者处理单元16,***存储器28,连接不同***组件(包括***存储器28和处理单元16)的总线18。
总线18表示几类总线结构中的一种或多种,包括存储器总线或者存储器控制器,***总线,图形加速端口,处理器或者使用多种总线结构中的任意总线结构的局域总线。举例来说,这些体系结构包括但不限于工业标准体系结构(ISA)总线,微通道体系结构(MAC)总线,增强型ISA总线、视频电子标准协会(VESA)局域总线以及***组件互连(PCI)总线。
设备12典型地包括多种计算机***可读介质。这些介质可以是任何能够被设备12访问的可用介质,包括易失性和非易失性介质,可移动的和不可移动的介质。
***存储器28可以包括易失性存储器形式的计算机***可读介质,例如随机存取存储器(RAM)30和/或高速缓存存储器32。设备12可以进一步包括其它可移动/不可移动的、易失性/非易失性计算机***存储介质。仅作为举例,存储***34可以用于读写不可移动的、非易失性磁介质(图3未显示,通常称为“硬盘驱动器”)。尽管图3中未示出,可以提供用于对可移动非易失性磁盘(例如“软盘”)读写的磁盘驱动器,以及对可移动非易失性光盘(例如CD-ROM,DVD-ROM或者其它光介质)读写的光盘驱动器。在这些情况下,每个驱动器可以通过一个或者多个数据介质接口与总线18相连。存储器28可以包括至少一个程序产品,该程序产品具有一组(例如至少一个)程序模块,这些程序模块被配置以执行本发明各实施例的功能。
具有一组(至少一个)程序模块42的程序/实用工具40,可以存储在例如存储器28中,这样的程序模块42包括但不限于操作***、一个或者多个应用程序、其它程序模块以及程序数据,这些示例中的每一个或某种组合中可能包括网络环境的实现。程序模块42通常执行本发明所描述的实施例中的功能和/或方法。
设备12也可以与一个或多个外部设备14(例如键盘、指向设备、显示器24等)通信,还可与一个或者多个使得用户能与该设备12交互的设备通信,和/或与使得该设备12能与一个或多个其它计算设备进行通信的任何设备(例如网卡,调制解调器等等)通信。这种通信可以通过输入/输出(I/O)接口22进行。并且,设备12还可以通过网络适配器20与一个或者多个网络(例如局域网(LAN),广域网(WAN)和/或公共网络,例如因特网)通信。如图所示,网络适配器20通过总线18与设备12的其它模块通信。应当明白,尽管图中未示出,可以结合设备12使用其它硬件和/或软件模块,包括但不限于:微代码、设备驱动器、冗余处理单元、外部磁盘驱动阵列、RAID***、磁带驱动器以及数据备份存储***等。
处理单元16通过运行存储在***存储器28中的程序,从而执行各种功能应用以及数据处理,例如实现本发明实施例所提供的日志管理方法,包括:
获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;
将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中。
实施例四
本发明实施例四还公开了一种计算机存储介质,其上存储有计算机程序,该程序被处理器执行时实现一种日志管理方法,包括:
获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;索引数据用于对日志文件进行操作;
将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中。
本发明实施例的计算机存储介质,可以采用一个或多个计算机可读的介质的任意组合。计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质。计算机可读存储介质例如可以是,但不限于电、磁、光、电磁、红外线、或半导体的***、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、光纤、便携式紧凑磁盘只读存储器(CD-ROM)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本文件中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行***、装置或者器件使用或者与其结合使用。
计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行***、装置或者器件使用或者与其结合使用的程序。
计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于无线、电线、光缆、RF等等,或者上述的任意合适的组合。
可以以一种或多种程序设计语言或其组合来编写用于执行本发明操作的计算机程序代码,程序设计语言包括面向对象的程序设计语言,诸如Java、Smalltalk、C++,还包括常规的过程式程序设计语言,诸如”C”语言或类似的程序设计语言。程序代码可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络,包括局域网(LAN)或广域网(WAN),连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。
注意,上述仅为本发明的较佳实施例及所运用技术原理。本领域技术人员会理解,本发明不限于这里所述的特定实施例,对本领域技术人员来说能够进行各种明显的变化、重新调整和替代而不会脱离本发明的保护范围。因此,虽然通过以上实施例对本发明进行了较为详细的说明,但是本发明不仅仅限于以上实施例,在不脱离本发明构思的情况下,还可以包括更多其他等效实施例,而本发明的范围由所附的权利要求范围决定。
Claims (9)
1.一种日志管理方法,其特征在于,包括:
获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;所述索引数据用于对日志文件进行操作;
将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到可嵌入数据库RocksDB中;
其中,所述索引数据,还包括:用于日志回收的实例元信息,以及用于节点重启后恢复索引数据的全局元信息;
所述实例元信息,包括:实例的可删除日志文件的日志编号的最大值,与所述日志编号最大值对应的任期,以及所述实例的实例删除标识;
所述全局元信息,包括:各实例的索引数据最后一次落盘时,处于开放状态的存储分区的编号。
2.根据权利要求1所述的方法,其特征在于,所述索引数据,包括:与各日志文件对应的日志索引,所述日志索引用于对日志文件进行读取操作;
根据实例标识和日志项生成与各实例对应的索引数据,包括:
获取日志项的日志编号;
将实例标识与日志编号的组合作为键名,将日志项对应的存储分区的编号与日志文件偏移量的组合作为键值,生成键值对形式的日志索引。
3.根据权利要求1所述的方法,其特征在于,将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中,包括:
按照日志项的写入顺序,依次从各实例的日志项中确定当前待处理的目标日志项,并将目标日志项存储到处于开放状态的磁盘存储分区中形成日志文件;
对各实例的索引数据进行编码,以键值对的形式存储到RocksDB中。
4.根据权利要求1所述的方法,其特征在于,在将与各实例对应的索引数据存储到RocksDB中之前,还包括:关闭RocksDB的预写日志功能。
5.根据权利要求1所述的方法,其特征在于,还包括:
响应于全局元信息的定时更新消息,将全局元信息更新为当前处于开放状态的磁盘存储分区的编号,并根据更新后的全局元信息进行索引数据落盘处理;和/或,
响应于索引数据的恢复请求,从RocksDB实例中读取全局元信息,从所述全局元信息对应的存储分区编号开始,顺序扫描日志文件,恢复索引数据。
6.根据权利要求1所述的方法,其特征在于,还包括:
响应于日志回收的定时触发消息,扫描各实例的索引数据;
针对各实例,删除在实例元信息的日志编号最大值之前的日志索引;
删除磁盘中处于关闭状态,且未被任何日志索引引用的存储分区。
7.一种日志管理装置,其特征在于,包括:
获取模块,用于获取目标进程中的各实例的实例标识和日志项,并根据实例标识和日志项生成与各实例对应的索引数据;所述索引数据用于对日志文件进行操作;
存储模块,用于将各实例的日志项顺序存储到磁盘的存储分区中形成日志文件,并将与各实例对应的索引数据存储到RocksDB中;
其中,所述索引数据,还包括:用于日志回收的实例元信息,以及用于节点重启后恢复索引数据的全局元信息;
所述实例元信息,包括:实例的可删除日志文件的日志编号的最大值,与所述日志编号最大值对应的任期,以及所述实例的实例删除标识;
所述全局元信息,包括:各实例的索引数据最后一次落盘时,处于开放状态的存储分区的编号。
8.一种计算机设备,其特征在于,所述设备包括:
一个或多个处理器;
存储装置,用于存储一个或多个程序,
当所述一个或多个程序被所述一个或多个处理器执行,使得所述一个或多个处理器实现如权利要求1-6中任一所述的日志管理方法。
9.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1-6中任一所述的日志管理方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110949207.3A CN113609091B (zh) | 2021-08-18 | 2021-08-18 | 日志管理方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110949207.3A CN113609091B (zh) | 2021-08-18 | 2021-08-18 | 日志管理方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113609091A CN113609091A (zh) | 2021-11-05 |
CN113609091B true CN113609091B (zh) | 2022-07-12 |
Family
ID=78308892
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110949207.3A Active CN113609091B (zh) | 2021-08-18 | 2021-08-18 | 日志管理方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113609091B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN118012732B (zh) * | 2024-04-08 | 2024-06-28 | 合众新能源汽车股份有限公司 | 一种日志管理方法、装置及电子设备 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
CN109558457A (zh) * | 2018-12-11 | 2019-04-02 | 浪潮(北京)电子信息产业有限公司 | 一种数据写入方法、装置、设备及存储介质 |
US10474656B1 (en) * | 2017-02-21 | 2019-11-12 | Nutanix, Inc. | Repurposing log files |
CN111837101A (zh) * | 2019-09-12 | 2020-10-27 | 创新先进技术有限公司 | 日志结构存储*** |
CN112527759A (zh) * | 2021-02-09 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 日志执行方法、装置、计算机设备及存储介质 |
-
2021
- 2021-08-18 CN CN202110949207.3A patent/CN113609091B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN106708427A (zh) * | 2016-11-17 | 2017-05-24 | 华中科技大学 | 一种适用于键值对数据的存储方法 |
US10474656B1 (en) * | 2017-02-21 | 2019-11-12 | Nutanix, Inc. | Repurposing log files |
CN109558457A (zh) * | 2018-12-11 | 2019-04-02 | 浪潮(北京)电子信息产业有限公司 | 一种数据写入方法、装置、设备及存储介质 |
CN111837101A (zh) * | 2019-09-12 | 2020-10-27 | 创新先进技术有限公司 | 日志结构存储*** |
CN112527759A (zh) * | 2021-02-09 | 2021-03-19 | 腾讯科技(深圳)有限公司 | 日志执行方法、装置、计算机设备及存储介质 |
Non-Patent Citations (1)
Title |
---|
[SoC]Add Segment Log Storage Index module, remove dependency on rocksdb;潘潘;《https://toscode.gitee.com/sofastack/sofa-jraft/issues/I1I9C8》;20200525;第1页 * |
Also Published As
Publication number | Publication date |
---|---|
CN113609091A (zh) | 2021-11-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US9787706B1 (en) | Modular architecture for analysis database | |
US20190163591A1 (en) | Remote Data Replication Method and System | |
EP3816783B1 (en) | Method and device for data migration | |
WO2019062574A1 (zh) | 一种元数据查询方法及装置 | |
US10013312B2 (en) | Method and system for a safe archiving of data | |
US8819059B2 (en) | Facilitation of search, list, and retrieval operations on persistent data set using distributed shared memory | |
KR19990029323A (ko) | 애플리케이션 프로그램 인터페이스와 이를 구현하는 방법 및 컴퓨터 프로그램 제품 | |
US20220129468A1 (en) | Method, device, and program product for managing index of streaming data storage system | |
US10095415B2 (en) | Performance during playback of logged data storage operations | |
US10795579B2 (en) | Methods, apparatuses, system and computer program products for reclaiming storage units | |
CN103716384A (zh) | 跨数据中心实现云存储数据同步的方法和装置 | |
CN113760847A (zh) | 日志数据处理方法、装置、设备及存储介质 | |
CN106873902B (zh) | 一种文件存储***、数据调度方法及数据节点 | |
CN107798063B (zh) | 快照处理方法和快照处理装置 | |
CN113609091B (zh) | 日志管理方法、装置、设备及存储介质 | |
CN116483284B (zh) | 一种读写虚拟硬盘的方法、装置、介质及电子设备 | |
CN111930684A (zh) | 基于hdfs的小文件处理方法、装置、设备及存储介质 | |
US11334444B2 (en) | Method, device and computer program product for managing a storage system | |
US20210117339A1 (en) | Managing global counters using local delta counters | |
CN116303789A (zh) | 多分片多副本数据库并行同步方法、装置及可读介质 | |
CN109992447B (zh) | 数据复制方法、装置及存储介质 | |
US20200226060A1 (en) | In-place garbage collection of a sharded, replicated distributed state machine based on mergeable operations | |
CN113254271B (zh) | 一种数据序列恢复方法、装置、设备及存储介质 | |
US11494099B2 (en) | Method, device, and computer program product for managing storage system | |
WO2022173652A1 (en) | Reducing the impact of network latency during a restore operation |
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 |