一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种提高分布式对象存储系统中桶日志性能的方法及系统与流程

2022-06-01 12:50:22 来源:中国专利 TAG:


1.本技术涉及分布式存储性能技术领域,特别是涉及一种提高分布式对象存储系统中桶日志性能的方法及系统。


背景技术:

2.分布式存储是指一组计算机节点,通过网络进行通信,互相协调共同提供存储服务。在分布式对象存储中,主要操作对象是object(对象),用户通常需要对桶的所有操作进行记录,而桶日志可以实现这种记录功能。当开启桶日志功能时,针对当前桶的每次操作都会按照固定的格式进行摘要记录,并支持日志导出。因此,分布式对象存储系统中的桶日志性能,是影响分布式存储服务效率的重要因素。
3.目前,分布式对象存储系统中的桶日志性能,通常表现在:将桶日志记录存储在rados对象的data数据部分,每次请求过来,都会对该rados对象进行加锁。具体地,开启桶日志功能后,客户端每次对桶的读写以及其他操作,对象存储网关都要在处理操作完成后再对rados存储层进行一次写入操作。
4.然而,目前的分布式对象存储系统桶日志性能中,由于将桶日志记录存储在rados对象的data数据部分,相当于多了一次io(input/output,输入输出),使得桶日志性能明显下降。而且,在分布式存储系统中,当客户端针对一个桶的业务访问量较大时,会出现不同节点的业务网关每次请求都要向同一个日志对象中追加写日志记录,在写日志之前需要拿到该日志对象的对象锁,这就会导致等锁现象,导致性能进一步下降。另外,由于不同节点的业务网关每次请求都要向同一个日志对象中追加日志记录,从而有导致日志顺序可能不以时间顺序进行保存,为后续进行日志查看带来不便。因此,目前的分布式对象存储系统桶日志性能不够高,有待优化。


技术实现要素:

5.本技术提供了一种提高分布式对象存储系统中桶日志性能的方法及系统,以解决现有技术中分布式对象存储系统桶日志性能不够高的问题。
6.为了解决上述技术问题,本技术实施例公开了如下技术方案:
7.一种提高分布式对象存储系统中桶日志性能的方法,所述方法包括:
8.分布式对象存储网关启动时,初始化一个全局数据结构,所述全局数据结构可被当前所有业务线程访问;
9.根据当前业务线程对客户端的访问请求处理结果,摘取访问请求的请求信息,所述请求信息包括:请求时间、请求类型、桶名以及状态码;
10.根据所述全局数据结构和请求信息,构建桶日志对象的omap结构的map形式;
11.利用桶日志rados对象的omap结构存储桶日志记录。
12.可选地,根据所述全局数据结构和请求信息,构建桶日志对象的omap结构的map形式的方法,包括:
13.利用请求信息中的请求类型、桶名以及状态码填充所述全局数据结构;
14.将所述全局数据结构定义为value值,将请求时间定义为key值,组成《key,value》的map形式;
15.将所述map形式插入桶日志rados对象的omap结构中。
16.可选地,利用桶日志rados对象的omap结构存储桶日志记录之后,所述方法还包括:
17.每天在设定的时间段内,利用特定的线程对所述桶日志rados对象进行转移。
18.可选地,所述每天在设定的时间段内,利用特定的线程对所述桶日志rados对象进行转移,包括:
19.每天在设定的时间段内,利用特定的线程依次读取所述桶日志rados对象的omap结构中所记录的信息;
20.将所记录的信息写入一日志文件中;
21.通过http协议将所述日志文件发送至相应的当前业务线程;
22.所述当前业务线程将所述日志文件上传至指定的目的桶。
23.可选地,所述分布式对象存储系统中的存储协议为s3。
24.一种提高分布式对象存储系统中桶日志性能的系统,所述系统包括:
25.初始化模块,用于在分布式对象存储网关启动时,初始化一个全局数据结构,所述全局数据结构可被当前所有业务线程访问;
26.请求信息摘取模块,用于根据当前业务线程对客户端的访问请求处理结果,摘取访问请求的请求信息,所述请求信息包括:请求时间、请求类型、桶名以及状态码;
27.map形式构建模块,用于根据所述全局数据结构和请求信息,构建桶日志对象的omap结构的map形式;
28.存储模块,用于利用桶日志rados对象的omap结构存储桶日志记录。
29.可选地,所述map形式构建模块包括:
30.填充单元,用于利用请求信息中的请求类型、桶名以及状态码填充所述全局数据结构;
31.定义单元,用于将所述全局数据结构定义为value值,将请求时间定义为key值,组成《key,value》的map形式;
32.插入单元,用于将所述map形式插入桶日志rados对象的omap结构中。
33.可选地,所述系统中还包括:
34.转移模块,用于每天在设定的时间段内,利用特定的线程对所述桶日志rados对象进行转移。
35.可选地,所述转移模块包括:
36.读取单元,用于每天在设定的时间段内,利用特定的线程依次读取所述桶日志rados对象的omap结构中所记录的信息;
37.写入单元,用于将所记录的信息写入一日志文件中;
38.发送单元,用于通过http协议将所述日志文件发送至相应的当前业务线程;
39.上传单元,用于所述当前业务线程将所述日志文件上传至指定的目的桶。
40.本技术的实施例提供的技术方案可以包括以下有益效果:
41.本技术提供一种提高分布式对象存储系统中桶日志性能的方法,该方法首先在分布式对象存储网关启动时初始化一个全局数据结构,其次根据当前业务线程对客户端的访问请求处理结果,摘取访问请求的请求信息,然后根据全局数据结构和请求信息,构建桶日志对象的omap结构的map形式,利用桶日志rados对象的omap结构存储桶日志记录。从而实现将日志记录从rados对象的data部分,保存至rados对象的omap部分,由于omap部分是map的结构形式,所以不需要加锁,且map结构会自动排序,从而解决日志记录时间顺序不一致的问题,进而大大提高分布式对象存储系统的桶日志性能。
42.本技术还提供一种提高分布式对象存储系统中桶日志性能的系统,该系统主要包括:初始化模块、请求信息摘取模块、map形式构建模块和存储模块。通过初始化模块能够在分布式对象存储网关启动时初始化一个全局数据结构entry_log,通过请求信息摘取模块,能够根据当前业务线程对客户端的访问请求处理结果,摘取访问请求的请求信息,然后利用map形式构建模块,根据全局数据结构和请求信息,构建桶日志对象的omap结构的map形式,最后利用存储模块存储桶日志记录,该存储模块利用桶日志rados对象的omap结构进行桶日志记录。本技术通过map形式构建模块和存储模块的设置,将日志记录的存储地址从rados对象的data部分,转移至rados对象的omap部分,能够避免加锁,从而大大提高桶日志性能,且map结构会自动排序,从而解决日志记录时间顺序不一致的问题,进而大大提高分布式对象存储系统的桶日志性能。
43.应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本技术。
附图说明
44.此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本技术的实施例,并与说明书一起用于解释本技术的原理。
45.为了更清楚地说明本技术实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
46.图1为本技术实施例所提供的一种提高分布式对象存储系统中桶日志性能的方法的流程示意图;
47.图2为本技术实施例所提供的一种提高分布式对象存储系统中桶日志性能的系统的结构示意图。
具体实施方式
48.为了使本技术领域的人员更好地理解本技术中的技术方案,下面将结合本技术实施例中的附图,对本技术实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本技术一部分实施例,而不是全部的实施例。基于本技术中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本技术保护的范围。
49.为了更好地理解本技术,下面结合附图来详细解释本技术的实施方式。
50.实施例一
51.参见图1,图1为本技术实施例所提供的一种提高分布式对象存储系统中桶日志性能的方法的流程示意图。由图1可知,本实施例中提高分布式对象存储系统中桶日志性能的方法,主要包括如下过程:
52.s1:分布式对象存储网关启动时,初始化一个全局数据结构。
53.本发明中的全局数据结构entry_log可被当前所有业务线程访问。
54.网关服务,是指对象存储系统提供的基于当前流行的restful协议的网关,兼容amazon s3和openstack swift两种接口,它把客户端符合s3协议或swift协议的http请求解析、转换、处理后发送给数据存储层,并将数据存储层返回的数据发送给客户端,以供相应的对象存储的客户端开发使用。桶日志功能作为对象存储的特性,往往是在网关层实现。
55.存储系统部署时,会在存储的log池中创建一个名字为bl的空间。生成的桶日志rados对象,都会保存在该空间里面。默认情况下,每一小时产生一个桶日志rados对象。rados对象为rados层存储数据的基本单位,区别于对象存储的对象。rados层是分布式存储系统的数据存储层,用于完成存储系统的核心功能。
56.本实施例中分布式对象存储系统中的存储协议为s3。
57.继续参见图1可知,初始化一个全局数据结构之后,执行步骤s2:根据当前业务线程对客户端的访问请求处理结果,摘取访问请求的请求信息。其中,请求信息包括:请求时间、请求类型、桶名以及状态码。
58.也就是业务线程在处理完客户端的访问请求之后,摘取出相关的请求信息。
59.s3:根据全局数据结构和请求信息,构建桶日志对象的omap结构的map形式。
60.具体地,步骤s3包括如下过程:
61.s31:利用请求信息中的请求类型、桶名以及状态码填充全局数据结构entry_log。
62.s32:将全局数据结构定义为value值,将请求时间定义为key值,组成《key,value》的map形式。
63.全局数据结构entry_log为一个结构体,填充该全局数据结构entry_log之后,把该全局数据结构entry_log作为value值,将请求时间定义为key值,组成《key,value》的map形式。
64.s33:将map形式插入桶日志rados对象的omap结构中。
65.利用以上步骤s31-s33,能够将桶日志记录从rados对象的data数据部分转移至rados对象的omap部分,每次写日志之前不需要拿到该日志对象的对象锁,而且在不同节点业务网关向同一个日志对象追加日志记录时能够避免等锁过程,有利于提高桶日志性能。
66.继续参见图1可知,构建桶日志对象的omap结构的map形式之后,执行步骤s4:利用桶日志rados对象的omap结构存储桶日志记录。
67.进一步地,步骤s4之后,还包括步骤s5:每天在设定的时间段内,利用特定的线程对桶日志rados对象进行转移。
68.通过以上步骤s1-s4,搭建完成桶日志rados对象的omap结构之后。当用户有需求查看桶日志对象时,根据步骤s5,由桶日志记录生成的rados对象,每天会有一个单独的线程进行rados对象的转移。
69.具体地,步骤s5包括如下过程:
70.s51:每天在设定的时间段内,利用特定的线程依次读取桶日志rados对象的omap
结构中所记录的信息。
71.s52:将所记录的信息写入一日志文件中。
72.s53:通过http协议将日志文件发送至相应的当前业务线程。
73.s54:当前业务线程将日志文件上传至指定的目的桶。
74.根据以上步骤s51-s54,设定的时间段可以是00:00-06:00,由桶日志记录生成的rados对象,每天会有一个单独的线程进行rados对象的转移,从而把桶日志rados对象中的omap部分记录的信息依次读出来,并写入到一个日志文件中,最后通过http协议发送至业务线程,该业务线程会把该日志文件上传至指定的目的桶里面。后续就可以通过s3协议从桶中下载该日志文件,对日志进行的分析。步骤s5的设置,能够进一步提高分布式对象存储系统中桶日志性能,实现分布式对象存储系统中桶日志性能的进一步优化。
75.综上所述,本实施例通过将构建桶日志对象的omap结构的map形式,利用桶日志rados对象的omap结构存储桶日志记录,从而改变桶日志记录的保存地方,由data部分转移至omap部分,利用omap部分写入时不需要加锁的特征,并且会自动排序的特性,能够有效优化桶日志性能,避免现有技术中的桶日志性能所导致的对象集群读写性能下降和日志记录时间顺序不一致的问题,有利于优化桶日志功能开启后对性能和桶日志记录时间顺序不一致的问题。
76.实施例二
77.在图1所示实施例的基础上参见图2,图2为本技术实施例所提供的一种提高分布式对象存储系统中桶日志性能的系统的结构示意图。由图2可知,本实施例中提高分布式对象存储系统中桶日志性能的系统,主要包括:初始化模块、请求信息摘取模块、map形式构建模块和存储模块。
78.其中,初始化模块,用于在分布式对象存储网关启动时,初始化一个全局数据结构,全局数据结构可被当前所有业务线程访问;请求信息摘取模块,用于根据当前业务线程对客户端的访问请求处理结果,摘取访问请求的请求信息,请求信息包括:请求时间、请求类型、桶名以及状态码;map形式构建模块,用于根据全局数据结构和请求信息,构建桶日志对象的omap结构的map形式;存储模块,用于利用桶日志rados对象的omap结构存储桶日志记录。
79.map形式构建模块包括:填充单元、定义单元和插入单元。其中,填充单元,用于利用请求信息中的请求类型、桶名以及状态码填充全局数据结构;定义单元,用于将全局数据结构定义为value值,将请求时间定义为key值,组成《key,value》的map形式;插入单元,用于将map形式插入桶日志rados对象的omap结构中。
80.进一步地,该提高分布式对象存储系统中桶日志性能的系统中还包括转移模块,用于每天在设定的时间段内,利用特定的线程对桶日志rados对象进行转移。
81.转移模块包括:读取单元、写入单元、发送单元和上传单元。其中,读取单元,用于每天在设定的时间段内,利用特定的线程依次读取桶日志rados对象的omap结构中所记录的信息;写入单元,用于将所记录的信息写入一日志文件中;发送单元,用于通过http协议将日志文件发送至相应的当前业务线程;上传单元,用于当前业务线程将日志文件上传至指定的目的桶。
82.本实施例中提高分布式对象存储系统中桶日志性能的系统的工作原理和工作方
法,在图1所示的实施例中已经详细阐述,在此不再赘述。
83.以上所述仅是本技术的具体实施方式,使本领域技术人员能够理解或实现本技术。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本技术的精神或范围的情况下,在其它实施例中实现。因此,本技术将不会被限制于本文所示的这些实施例,而是要符合与本文所公开的原理和新颖特点相一致的最宽的范围。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献