一种提升云容器引擎元数据完整性的方法与流程

未命名 10-19 阅读:97 评论:0


1.本发明涉及云计算技术领域,具体的说是一种提升云容器引擎元数据完整性的方法。


背景技术:

2.kubernetes云容器引擎是一个可移植,可扩展的开源容器集群管理平台,其用于管理容器化的工作负载和服务,可以实现容器集群的自动化部署、自动扩缩容、维护等功能。kubernetes云容器引擎中,采用etcd这一强一致且高度可用的分布式键值存储系统,作为所有元数据的后台数据库。
3.etcd是一个分布式键值存储系统,用于共享配置和服务发现及多版本键值数据存储。etcd采用go语言编写,具有出色的跨平台支持,各成员节点之间通过raft算法保持强一致性。因raft算法的强一致性要求,使etcd对磁盘io性能比较敏感,在将一些存储性能较差的计算资源交由kubernetes集群管理时,会出现etcd变更应用耗时长、频繁切换leader的现象。
4.为提升运行在磁盘io性能较差的计算资源的etcd集群性能,etcd在v3.5版本加入了unsafe-no-fsync特性。这一特性,使etcd集群在磁盘io性能较差的环境上表现出的各项指标得到了性能提升。这一特性虽然提升了集群请求处理性能,但也同时增加了数据丢失的风险,即wal(write ahead logging)文件及etcd的db文件均由同步落盘变更为异步落盘。
5.在一些磁盘io性能较差的计算资源交由kubernetes集群管理时,如何在即能提升集群请求处理性能的同时又提升集群元数据的完整性,是目前本领域技术人员亟待解决的问题。


技术实现要素:

6.本发明针对目前技术发展的需求和不足之处,提供一种提升云容器引擎元数据完整性的方法,可以实现在提高云容器引擎元数据存储程序请求处理性能的同时又提升了元数据的完整性。
7.本发明的一种提升云容器引擎元数据完整性的方法,解决上述技术问题采用的技术方案如下:
8.一种提升云容器引擎元数据完整性的方法,包括如下步骤:
9.s1、在etcd程序server端embed包配置文件的config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段a,实现通过字段a控制db文件落盘方式;
10.s2、在etcd程序的server端etcdmain包配置文件的newconfig函数中实现获取程序启动时用于控制字段a的启动参数b或环境变量c的参数值d,并将参数值d赋值给函数中声明创建的embed包配置文件的config结构体中的字段a;
11.s3、在etcd程序的server端config包配置文件的serverconfig结构体中引入相应
字段e,用于在embed包中startetcd函数中声明创建serverconfig结构体时,同步将在etcdmain包中newconfig函数声明创建的config结构体a值赋予字段e;
12.s4、在etcd程序的server端etcdserver包中初始化后端存储引擎的newbackend函数中,根据传入的server端config包的serverconfig结构体字段e的值,控制存储引擎backend.defaultbackendconfig()函数创建的存储引擎配置是否启用unsafenofsync特性。
13.可选的,执行步骤s1,在etcd程序server端embed包配置文件的config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段a是指:
14.在config结构体中新增一个字段a,该字段a为布尔类型。
15.可选的,执行步骤s2,在server端etcdmain包配置文件的newconfig函数中实现获取程序启动时用于控制参数字段a的启动参数b或环境变量c的参数值d是指:
16.在newconfig函数中设定一个标志参数,并声明标志参数的参数值d由程序启动参数b或环境变量c中获取,并将获取的参数值d赋值于函数中声明创建的embed包配置文件的config结构体中新增的字段a。
17.进一步可选的,标志参数类型为布尔类型,标志参数命名与etcd程序标志参数命名规则保持一致,即多个单词之间以
“‑”
连接;
18.环境变量c为布尔类型,环境变量c命名与etcd程序环境变量命名规则保持一致,即将标志参数所有单词字母转用大写字母,单词之间以“_”连接。
19.可选的,执行步骤s3,在etcd程序server端config包配置文件的serverconfig结构体中引入相应字段e是指:
20.在serverconfig结构体中新增一个字段e,该字段e为布尔类型。
21.可选的,执行步骤s4,在newbackend函数中,将serverconfig结构体变量参数字段unsafenofsync赋值于存储引擎配置变量字段unsafenofsync后,根据serverconfig结构体变量参数字段e的值判断是否需重新设置存储引擎配置变量字段unsafenofsync值。
22.进一步可选的,serverconfig结构体变量字段e为字段类型零值时,不改变存储引擎字段unsafenofsync已获取值。
23.可选的,etcd程序在开启unsafenofsync特性、且开启db文件启用fsync同步落盘参数时,集群leader在接受到客户端写请求时,将wal日志文件异步分发到各follower节点,各follower节点因wal日志文件写入磁盘采用异步落盘方式;
24.当写请求被提交到状态机并写入到db文件时,因db文件采取同步落盘方式,文件写入后将立即调用系统fsync接口将文件缓存同步到磁盘中,保证了db文件与事务始终保持一致,提升了元数据的完整性。
25.本发明的一种提升云容器引擎元数据完整性的方法,与现有技术相比具有的有益效果是:
26.(1)本发明基于etcd集群成员数据同步技术,用软件化的方式定义新的参数用于控制etcd程序db文件的落盘方式,实现了启用etcd的unsafenofsync特性时既能在提升etcd集群请求处理吞吐性能的同时,又在一定程度上提升了db文件元数据的完整性;
27.(2)本发明尤其在计算资源磁盘io性能不理想时,提升效果愈加明显,实用性强,适用范围广泛,易于推广,且其实现过程中对etcd程序代码逻辑侵入性低,对程序其他功能
基本没有影响。
附图说明
28.附图1是本发明实施例一的方法流程图。
具体实施方式
29.为使本发明的技术方案、解决的技术问题和技术效果更加清楚明白,以下结合具体实施例,对本发明的技术方案进行清楚、完整的描述。
30.实施例一:
31.结合附图1,本实施例提出一种提升云容器引擎元数据完整性的方法,包括如下步骤:
32.s1、在etcd程序server端embed包配置文件的config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段a,实现通过字段a控制db文件落盘方式。
33.在etcd程序server端embed包配置文件的config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段a是指:
34.在config结构体中新增一个字段a,该字段a为布尔类型。
35.s2、在etcd程序的server端etcdmain包配置文件的newconfig函数中实现获取程序启动时用于控制字段a的启动参数b或环境变量c的参数值d,并将参数值d赋值给函数中声明创建的embed包配置文件的config结构体中的字段a。
36.在server端etcdmain包配置文件的newconfig函数中实现获取程序启动时用于控制参数字段a的启动参数b或环境变量c的参数值d是指:
37.在newconfig函数中设定一个标志参数,并声明标志参数的参数值d由程序启动参数b或环境变量c中获取,并将获取的参数值d赋值于函数中声明创建的embed包配置文件的config结构体中新增的字段a。
38.标志参数类型为布尔类型,标志参数命名与etcd程序标志参数命名规则保持一致,即多个单词之间以
“‑”
连接;
39.环境变量c为布尔类型,环境变量c命名与etcd程序环境变量命名规则保持一致,即将标志参数所有单词字母转用大写字母,单词之间以“_”连接。
40.s3、在etcd程序的server端config包配置文件的serverconfig结构体中引入相应字段e,用于在embed包中startetcd函数中声明创建serverconfig结构体时,同步将在etcdmain包中newconfig函数声明创建的config结构体a值赋予字段e。
41.在etcd程序server端config包配置文件的serverconfig结构体中引入相应字段e是指:
42.在serverconfig结构体中新增一个字段e,该字段e为布尔类型。
43.s4、在etcd程序的server端etcdserver包中初始化后端存储引擎的newbackend函数中,根据传入的server端config包的serverconfig结构体字段e的值,控制存储引擎backend.defaultbackendconfig()函数创建的存储引擎配置是否启用unsafenofsync特性。
44.执行步骤s4,在newbackend函数中,将serverconfig结构体变量参数字段
unsafenofsync赋值于存储引擎配置变量字段unsafenofsync后,根据serverconfig结构体变量参数字段e的值判断是否需重新设置存储引擎配置变量字段unsafenofsync值。
45.serverconfig结构体变量字段e为字段类型零值时,不改变存储引擎字段unsafenofsync已获取值。
46.基于本实施例的方法,etcd程序在开启unsafenofsync特性、且开启db文件启用fsync同步落盘参数时,集群leader在接受到客户端写请求时,将wal日志文件异步分发到各follower节点,各follower节点因wal日志文件写入磁盘采用异步落盘方式;
47.当写请求被提交到状态机并写入到db文件时,因db文件采取同步落盘方式,文件写入后将立即调用系统fsync接口将文件缓存同步到磁盘中,保证了db文件与事务始终保持一致,提升了元数据的完整性。
48.综上可知,采用本发明的一种提升云容器引擎元数据完整性的方法,可以实现在提高云容器引擎元数据存储程序请求处理性能的同时又提升了元数据的完整性。
49.以上应用具体个例对本发明的原理及实施方式进行了详细阐述,这些实施例只是用于帮助理解本发明的核心技术内容。基于本发明的上述具体实施例,本技术领域的技术人员在不脱离本发明原理的前提下,对本发明所作出的任何改进和修饰,皆应落入本发明的专利保护范围。

技术特征:
1.一种提升云容器引擎元数据完整性的方法,其特征在于,包括如下步骤:s1、在etcd程序server端embed包配置文件的config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段a,实现通过字段a控制db文件落盘方式;s2、在etcd程序的server端etcdmain包配置文件的newconfig函数中实现获取程序启动时用于控制字段a的启动参数b或环境变量c的参数值d,并将参数值d赋值给函数中声明创建的embed包配置文件的config结构体中的字段a;s3、在etcd程序的server端config包配置文件的serverconfig结构体中引入相应字段e,用于在embed包中startetcd函数中声明创建serverconfig结构体时,同步将在etcdmain包中newconfig函数声明创建的config结构体a值赋予字段e;s4、在etcd程序的server端etcdserver包中初始化后端存储引擎的newbackend函数中,根据传入的server端config包的serverconfig结构体字段e的值,控制存储引擎backend.defaultbackendconfig()函数创建的存储引擎配置是否启用unsafenofsync特性。2.根据权利要求1所述的一种提升云容器引擎元数据完整性的方法,其特征在于,执行步骤s1,在etcd程序server端embed包配置文件的config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段a是指:在config结构体中新增一个字段a,该字段a为布尔类型。3.根据权利要求1所述的一种提升云容器引擎元数据完整性的方法,其特征在于,执行步骤s2,在server端etcdmain包配置文件的newconfig函数中实现获取程序启动时用于控制参数字段a的启动参数b或环境变量c的参数值d是指:在newconfig函数中设定一个标志参数,并声明标志参数的参数值d由程序启动参数b或环境变量c中获取,并将获取的参数值d赋值于函数中声明创建的embed包配置文件的config结构体中新增的字段a。4.根据权利要求3所述的一种提升云容器引擎元数据完整性的方法,其特征在于,标志参数类型为布尔类型,标志参数命名与etcd程序标志参数命名规则保持一致,即多个单词之间以
“‑”
连接;环境变量c为布尔类型,环境变量c命名与etcd程序环境变量命名规则保持一致,即将标志参数所有单词字母转用大写字母,单词之间以“_”连接。5.根据权利要求1所述的一种提升云容器引擎元数据完整性的方法,其特征在于,执行步骤s3,在etcd程序server端config包配置文件的serverconfig结构体中引入相应字段e是指:在serverconfig结构体中新增一个字段e,该字段e为布尔类型。6.根据权利要求1所述的一种提升云容器引擎元数据完整性的方法,其特征在于,执行步骤s4,在newbackend函数中,将serverconfig结构体变量参数字段unsafenofsync赋值于存储引擎配置变量字段unsafenofsync后,根据serverconfig结构体变量参数字段e的值判断是否需重新设置存储引擎配置变量字段unsafenofsync值。7.根据权利要求6所述的一种提升云容器引擎元数据完整性的方法,其特征在于,serverconfig结构体变量字段e为字段类型零值时,不改变存储引擎字段unsafenofsync已获取值。
8.根据权利要求1所述的一种提升云容器引擎元数据完整性的方法,其特征在于,etcd程序在开启unsafenofsync特性、且开启db文件启用fsync同步落盘参数时,集群leader在接受到客户端写请求时,将wal日志文件异步分发到各follower节点,各follower节点因wal日志文件写入磁盘采用异步落盘方式;当写请求被提交到状态机并写入到db文件时,因db文件采取同步落盘方式,文件写入后将立即调用系统fsync接口将文件缓存同步到磁盘中,保证了db文件与事务始终保持一致,提升了元数据的完整性。

技术总结
本发明公开一种提升云容器引擎元数据完整性的方法,涉及云计算技术领域,包括:在etcd程序server端,embed包配置文件的Config结构体中引入db文件是否启用fsync同步落盘开关启动参数字段A;etcdmain包配置文件的newConfig函数中实现获取程序启动时用于控制字段A的启动参数B或环境变量C的参数值D,并将D赋值给A;在config包配置文件的ServerConfig结构体中引入相应字段E,将A值赋于E;在etcdserver包中初始化后端存储引擎的newBackend函数中,根据传入的E值,控制存储引擎backend.DefaultBackendConfig()函数创建的存储引擎配置是否启用UnsafeNoFsync特性。本发明可以实现在提高云容器引擎元数据存储程序请求处理性能的同时又提升了元数据的完整性。性。性。


技术研发人员:韩坤 王文岗 石光银 蔡卫卫 高传集
受保护的技术使用者:浪潮云信息技术股份公司
技术研发日:2023.06.30
技术公布日:2023/10/15
版权声明

本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)

飞行汽车 https://www.autovtol.com/

分享:

扫一扫在手机阅读、分享本文

相关推荐