日志存储方法及装置制造方法及图纸

技术编号:28622120 阅读:14 留言:0更新日期:2021-05-28 16:17
本发明专利技术公开了一种日志存储方法及装置,可应用但不限于云计算领域,该方法包括:采集待存储的日志数据;将采集的日志数据写入内存文件系统;对内存文件系统中的日志数据进行持久化存储。本发明专利技术将日志数据写入到基于内存的文件系统,能够避免磁盘存储的IO抖动问题,不会阻塞日志数据的写入,也就不会影响到业务进程。

【技术实现步骤摘要】
日志存储方法及装置
本专利技术公开了一种日志存储方法及装置,可应用于云计算领域,也可应用于除云计算领域以外的任意领域,本专利技术公开的日志存储方法及装置的应用领域不作限定。
技术介绍
本部分旨在为权利要求书中陈述的本专利技术实施例提供背景或上下文。此处的描述不因为包括在本部分中就承认是现有技术。随着云计算的飞速发展,分布式存储因其硬件解耦、弹性扩容等特点应用也越来越广泛,并在性能、高可用等方面有了显著提升。但由于分布式存储切片打散的基本特性,单节点故障也会对集群整体IO或多或少产生影响,尽管各个分布式存储厂商从架构设计、故障检测、隔离机制等方面进行优化,但也只能缩短影响时间而无法完全消除影响。因此,在分布式存储单盘或单节点等常见故障引起集群IO抖动的情况下,IO延时极为敏感的高并发业务交易可能会因为日志写IO无法及时处理导致超时失败。同样,在非分布式存储场景下,比如集中式存储、本地磁盘等,或磁盘读写繁忙情况下,也可能会由于故障等原因导致文件系统IO阻塞,影响日志落盘,从而影响业务交易处理。相对而言,分布式存储场景下文件系统IO阻塞更为常见。针对存储IO抖动阻塞业务线程的问题,现有技术中主要采用如下两种解决方案:第一种是应用层面将日志写入改造为异步IO(是指收到I/O请求后系统会先告诉应用程序I/O请求已经收到,随后再去异步处理,等处理完成后系统再通过事件通知的方式告诉应用程序结果,IO处理的过程不会阻塞线程,可以处理其它任务,例如JavaAIO)。阻塞是由于同步IO(是指收到I/O请求后系统不会立刻响应应用程序,等到处理完成系统才会通过系统调用的方式告诉应用程序I/O结果,IO处理的过程会阻塞线程,无法处理其它任务)等待引起,修改程序优化IO模型是最直接也是最彻底的方法。这种在应用层面将日志写入改造为异步日志写入的方案,虽然最直接也最彻底,但相对投入成本较高,并且很多情况下并不具备改造条件或者改造难度极大,比如中间件、JDK等第三方产品不掌握源码,甚至提供源码也不具备定制修改的能力;或者将JDK的JVMGC日志、重要审计日志等修改为异步日志后可能导致异常日志记录不全,某些情况下是不可接受的,因为异步日志写入不能确保日志成功写入磁盘。第二种是增加独立的本地磁盘用于日志写入,通常是两块或两块以上的高性能SSD并配置RAID(一般RAID1或RAID5),避免与其它IO相互影响,同时提升日志IO写入的性能及可靠性。应用需要配合改造,调整日志写入的路径。这种增加独立的日志专用本地磁盘方式,对应用层影响较小,只需要调整日志写入路径的配置,但是投入的成本相对较高,需要单独配置至少两块高性能磁盘(尽管可能不需要整块磁盘的容量)以及一块磁盘阵列卡来保证性能及高可用。同时,该方案的使用场景也有一定限制,通常只能在物理机场景使用,虚拟机场景下因为涉及到硬盘直通,会导致虚机丧失热迁移特性,进而影响数据面热升级能力。同时,在云环境混合使用分布式存储和本地盘,也会使得运维复杂度和运维成本大幅上升,因此在虚拟化场景实施层面存在较大的困难。针对上述问题,目前尚未提出有效的解决方案。
技术实现思路
本专利技术实施例中提供了一种日志存储方法,用以解决分布式存储系统因存储IO抖动阻塞日志写盘从而导致业务交易超时失败的技术问题,该方法包括:采集待存储的日志数据;将采集的日志数据写入内存文件系统;对所述内存文件系统中的日志数据进行持久化存储。本专利技术实施例中还提供了一种日志存储装置,用以解决分布式存储系统因存储IO抖动阻塞日志写盘从而导致业务交易超时失败的技术问题,该装置包括:日志采集模块,用于采集待存储的日志数据;日志临时存储模块,用于将采集的日志数据写入内存文件系统;日志持久化存储模块,用于对所述内存文件系统中的日志数据进行持久化存储。本专利技术实施例中还提供了一种计算机设备,用以解决分布式存储系统因存储IO抖动阻塞日志写盘从而导致业务交易超时失败的技术问题,该计算机设备包括存储器、处理器及存储在存储器上并可在处理器上运行的计算机程序,处理器执行计算机程序时实现上述日志存储方法。本专利技术实施例中还提供了一种计算机可读存储介质,用以解决分布式存储系统因存储IO抖动阻塞日志写盘从而导致业务交易超时失败的技术问题,该计算机可读存储介质存储有执行上述日志存储方法的计算机程序。本专利技术实施例中提供的日志存储方法、装置、计算机设备及计算机可读存储介质,在采集到待存储的日志数据后,首先将采集的日志数据写入内存文件系统,然后再对内存文件系统中的日志数据进行持久化存储。与现有技术中将日志数据直接写入磁盘的技术方案相比,本专利技术实施例中,将日志数据写入到基于内存的文件系统,能够避免磁盘存储的IO抖动问题,不会阻塞日志数据的写入,也就不会影响到业务进程。附图说明为了更清楚地说明本专利技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本专利技术的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。在附图中:图1为本专利技术实施例中提供的一种日志存储方法流程图;图2为本专利技术实施例中提供的一种对日志数据持久化存储的流程图;图3为本专利技术实施例中提供的一种日志数据采集流程图;图4为本专利技术实施例中提供的一种可选的日志存储方法流程图;图5为本专利技术实施例中提供的一种基于Linux内存文件系统的日志存储实现流程图;图6为本专利技术实施例中提供的一种日志存储装置示意图;图7为本专利技术实施例中提供的一种计算机设备示意图。具体实施方式为使本专利技术实施例的目的、技术方案和优点更加清楚明白,下面结合附图对本专利技术实施例做进一步详细说明。在此,本专利技术的示意性实施例及其说明用于解释本专利技术,但并不作为对本专利技术的限定。本专利技术实施例中提供了一种日志存储方法,能够有效避免因磁盘存储故障或繁忙等原因,引起存储IO抖动阻塞日志写盘,从而使得业务交易超时失败的问题。图1为本专利技术实施例中提供的一种日志存储方法流程图,如图1所示,该方法包括如下步骤:S101,采集待存储的日志数据。需要说明的是,业务系统的运行和操作都会产生大量日志数据,上述S101采集的日志数据是指业务系统运行或操作过程中产生的待写入磁盘文件系统的日志数据。S102,将采集的日志数据写入内存文件系统。需要说明的是,本专利技术实施例中的内存文件系统可以是但不限于Linux的内存文件系统tmpfs;例如,还可以是ramdisk、ramfs等基于内存的文件系统。S103,对内存文件系统中的日志数据进行持久化存储。需要说明的是,由于内存文件系统只能临时存储数据,因而,需要将内存文件系统中的日志数据持久化存储到本地磁盘文件系统或其他设备。在一个实施例中,如图2所示,本专利技术实施例中提供的日志存储方法可以通过S201或S202对内存文件系统中的日志数据进行持久化存储本文档来自技高网
...

【技术保护点】
1.一种日志存储方法,其特征在于,包括:/n采集待存储的日志数据;/n将采集的日志数据写入内存文件系统;/n对所述内存文件系统中的日志数据进行持久化存储。/n

【技术特征摘要】
1.一种日志存储方法,其特征在于,包括:
采集待存储的日志数据;
将采集的日志数据写入内存文件系统;
对所述内存文件系统中的日志数据进行持久化存储。


2.如权利要求1所述的方法,其特征在于,对所述内存文件系统中的日志数据进行持久化存储,包括:
将所述内存文件系统中的日志数据,上传至日志中心集群。


3.如权利要求2所述的方法,其特征在于,将所述内存文件系统中的日志数据,上传至日志中心集群,包括:
采用异步的方式,将所述内存文件系统中的日志数据,上传至日志中心集群。


4.如权利要求3所述的方法,其特征在于,采用异步的方式,将所述内存文件系统中的日志数据,上传至日志中心集群,包括:
将所述内存文件系统中的日志数据,发送至Kafka队列;
由日志中心集群从所述Kafka队列中读取日志数据并进行持久化存储。


5.如权利要求1所述的方法,其特征在于,对所述内存文件系统中的日志数据进行持久化存储,包括:
根据预先配置的转存周期和存储路径,将所述内存文件系统中的日志数据存储到本地磁盘文件系统。


6.如权利要求1所述的方法,其特征在于,采集待存储的日志数据,包括:
监测日志文件或日志目录中的日志数据是否存在更新;
当日志文件或日志目录中的日志数据存在更新的情况下,读取增量日志数据。


7.如权利要求1所述的方法,其特征在于,在采集待存储的日志数据之后,所述方法还包括:
根据日志存储需求,对采集的日志数据进行预处理。


8.一种日志存储装置,其特征在于,包括:
日志采集模块,用于采集待存储的日志数据;
日志临时存储模块,用于将采集的日志数据写入内存文件系统;
日志持...

【专利技术属性】
技术研发人员:周晓庆沈震宇张志雄魏亮
申请(专利权)人:中国工商银行股份有限公司
类型:发明
国别省市:北京;11

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1