分布式数据库容错性故障注入测试工具
发布时间:2021-01-09 16:10
分布式数据库对比集中式数据库有更高的可扩展性和性能。由于分布式数据库的复杂性,在实际应用过程中无法避免网络中断,丢包,节点宕机等软硬件故障。为了减轻故障问题对分布式数据库带来的影响,分布式数据库需要持续进行故障注入测试,即在系统正常运行过程中通过编码模拟主动触发故障问题,提高分布式数据库的可靠性以及验证系统内部容错机制的正确性。本文设计并实现了针对分布式数据库系统容错性问题的故障注入测试工具AFTest。主要贡献为:1.轻量级的任务调度设计:同时支持手动提交测试案例和自动遍历已有情况下的事件组合情况。测试人员可以通过前端界面实时查询测试进度,历史记录以及被测试系统当前状态。后端任务调度程序能够定时生成测试案例并根据案例生成执行脚本,然后分配工作线程执行测试并记录相应的日志信息和测试过程中系统状态的变化。2.实现了一个故障注入框架:分析分布式数据库在现实应用过程中曾经出现的各类软硬件故障问题,通过编码模拟实现其中常见的多种软硬件故障问题以及Cedar特有的系统操作。模块化故障注入框架便于嵌入测试工具中使用。3.减少事件组合空间冗余问题:深度遍历所有故障组合事件,避免繁琐的测试案例编写,更...
【文章来源】: 沈靖 华东师范大学
【文章页数】:77 页
【学位级别】:硕士
【部分图文】:
4对称性
第六章消除冗余案例华东师范大学硕士学位论文49为了体现这两个不同顺序组合之间因为对称性而表现出的一致性,直观方法是将节点间信息传递过程抽象成模型。我们能够将最先发出请求的节点定义为1,之后回复请求的节点定义为2,这样一来,原本图6.1b中写请求X是从A-B就转变成了X是从1-2,同样的在图6.1c中写请求M是从B-A转变成1-2,也就是说两张图中事件发生的顺序都是同样类型的写请求从节点1传递给节点2并得到回复,然后再是同样类型的写请求从节点2传递给节点1并得到回复,这样的事件发生过程是一致的。当然仅仅从节点间写请求传递的对称性不足以描述分布式数据库中更为复杂的情况,诸如领导者选举协议中信息传递过程中会带有各自节点中的投票信息。但是从这个信息传递的对称性出发,考虑到分布式数据库中不同节点有不同的角色分类,集群内的身份变换通常取决于节点间的信息传递。进一步思考分布式数据库中各节点身份变化引起的状态对称性也能发现更多的冗余情况。从上图6.2中的并发更新可以更为直观的体现状态对称性。图6.2是一个简单的Paxos一致性协议第一阶段更新提交的流程。节点A广播自身的请求信息,两条请求分别发给自身和节点B并且都附加了提案号为1的信息。同样节点B广播自身的请求信息也分别发送给自身和节点A并且都附带了提案号为2。单独判断图6.2左右两图中不同的执行顺序,我们明显能发现这是两种不同的情况,图6.215状态对称性
第六章消除冗余案例华东师范大学硕士学位论文52作的先后顺序,比如将对变量x的先写后读改成先读后写。那么节点A对于节点B中的操作是独立于节点B对节点A的操作的。只要单个节点的相对读写顺序不改变,不管节点间事件顺序如何变化,最终两个节点的状态变化都是一致的,所以没有必要改变独立事件之间的发生顺序。实现这个方法的主要问题是如何评估事件之间的独立性。我们在测试工具实现过程中依旧通过Reporter采集的分布式数据库集群中各个节点的状态信息,并根据各个事件发生时所涉及的操作建立各个事件对应的受到其影响的变量集合,比如读取的数据集合,需要修改的数据集合。因此对于两个事件E1E2,只要E1的读取数据集合和E2的修改数据集合不重合,那么这两个事件之间就是独立不相干的,反之亦然。一旦判定事件之间是独立的那么这两者之间就可以互相交换,不需要再重复测试多余的事件组合的测试案例。故障注入测试中包括节点宕机的故障注入事件,节点的宕机对于发现分布式数据库深层次故障问题非常有必要,根据针对分布式系统中故障问题的详细研究,分布式并发问题中有50%的触发条件需要至少存在一个节点宕机,还有12%的故障问题触发条件需要至少两个节点在特定时间宕机[26]。由于节点宕机会对集群产生较大影响,针对节点宕机事件的重新排序也就会耗费更多的测试时间。因此根据事件独立性能减少不必要的宕机事件组合而成的测试案例。比如,在分布图6.316事件独立性
本文编号:2966984
【文章来源】: 沈靖 华东师范大学
【文章页数】:77 页
【学位级别】:硕士
【部分图文】:
4对称性
第六章消除冗余案例华东师范大学硕士学位论文49为了体现这两个不同顺序组合之间因为对称性而表现出的一致性,直观方法是将节点间信息传递过程抽象成模型。我们能够将最先发出请求的节点定义为1,之后回复请求的节点定义为2,这样一来,原本图6.1b中写请求X是从A-B就转变成了X是从1-2,同样的在图6.1c中写请求M是从B-A转变成1-2,也就是说两张图中事件发生的顺序都是同样类型的写请求从节点1传递给节点2并得到回复,然后再是同样类型的写请求从节点2传递给节点1并得到回复,这样的事件发生过程是一致的。当然仅仅从节点间写请求传递的对称性不足以描述分布式数据库中更为复杂的情况,诸如领导者选举协议中信息传递过程中会带有各自节点中的投票信息。但是从这个信息传递的对称性出发,考虑到分布式数据库中不同节点有不同的角色分类,集群内的身份变换通常取决于节点间的信息传递。进一步思考分布式数据库中各节点身份变化引起的状态对称性也能发现更多的冗余情况。从上图6.2中的并发更新可以更为直观的体现状态对称性。图6.2是一个简单的Paxos一致性协议第一阶段更新提交的流程。节点A广播自身的请求信息,两条请求分别发给自身和节点B并且都附加了提案号为1的信息。同样节点B广播自身的请求信息也分别发送给自身和节点A并且都附带了提案号为2。单独判断图6.2左右两图中不同的执行顺序,我们明显能发现这是两种不同的情况,图6.215状态对称性
第六章消除冗余案例华东师范大学硕士学位论文52作的先后顺序,比如将对变量x的先写后读改成先读后写。那么节点A对于节点B中的操作是独立于节点B对节点A的操作的。只要单个节点的相对读写顺序不改变,不管节点间事件顺序如何变化,最终两个节点的状态变化都是一致的,所以没有必要改变独立事件之间的发生顺序。实现这个方法的主要问题是如何评估事件之间的独立性。我们在测试工具实现过程中依旧通过Reporter采集的分布式数据库集群中各个节点的状态信息,并根据各个事件发生时所涉及的操作建立各个事件对应的受到其影响的变量集合,比如读取的数据集合,需要修改的数据集合。因此对于两个事件E1E2,只要E1的读取数据集合和E2的修改数据集合不重合,那么这两个事件之间就是独立不相干的,反之亦然。一旦判定事件之间是独立的那么这两者之间就可以互相交换,不需要再重复测试多余的事件组合的测试案例。故障注入测试中包括节点宕机的故障注入事件,节点的宕机对于发现分布式数据库深层次故障问题非常有必要,根据针对分布式系统中故障问题的详细研究,分布式并发问题中有50%的触发条件需要至少存在一个节点宕机,还有12%的故障问题触发条件需要至少两个节点在特定时间宕机[26]。由于节点宕机会对集群产生较大影响,针对节点宕机事件的重新排序也就会耗费更多的测试时间。因此根据事件独立性能减少不必要的宕机事件组合而成的测试案例。比如,在分布图6.316事件独立性
本文编号:2966984
本文链接:https://www.wllwen.com/kejilunwen/shengwushengchang/2966984.html
最近更新
教材专著