CN113238924A - 分布式图数据库系统中的混沌工程实现方法和系统 - Google Patents

分布式图数据库系统中的混沌工程实现方法和系统 Download PDF

Info

Publication number
CN113238924A
CN113238924A CN202110385220.0A CN202110385220A CN113238924A CN 113238924 A CN113238924 A CN 113238924A CN 202110385220 A CN202110385220 A CN 202110385220A CN 113238924 A CN113238924 A CN 113238924A
Authority
CN
China
Prior art keywords
target
graph database
engineering test
test plan
chaotic
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.)
Granted
Application number
CN202110385220.0A
Other languages
English (en)
Other versions
CN113238924B (zh
Inventor
王辰光
吴敏
陈恒
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Ouruozhi Technology Co ltd
Original Assignee
Hangzhou Ouruozhi Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Ouruozhi Technology Co ltd filed Critical Hangzhou Ouruozhi Technology Co ltd
Priority to CN202110385220.0A priority Critical patent/CN113238924B/zh
Publication of CN113238924A publication Critical patent/CN113238924A/zh
Application granted granted Critical
Publication of CN113238924B publication Critical patent/CN113238924B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/362Software debugging
    • G06F11/366Software debugging using diagnostics
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/0703Error or fault processing not based on redundancy, i.e. by taking additional measures to deal with the error or fault not making use of redundancy in operation, in hardware, or in data representation
    • G06F11/0793Remedial or corrective actions
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/36Preventing errors by testing or debugging software
    • G06F11/3668Software testing
    • G06F11/3672Test management
    • G06F11/3684Test management for test design, e.g. generating new test cases
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/901Indexing; Data structures therefor; Storage structures
    • G06F16/9024Graphs; Linked lists
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5083Techniques for rebalancing the load in a distributed system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Abstract

本申请涉及一种分布式图数据库系统中的混沌工程实现方法和系统,通过根据分布式图数据库的目标实验场景确定目标实验场景对应的目标故障类型,根据目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;执行目标混沌工程测试计划,获取执行结果,若执行结果不符合预期结果,则对分布式图数据库系统进行修复,执行目标混沌工程测试计划包括:根据目标混沌工程测试计划与图数据库系统进行交互,在图数据系统中制造混沌,检查图数据库系统的状态,通过不断运行混沌工程测试计划,在图数据库中制造混沌,从而发现图数据库开发过程中的故障,提高系统鲁棒性,解决了分布式图数据库系统存在很多的故障情况,鲁棒性低的问题。

Description

分布式图数据库系统中的混沌工程实现方法和系统
技术领域
本申请涉及分布式系统技术领域,特别是涉及分布式图数据库系统中的混沌工程实现方法和系统。
背景技术
随着大数据和人工智能的迅猛发展,超大规模关系网络逐步在社交推荐、风险控制、物联网、区块链、安全防控领域被广泛使用,而作为所有这些应用的技术基石,大规模分布式关系网络的存储和计算平台越来越受到学术界和工业界的关注。
图数据库为其中一种大规模分布式系统,分布式系统需要面对很多故障情况,包括输入错误、硬盘故障、网络过载,操作系统崩溃、网卡故障,交换机故障,网络卡顿,部分服务器掉电,进程退出,OOM和服务器之间时钟不同步,这样一系列的故障排列组合以万计,难以通过人工分析的方式一一排查验证,导致分布式图数据库系统鲁棒性低。
目前针对相关技术中分布式图数据库系统存在很多的故障情况,鲁棒性低的问题,尚未提出有效的解决方案。
发明内容
本申请实施例提供了一种分布式图数据库系统中的混沌工程实现方法和系统,以至少解决相关技术中分布式图数据库系统存在很多的故障情况,鲁棒性低的问题。
第一方面,本申请实施例提供了一种分布式图数据库系统中的混沌工程实现方法,所述方法包括:
根据分布式图数据库系统的目标实验场景确定所述目标实验场景对应的目标故障类型,根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;
执行所述目标混沌工程测试计划,获取执行结果,若所述执行结果不符合预期结果,则对所述分布式图数据库系统进行修复,执行所述目标混沌工程测试计划包括:
根据所述目标混沌工程测试计划与所述分布式图数据库系统进行交互,在所述图数据系统中制造混沌,检查所述分布式图数据库系统的状态。
在其中一些实施例中,根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划之前,所述方法还包括:
定义基本执行单元,所述基本执行单元包括一个动作和一组参数,其中,所述基本执行单元用于说明对于某个目标进行何种动作;
根据故障类型,创建混沌工程测试计划,其中,所述混沌工程测试计划包括多个所述基本执行单元。
在其中一些实施例中,所述根据故障类型,创建混沌工程测试计划包括:
启动图数据库服务器进程,并等待所述图数据库服务器初始化完成,其中所述图数据库服务器包括元数据服务器、存储服务器和查询服务器;
创建客户端连接,并通过客户端连接所述查询服务器;
通过图查询语言创建图空间和图结构;
执行主副本负载均衡任务,并检查负载均衡任务结果,确保主副本在集群中分布均衡;
根据所述故障类型设置混沌测试用例;
运行所述混沌测试用例;
检查所述分布式图数据库系统的状态;
关闭所述图数据库服务器进程。
在其中一些实施例中,执行所述目标混沌工程测试计划,获取执行结果包括:
周期性执行所述目标混沌工程测试计划,获取执行结果,并将所述执行结果发送至相关人员。
在其中一些实施例中,根据故障类型,创建混沌工程测试计划,其中,所述混沌工程测试计划包括多个所述基本执行单元包括:
多个所述基本执行单元之间通过有向无环图的方式组合,得到所述混沌工程测试计划,所述混沌工程测试计划以文件的方式存储,用Json的方式来描述多个所述基本执行单元之间的依赖关系。
第二方面,本申请实施例提供了分布式图数据库系统中的混沌工程实现系统,所述系统包括获取模块和执行模块,
所述获取模块,用于根据分布式图数据库系统的目标实验场景确定所述目标实验场景对应的目标故障类型,根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;
所述执行模块,用于执行所述目标混沌工程测试计划,获取执行结果,若所述执行结果不符合预期结果,则对所述分布式图数据库系统进行修复,执行所述目标混沌工程测试计划包括:
根据所述目标混沌工程测试计划与所述分布式图数据库系统进行交互,在所述图数据系统中制造混沌,检查所述分布式图数据库系统的状态。
在其中一些实施例中,所述系统还包括定义模块和创建模块,所述获取模块根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划之前,
所述定义模块,用于定义基本执行单元,所述基本执行单元包括一个动作和一组参数,其中,所述基本执行单元用于说明对于某个目标进行何种动作;
所述创建模块,用于根据故障类型,创建混沌工程测试计划,其中,所述混沌工程测试计划包括多个所述基本执行单元。
在其中一些实施例中,所述系统还包括图客户端模块,混沌工程实现系统通过所述图客户端模块访问所述分布式图数据库系统;
所述创建模块根据故障类型,创建混沌工程测试计划包括:
启动图数据库服务器进程,并等待所述图数据库服务器初始化完成,其中所述图数据库服务器包括元数据服务器、存储服务器和查询服务器;
创建客户端连接,并通过客户端连接查询服务;
通过图查询语言创建图空间和图结构;
执行主副本负载均衡任务,并检查负载均衡任务结果,确保主副本在集群中分布均衡;
根据所述故障类型设置混沌测试用例;
运行所述混沌测试用例;
检查所述分布式图数据库系统的状态;
关闭所述图数据库服务器进程。
在其中一些实施例中,所述系统还包括自动化运行模块,
所述自动化运行模块,用于周期性执行所述混沌工程测试计划,获取执行结果,并将所述执行结果发送至相关人员。
在其中一些实施例中,所述创建模块根据故障类型,创建混沌工程测试计划包括:
多个所述基本执行单元之间通过有向无环图的方式组合,得到所述混沌工程测试计划,所述混沌工程测试计划以文件的方式存储,用Json的方式来描述多个所述基本执行单元之间的依赖关系。
相比于相关技术,本申请实施例提供的分布式图数据库系统中的混沌工程实现方法,通过根据分布式图数据库系统的目标实验场景确定目标实验场景对应的目标故障类型,根据目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;执行目标混沌工程测试计划,获取执行结果,若执行结果不符合预期结果,则对分布式图数据库系统进行修复,执行目标混沌工程测试计划包括:根据目标混沌工程测试计划与分布式图数据库系统进行交互,在图数据系统中制造混沌,检查分布式图数据库系统的状态,通过不断运行混沌工程测试计划,在图数据库中制造混沌,从而发现图数据库开发过程中的故障,提高分布式图数据库系统鲁棒性,解决了分布式图数据库系统存在很多的故障情况,鲁棒性低的问题。
附图说明
此处所说明的附图用来提供对本申请的进一步理解,构成本申请的一部分,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:
图1是根据本申请实施例的分布式图数据库系统中的混沌工程实现系统的结构框图;
图2是根据本申请实施例的另一种分布式图数据库系统中的混沌工程实现系统的结构框图;
图3是根据本申请实施例的第三种分布式图数据库系统中的混沌工程实现系统的结构框图;
图4是根据本申请实施例的第一部分混沌工程测试计划的流程图;
图5是根据本申请实施例的第二部分混沌工程测试计划的流程图;
图6是根据本申请实施例的第三部分混沌工程测试计划的流程图;
图7是根据本申请实施例的第四部分混沌工程测试计划的流程图;
图8是根据本申请实施例的第四种分布式图数据库系统中的混沌工程实现系统的结构框图;
图9是根据本申请实施例的分布式图数据库系统中的混沌工程实现方法的流程图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行描述和说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。基于本申请提供的实施例,本领域普通技术人员在没有作出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。此外,还可以理解的是,虽然这种开发过程中所作出的努力可能是复杂并且冗长的,然而对于与本申请公开的内容相关的本领域的普通技术人员而言,在本申请揭露的技术内容的基础上进行的一些设计,制造或者生产等变更只是常规的技术手段,不应当理解为本申请公开的内容不充分。
在本申请中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域普通技术人员显式地和隐式地理解的是,本申请所描述的实施例在不冲突的情况下,可以与其它实施例相结合。
除非另作定义,本申请所涉及的技术术语或者科学术语应当为本申请所属技术领域内具有一般技能的人士所理解的通常意义。本申请所涉及的“一”、“一个”、“一种”、“该”等类似词语并不表示数量限制,可表示单数或复数。本申请所涉及的术语“包括”、“包含”、“具有”以及它们任何变形,意图在于覆盖不排他的包含;例如包含了一系列步骤或模块(单元)的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可以还包括没有列出的步骤或单元,或可以还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。本申请所涉及的“连接”、“相连”、“耦接”等类似的词语并非限定于物理的或者机械的连接,而是可以包括电气的连接,不管是直接的还是间接的。本申请所涉及的“多个”是指大于或者等于两个。“和/或”描述关联对象的关联关系,表示可以存在三种关系,例如,“A和/或B”可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。本申请所涉及的术语“第一”、“第二”、“第三”等仅仅是区别类似的对象,不代表针对对象的特定排序。
在介绍具体的实施例之前,先对本发明实施例所涉及的专业术语进行解释:
鲁棒性(Robustness):描述异常和危险情况下系统的生存能力,也可以称为可用性或健壮性。
分布式系统(distributed system):一种计算机科学中的体系结构,是一种基于网络构建的软件系统,通常为一组搭建在PC服务器和以太网组成的服务集群。
分布式系统的鲁棒性问题:由于分布式系统搭建在廉价硬件设备上(相对于专用主机mainframe),会有一系列可能的硬件和软件故障,需通过一定的方式研究和保证系统鲁棒性。
图(Graph)和图元素:图(Graph)由两种图元素构成—点(vertex,node,节点)和边(edge,relationship,关系),边连接两个点,分别称为起点和终点,点和边还可以有多个属性(property)。图通常可以用来描述社交网络(例如,图中每个点为个人,边为个人之间的好友关系,个人的属性有年龄和性别,好友关系的属性有聊天时长),资金网络(例如,图中每个点为账户,边为账户之间的转账关系,账户的属性有余额,转账关系的属性有转账时间和金额)。
图数据库:图数据库是专门设计用于存储图的一种数据库,不同于传统的关系型数据库,对于图这种数据结构的操作速度特别快。
Nebula Graph:Nebula Graph是一个开源的分布式图数据库,Nebula Graph有三个主要的服务模块,graphd-查询引擎模块,storaged-存储引擎模块,metad-元数据模块,每个模块由一系列Linux进程组成,各个模块也可以单独启动、停止。
混沌工程:混沌工程是一种提高技术架构鲁棒性能力的复杂技术手段,通过主动制造故障,测试系统在各种压力下的行为,识别并修复故障问题,避免造成严重后果。
本实施例提供了一种分布式图数据库系统中的混沌工程实现系统,下述实施例中,将分布式图数据库系统中的混沌工程实现系统称为Nebula Chaos,Nebula Chaos是一套独立部署的自动化运行的系统,图1是根据本申请实施例的分布式图数据库系统中的混沌工程实现系统的结构框图,如图1所示,该系统包括获取模块11和执行模块12,
获取模块11,用于根据分布式图数据库系统的目标实验场景确定目标实验场景对应的目标故障类型,根据目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;本实施例中,分布式系统存在很多的故障情况,有硬盘故障、网络过载,操作系统崩溃、网卡故障,交换机故障,网络卡顿,部分服务器掉电、进程退出和服务器之间时钟不同步等故障,对于图数据库来说,仅仅一条边的存在、不存在或者不可访问,可能会导致整个图拓扑结构的彻底改变,所以分布式系统的鲁棒性更为重要;示例性的,在传染病防控溯源中,某病人与某健康人的一次接触,在图数据库中表现为,构建了该病人与该健康人之间一条新的边,该新的边完全改变了这个健康人和他所在家庭、社群的风险级别,系统中即使是短暂时间丢失这条边也会导致很严重的后果;所以需要针对分布式图数据系统中的目标实验场景确定该目标实验场景对应的目标故障类型,再根据该目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划,每一种故障类型都对应有一个混沌工程测试计划;
执行模块12,用于执行目标混沌工程测试计划,获取执行结果,若执行结果不符合预期结果,则对分布式图数据库系统进行修复,执行目标混沌工程测试计划包括:根据目标混沌工程测试计划与分布式图数据库系统进行交互,在分布式图数据系统中制造混沌,检查图数据库系统的状态。
通过获取模块11获取预先设置的目标混沌工程测试计划,执行模块12执行目标混沌工程测试计划,通过目标混沌工程测试计划与分布式图数据库系统进行交互,在分布式图数据系统中制造混沌,即通过主动制造故障,测试分布式图数据库系统在各种压力下的状态,若执行结果不符合预期结果,则对分布式图数据库系统进行修复,通过识别并修复故障问题,避免造成严重后果,提高了分布式图数据库系统的鲁棒性。
在其中一些实施例中,图2是根据本申请实施例的另一种分布式图数据库系统中的混沌工程实现系统的结构框图,如图2所示,该系统还包括定义模块21和创建模块22,获取模块11根据目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划之前,定义模块21用于定义基本执行单元(NebulaAction),基本执行单元包括一个动作和一组参数,其中,基本执行单元用于说明对于某个目标进行何种动作;本申请共实现了超过40种NebulaAction,部分举例如下:
WaitAction:空转等待给定时间;
StartAction:启动一个服务器进程;
StopAction:停止一个服务器进程;
ClientConnectAction:通过账号、密码连接Nebula Graph,并设置重试次数;
WriteCircleAction:向Nebula Graph写入数据(点、边、属性),设置每个批次数量和重试次数;
WalkThroughAction:从Nebula Graph获取点的属性;
CleanCheckpointAction:通过Linux命令,物理清除Nebula Graph快照文件;
RestoreFromCheckpointAction:通过Linux命令,物理删除wal文件,拷贝快照文件;
CreateSpaceAction:创建一个图空间,可以指定参数包括空间名、副本数、数据分片数量和点ID类型等;
UseSpaceAction:选择一个图空间;
DropSpaceAction:删除一个图空间;
DescSpaceAction:显示一个图空间的详细信息;
CreateSchemaAction:建立一种新的点类型或者一种新的边类型,可以使用IFNOT EXISTS参数;
BalanceLeaderAction:将raft-leader在全集群重新分布,达到平衡(leader数量各主机大体相同);
CheckLeadersAction:显示raft-leader在全集群的分布情况;
CreateCheckpointAction:创建一个Nebula Graph快照。
创建模块22用于根据故障类型,创建混沌工程测试计划,其中,混沌工程测试计划包括多个基本执行单元。本实施例中,针对每一种故障类型,都可以创建一个混沌工程测试计划,混沌工程测试计划(NebulaChaosPlan)是由多个基本执行单元(NebulaAction)组成的一个完整的混沌工程测试计划,多个NebulaAction之间通过有向无环图的方式组合,NebulaChaosPlan以文件的方式存储,用Json的方式来描述各个NebulaAction之间的依赖关系。
在其中一些实施例中,图3是根据本申请实施例的第三种分布式图数据库系统中的混沌工程实现系统的结构框图,如图3所示,该系统还包括图客户端模块31,混沌工程实现系统(NebulaChaos)通过该图客户端模块31访问分布式图数据库系统;本实施例中,图客户端模块31使得Nebula Chao可以通过Nebula Graph提供的客户端访问Nebula Graph,进行对于Nebula Graph的操作,包括Nebula Chao通过账号和密码连接Nebula Graph、NebulaChao操作元信息(图空间创建、删除,索引创建重建,zone创建移除,group创建移除)、写入数据(点和边)、读取数据(点和边)、触发rocksdb compaction、创建恢复快照、平衡raft-leader和平衡数据分布,其中,通过快照(snapshot)可以将集群恢复到某个snapshot创建时的状态。
创建模块22根据故障类型,创建混沌工程测试计划包括:
启动图数据库服务器进程,并等待图数据库服务器初始化完成,其中图数据库服务器包括元数据服务器、存储服务器和查询服务器;
创建客户端连接,并通过客户端连接查询服务;
通过图查询语言创建图空间和图结构;
执行主副本负载均衡任务,并检查负载均衡任务结果,确保主副本在集群中分布均衡;
根据故障类型设置混沌测试用例;
运行混沌测试用例;
检查图数据库系统的状态;
关闭图数据库服务器进程。
示例性的,图4是根据本申请实施例的第一部分混沌工程测试计划的流程图,图5是根据本申请实施例的第二部分混沌工程测试计划的流程图,图6是根据本申请实施例的第三部分混沌工程测试计划的流程图,图7是根据本申请实施例的第四部分混沌工程测试计划的流程图,用于测试通过快照恢复数据的功能,如图4、图5、图6和图7所示,该流程包括如下步骤:
步骤S401,启动图数据库(Nebula Graph)服务器进程,包括一个元数据服务进程(metad),三个存储服务进程(storaged)和一个查询服务进程(graphd),并等待NebulaGraph服务器进程初始化完成;
步骤S402,创建客户端连接,通过客户端连接查询服务;
步骤S403,通过图查询语言创建图空间和图结构,等待创建完毕;
步骤S404,执行主副本负载均衡任务,并检查负载均衡任务结果,确保主副本在集群中分布均衡;
步骤S405,进行第一次数据写入操作;
步骤S406,创建快照,等待快照创建完成;
步骤S407,进行第二次数据写入操作;
步骤S408,停止三个存储服务器进程,并等待停止完成;
步骤S409,通过三个存储服务器各自从快照进行还原,并等待还原完成;
步骤S410,重新启动三个存储服务器进程,并等待三个存储服务器进程初始化完成;
步骤S411,通过对比第二次写入数据与从快照恢复的数据校验正确性;
步骤S412,最后停止所有服务器进程。
其中,步骤S405至步骤S410为根据故障类型设置的混沌测试用例,并运行混沌测试用例,故障类型为分布式图数据库系统运行过程中发生人为的、硬件或业务处理错误的问题,导致集群无法正常运行或集群中的数据失效,步骤S411为检查图数据库系统的状态,第二次写入数据与从快照恢复的数据一致,则图数据库系统的状态正常,若不一致,则对分布式图数据库系统进行修复,提高鲁棒性,图4、图5、图6和图7即为一种有向无环图,在数学,特别是图论和计算机科学中,有向无环图指的是一个无回路的有向图;在图论中,如果一个有向图无法从某个顶点出发经过若干条边回到该点,则这个图是一个有向无环图;负载均衡(Load Balance),指将负载(工作任务)进行平衡、分摊到多个操作单元上进行运行,从而协同完成工作任务;JSON(JavaScript Object Notation)是一种轻量级的数据交换格式,采用完全独立于编程语言的文本格式来存储和表示数据,简洁和清晰的层次结构使得JSON成为理想的数据交换语言,易于人阅读和编写,同时也易于机器解析和生成,并有效地提升网络传输效率。
上述测试通过快照恢复数据的功能的流程图用Json文件描述如下:
Figure BDA0003014478030000101
Figure BDA0003014478030000111
通过本发明,在各个主机规模上和数据量上,进行多次混沌操作,发现图数据库开发过程中的故障,提高系统鲁棒性,通过NebulaAction和NebulaChaosPlan两级组合的方式,可以组合出多种可能的故障情况,而这种组合只需要开发一个Json文件,降低了测试工程师重复开发工作量,包括运维工程师也可以针对需求场景进行混沌工程,便于快速开发测试用例,快速发现系统鲁棒性问题;随着图数据库增加新的功能,只需要开发这个功能对应的NebulaAction和NebulaChaosAction,便于提高新开发功能的鲁棒性。
在其中一些实施例中,图8是根据本申请实施例的第四种分布式图数据库系统中的混沌工程实现系统的结构框图,如图8所示,该系统还包括自动化运行模块51,自动化运行模块51用于周期性执行混沌工程测试计划,获取执行结果,并将执行结果发送至相关人员。本实施例中,选用github-action进行日常测试用例自动化运行,但也可以采用任何其他自动化的测试用例运行方式,自动化运行模块51可以使得Nebula Chaos定期或者周期性的按照配置运行,包括启动Nebula Graph服务进程,启动Nebula Chaos,执行NebulaChaosPlan,获取NebulaChaosPlan执行结果,将执行结果通过邮件或者钉钉通知相关人员,并恢复环境。
需要说明的是,上述各个模块可以是功能模块也可以是程序模块,既可以通过软件来实现,也可以通过硬件来实现。对于通过硬件来实现的模块而言,上述各个模块可以位于同一处理器中;或者上述各个模块还可以按照任意组合的形式分别位于不同的处理器中。
本实施例还提供了一种分布式图数据库系统中的混沌工程实现方法,图9是根据本申请实施例的分布式图数据库系统中的混沌工程实现方法的流程图,如图9所示,该方法包括如下步骤:
步骤S601,根据分布式图数据库的目标实验场景确定目标实验场景对应的目标故障类型,根据目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;
步骤S602,执行目标混沌工程测试计划,获取执行结果,若执行结果不符合预期结果,则对分布式图数据库系统进行修复,执行目标混沌工程测试计划包括:根据目标混沌工程测试计划与图数据库系统进行交互,在图数据系统中制造混沌,检查图数据库系统的状态。
需要说明的是,在上述流程中或者附图的流程图中示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,该计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM以多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双数据率SDRAM(DDRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
本领域的技术人员应该明白,以上所述实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对发明专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请专利的保护范围应以所附权利要求为准。

Claims (10)

1.一种分布式图数据库系统中的混沌工程实现方法,其特征在于,所述方法包括:
根据分布式图数据库系统的目标实验场景确定所述目标实验场景对应的目标故障类型,根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;
执行所述目标混沌工程测试计划,获取执行结果,若所述执行结果不符合预期结果,则对所述分布式图数据库系统进行修复,执行所述目标混沌工程测试计划包括:
根据所述目标混沌工程测试计划与所述分布式图数据库系统进行交互,在所述分布式图数据系统中制造混沌,检查所述分布式图数据库系统的状态。
2.根据权利要求1所述的方法,其特征在于,根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划之前,所述方法还包括:
定义基本执行单元,所述基本执行单元包括一个动作和一组参数,其中,所述基本执行单元用于说明对于某个目标进行何种动作;
根据故障类型,创建混沌工程测试计划,其中,所述混沌工程测试计划包括多个所述基本执行单元。
3.根据权利要求2所述的方法,其特征在于,所述根据故障类型,创建混沌工程测试计划包括:
启动图数据库服务器进程,并等待所述图数据库服务器初始化完成,其中所述图数据库服务器包括元数据服务器、存储服务器和查询服务器;
创建客户端连接,并通过客户端连接所述查询服务器;
通过图查询语言创建图空间和图结构;
执行主副本负载均衡任务,并检查负载均衡任务结果,确保主副本在集群中分布均衡;
根据所述故障类型设置混沌测试用例;
运行所述混沌测试用例;
检查所述分布式图数据库系统的状态;
关闭所述图数据库服务器进程。
4.根据权利要求1所述的方法,其特征在于,执行所述目标混沌工程测试计划,获取执行结果包括:
周期性执行所述目标混沌工程测试计划,获取执行结果,并将所述执行结果发送至相关人员。
5.根据权利要求2所述的方法,其特征在于,根据故障类型,创建混沌工程测试计划,其中,所述混沌工程测试计划包括多个所述基本执行单元包括:
多个所述基本执行单元之间通过有向无环图的方式组合,得到所述混沌工程测试计划,所述混沌工程测试计划以文件的方式存储,用Json的方式来描述多个所述基本执行单元之间的依赖关系。
6.一种分布式图数据库系统中的混沌工程实现系统,其特征在于,所述系统包括获取模块和执行模块,
所述获取模块,用于根据分布式图数据库系统的目标实验场景确定所述目标实验场景对应的目标故障类型,根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划;
所述执行模块,用于执行所述目标混沌工程测试计划,获取执行结果,若所述执行结果不符合预期结果,则对所述分布式图数据库系统进行修复,执行所述目标混沌工程测试计划包括:
根据所述目标混沌工程测试计划与所述分布式图数据库系统进行交互,在所述分布式图数据系统中制造混沌,检查所述分布式图数据库系统的状态。
7.根据权利要求6所述的系统,其特征在于,所述系统还包括定义模块和创建模块,所述获取模块根据所述目标故障类型从多个混沌工程测试计划中获取目标混沌工程测试计划之前,
所述定义模块,用于定义基本执行单元,所述基本执行单元包括一个动作和一组参数,其中,所述基本执行单元用于说明对于某个目标进行何种动作;
所述创建模块,用于根据故障类型,创建混沌工程测试计划,其中,所述混沌工程测试计划包括多个所述基本执行单元。
8.根据权利要求7所述的系统,其特征在于,所述系统还包括图客户端模块,混沌工程实现系统通过所述图客户端模块访问所述分布式图数据库系统;
所述创建模块根据故障类型,创建混沌工程测试计划包括:
启动图数据库服务器进程,并等待所述图数据库服务器初始化完成,其中所述图数据库服务器包括元数据服务器、存储服务器和查询服务器;
创建客户端连接,并通过客户端连接查询服务;
通过图查询语言创建图空间和图结构;
执行主副本负载均衡任务,并检查负载均衡任务结果,确保主副本在集群中分布均衡;
根据所述故障类型设置混沌测试用例;
运行所述混沌测试用例;
检查所述分布式图数据库系统的状态;
关闭所述图数据库服务器进程。
9.根据权利要求6所述的系统,其特征在于,所述系统还包括自动化运行模块,
所述自动化运行模块,用于周期性执行所述混沌工程测试计划,获取执行结果,并将所述执行结果发送至相关人员。
10.根据权利要求7所述的系统,其特征在于,所述创建模块根据故障类型,创建混沌工程测试计划包括:
多个所述基本执行单元之间通过有向无环图的方式组合,得到所述混沌工程测试计划,所述混沌工程测试计划以文件的方式存储,用Json的方式来描述多个所述基本执行单元之间的依赖关系。
CN202110385220.0A 2021-04-09 2021-04-09 分布式图数据库系统中的混沌工程实现方法和系统 Active CN113238924B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202110385220.0A CN113238924B (zh) 2021-04-09 2021-04-09 分布式图数据库系统中的混沌工程实现方法和系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202110385220.0A CN113238924B (zh) 2021-04-09 2021-04-09 分布式图数据库系统中的混沌工程实现方法和系统

Publications (2)

Publication Number Publication Date
CN113238924A true CN113238924A (zh) 2021-08-10
CN113238924B CN113238924B (zh) 2023-09-15

Family

ID=77127965

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202110385220.0A Active CN113238924B (zh) 2021-04-09 2021-04-09 分布式图数据库系统中的混沌工程实现方法和系统

Country Status (1)

Country Link
CN (1) CN113238924B (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113835987A (zh) * 2021-11-25 2021-12-24 北京世纪好未来教育科技有限公司 混沌实验执行文件生成方法、装置、电子设备及存储介质
CN115081653A (zh) * 2022-07-27 2022-09-20 南京争锋信息科技有限公司 一种多环境多架构混沌工程全生命周期管控方法及系统
CN115328751A (zh) * 2022-08-10 2022-11-11 北京同创永益科技发展有限公司 一种面向混沌工程实验动态构建观测页面的方法
CN115599314A (zh) * 2022-12-12 2023-01-13 深圳市泛联信息科技有限公司(Cn) 数据冗余策略变更方法、装置、存储节点和存储介质

Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130061093A1 (en) * 2011-09-06 2013-03-07 Electronics And Telecommunications Research Institute Distributed test system and method, distributed test control system and method, distributed test plan creating apparatus and method, distributed test agent, and distributed test plan performing method
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
US20170024299A1 (en) * 2015-07-21 2017-01-26 International Business Machines Corporation Providing Fault Injection to Cloud-Provisioned Machines
US20180089252A1 (en) * 2016-09-28 2018-03-29 Linkedin Corporation Verifying correctness in graph databases
CN108833131A (zh) * 2018-04-25 2018-11-16 北京百度网讯科技有限公司 分布式数据库云服务的系统、方法、设备和计算机存储介质
US20190065258A1 (en) * 2017-08-30 2019-02-28 ScalArc Inc. Automatic Provisioning of Load Balancing as Part of Database as a Service
CN110765023A (zh) * 2019-10-29 2020-02-07 中国工商银行股份有限公司 基于混沌实验的分布式系统测试方法及系统
US20200184026A1 (en) * 2018-12-06 2020-06-11 Microsoft Technology Licensing, Llc Computing system simulation and testing environment
US10684940B1 (en) * 2018-09-18 2020-06-16 Amazon Technologies, Inc. Microservice failure modeling and testing
US20200285571A1 (en) * 2019-03-05 2020-09-10 Honeywell International Inc. Systems and methods for fault injection and ensuring failsafe fms saas platforms
CN112181950A (zh) * 2020-10-19 2021-01-05 北京米连科技有限公司 一种分布式对象数据库的构建方法
CN112417033A (zh) * 2020-10-19 2021-02-26 中国科学院计算机网络信息中心 一种分布式图数据库多节点数据一致性实现方法和系统

Patent Citations (12)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20130061093A1 (en) * 2011-09-06 2013-03-07 Electronics And Telecommunications Research Institute Distributed test system and method, distributed test control system and method, distributed test plan creating apparatus and method, distributed test agent, and distributed test plan performing method
US9317254B1 (en) * 2013-12-04 2016-04-19 Google Inc. Fault tolerance model, methods, and apparatuses and their validation techniques
US20170024299A1 (en) * 2015-07-21 2017-01-26 International Business Machines Corporation Providing Fault Injection to Cloud-Provisioned Machines
US20180089252A1 (en) * 2016-09-28 2018-03-29 Linkedin Corporation Verifying correctness in graph databases
US20190065258A1 (en) * 2017-08-30 2019-02-28 ScalArc Inc. Automatic Provisioning of Load Balancing as Part of Database as a Service
CN108833131A (zh) * 2018-04-25 2018-11-16 北京百度网讯科技有限公司 分布式数据库云服务的系统、方法、设备和计算机存储介质
US10684940B1 (en) * 2018-09-18 2020-06-16 Amazon Technologies, Inc. Microservice failure modeling and testing
US20200184026A1 (en) * 2018-12-06 2020-06-11 Microsoft Technology Licensing, Llc Computing system simulation and testing environment
US20200285571A1 (en) * 2019-03-05 2020-09-10 Honeywell International Inc. Systems and methods for fault injection and ensuring failsafe fms saas platforms
CN110765023A (zh) * 2019-10-29 2020-02-07 中国工商银行股份有限公司 基于混沌实验的分布式系统测试方法及系统
CN112181950A (zh) * 2020-10-19 2021-01-05 北京米连科技有限公司 一种分布式对象数据库的构建方法
CN112417033A (zh) * 2020-10-19 2021-02-26 中国科学院计算机网络信息中心 一种分布式图数据库多节点数据一致性实现方法和系统

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
WEWOOSEO: "nebula-chaos存储服务的混沌框架", Retrieved from the Internet <URL:《https://download.csdn.net/download/weixin_42122986/15951834》> *
图数据库NEBULAGRAPH: "Jepsen测试框架在图数据库Nebula Graph中的实践", Retrieved from the Internet <URL:《https://blog.csdn.net/weixin_44324814/article/details/103919701》> *

Cited By (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN113835987A (zh) * 2021-11-25 2021-12-24 北京世纪好未来教育科技有限公司 混沌实验执行文件生成方法、装置、电子设备及存储介质
CN115081653A (zh) * 2022-07-27 2022-09-20 南京争锋信息科技有限公司 一种多环境多架构混沌工程全生命周期管控方法及系统
CN115081653B (zh) * 2022-07-27 2022-11-01 南京争锋信息科技有限公司 一种多环境多架构混沌工程全生命周期管控方法及系统
CN115328751A (zh) * 2022-08-10 2022-11-11 北京同创永益科技发展有限公司 一种面向混沌工程实验动态构建观测页面的方法
CN115328751B (zh) * 2022-08-10 2023-03-14 北京同创永益科技发展有限公司 一种面向混沌工程实验动态构建观测页面的方法
CN115599314A (zh) * 2022-12-12 2023-01-13 深圳市泛联信息科技有限公司(Cn) 数据冗余策略变更方法、装置、存储节点和存储介质

Also Published As

Publication number Publication date
CN113238924B (zh) 2023-09-15

Similar Documents

Publication Publication Date Title
CN113238924A (zh) 分布式图数据库系统中的混沌工程实现方法和系统
CN104583968B (zh) 管理系统及管理程序
US10454754B1 (en) Hybrid cluster recovery techniques
US9823997B2 (en) Production resiliency testing system
US9489379B1 (en) Predicting data unavailability and data loss events in large database systems
US20230244578A1 (en) Managing data center failure events
CN104978336A (zh) 基于Hadoop分布式计算平台的非结构化数据存储系统
Tsai et al. Test algebra for combinatorial testing
CN111694612A (zh) 配置检查方法、装置、计算机系统及存储介质
Grov et al. Increasing consistency in multi-site data stores: Megastore-CGC and its formal analysis
CN107506261A (zh) 适应cpu、gpu异构集群的级联容错处理方法
CN115114064A (zh) 一种微服务故障分析方法、系统、设备及存储介质
CN110291505A (zh) 减少应用的恢复时间
CN105164647A (zh) 生成表示应用对外部服务的故障的模拟的响应的指纹
Tsai et al. Concurrent test algebra execution with combinatorial testing
Diack et al. CAP theorem between claims and misunderstandings: what is to be sacrificed
JP2023509209A (ja) クラウドシステム移行方法およびデバイス、ならびにハイブリッドクラウドシステム
US11275666B1 (en) Method and apparatus for identifying high importance devices of a consistency group
CN114385498A (zh) 性能测试方法、系统、计算机设备及可读存储介质
CN108959604B (zh) 维护数据库集群的方法、装置及计算机可读存储介质
Arshad et al. Big data testing techniques: taxonomy, challenges and future trends
Cao et al. Research on reliability evaluation of big data system
Olsson et al. Hard cases in source code to architecture mapping using Naive Bayes
US11520488B2 (en) Method and apparatus for identifying a device missing from a consistency group
Sharma et al. Techniques for Implementing Fault Tolerance in Modern Software Systems to Enhance Availability, Durability, and Reliability

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