预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

在线预览结束,喜欢就下载吧,查找使用更方便

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

(19)国家知识产权局(12)发明专利申请(10)申请公布号CN115858485A(43)申请公布日2023.03.28(21)申请号202211562817.9(22)申请日2022.12.07(71)申请人天翼云科技有限公司地址100010北京市东城区青龙胡同甲1号、3号2幢2层205-32室(72)发明人张国豪(51)Int.Cl.G06F16/18(2019.01)G06F9/448(2018.01)G06F3/06(2006.01)权利要求书2页说明书5页附图2页(54)发明名称一种基于内存映射的异步日志构建方法和系统(57)摘要本发明公开了一种基于内存映射的异步日志构建方法和系统,涉及互联网技术领域。该基于内存映射的异步日志构建方法,有效提升了传统日志库的性能,提高了日志库的可靠性,提供了一种简单易用的日志框架,使用异步模式可以解决传统同步日志库的性能问题,异步模式使用双buffer缓冲的设计,提高了传统异步日志的性能;基于mmap内存映射的存储模块,解决了传统日志库需要反复进行系统调用的问题,通过实现内存与文件的相互映射,实现日志文件的高性能读写与日志不丢失,并且设计接口支持自定义输出的设计,用户可通过注册日志输出,使用自定义的日志输出,解决日志库只能写日志文件的问题,接口简单易用,可快速应用于各种系统。CN115858485ACN115858485A权利要求书1/2页1.一种基于内存映射的异步日志构建方法,其特征在于:包括以下方法步骤:S1:设计一个buffer接收日志,每当buffer满了,推进一个vector结构的buffers1,日志线程同样维护一个vector结构的buffers2;S2:打开日志文件对应的套接字,调用系统函数mmap,根据配置文件初始化内存,将该内存与日志文件映射;S3:将buffers2中的日志写到该内存中,每次记录已写大小,当超过配置的阈值时,进入日志滚动模块;S4:在当前日志即将大于该映射内存的情况下,触发mmap扩容机制;将该映射内存写满,计算出剩余日志,调用系统函数munmap解除映射关系,计算好偏移量,初始化新内存与文件进行映射,并且将当前未写完的日志补上。2.根据权利要求1所述的方法,其特征在于:所述S1中buffer2用于日志线程的写日志,buffer1继续接收生产者日志的buffer。3.根据权利要求1所述的方法,其特征在于:支持C语言代码风格与C++stream<<风格代码,其中C语言代码风格包括logError("hereiserrorlog."),C++日志流代码风格包括LOG_ERROR<<“hereiserrorlog.”,同时使用匿名对象,在析构时将日志信息传给C函数。4.一种基于内存映射的异步日志构建系统,其特征在于:包括:日志接收模块,用于设计一个buffer接收日志,每当buffer满了,推进一个vector结构的buffers1,日志线程同样维护一个vector结构的buffers2;日志映射模块,用于打开日志文件对应的套接字,调用系统函数mmap,根据配置文件初始化内存,将该内存与日志文件映射;日志写入模块,用于将buffers2中的日志写到该内存中,每次记录已写大小,当超过配置的阈值时,进入日志滚动模块;扩容模块,用于在当前日志即将大于该映射内存的情况下,触发mmap扩容机制;将该映射内存写满,计算出剩余日志,调用系统函数munmap解除映射关系,计算好偏移量,初始化新内存与文件进行映射,并且将当前未写完的日志补上。5.根据权利要求4所述的系统,其特征在于,还包括:异步日志模块,用于在异步模式下,作为一个多生产者单消费者模型,且后端维护一个专门用于写日志的日志线程;存储模块,用于将一个文件或者其它对象映射到进程的地址空间,实现文件磁盘地址和进程虚拟地址空间中一段虚拟地址的一一对映关系;注册模块,底层维护一个哈希表,其中日志输出为一个虚类,提供给用户注册新的自定义输出方式,同时可继承该虚类,添加新的日志输出方式,并注册到哈希表中;日志滚动模块,用于当前日志文件写入日志大小超过配置的阈值,则写入下一个日志文件,底层维护一个队列,保持该服务中只有规定数量与规定大小的日志文件。6.根据权利要求5所述的系统,其特征在于:所述存储模块中mmap是一种内存映射文件的方法。7.根据权利要求5所述的系统,其特征在于:所述存储模块均设置reset接口,提供日志滚动时的重置。8.根据权利要求5所述的系统,其特征在于:所述存储模块中实现映射关系后,进程可2CN115858485A权利要求书2/2页采用指针的方式读写操作这一段内存,通过系统自动回写到对应的文件磁盘上,可完成对文件的操作而不必再调用read,write等系统调用函数。9.根据权利要求5所述的系统,其特征