发明名称 一种用数据日志提高分布式存储系统可用性的方法
摘要 本发明提供了一种用数据日志提高分布式存储系统可用性的方法,该方法包括:在分布式存储系统中处理数据写请求并依据数据写请求生成数据日志;在从服务器离线又上线后,通过恢复其离线状态时缺失的数据日志来恢复其离线状态时缺失的数据;在主服务器离线时,通过数据日志来更快的生成一个新的主服务器。本发明提供的一种用数据日志提高分布式存储系统可用性的方法,使得分布式存储系统的可用性不受从服务器恢复的影响,即在从服务器恢复过程中主服务器仍然可以接收对数据修改的请求;同时使得分布式存储系统的可用性得到极大的提升。
申请公布号 CN103546579B 申请公布日期 2017.01.04
申请号 CN201310546434.7 申请日期 2013.11.07
申请人 陈靓 发明人 陈靓
分类号 H04L29/08(2006.01)I;G06F11/34(2006.01)I 主分类号 H04L29/08(2006.01)I
代理机构 南京知识律师事务所 32207 代理人 汪旭东
主权项 一种用数据日志提高分布式存储系统可用性的方法,其特征在于:包括以下内容:①分布式存储系统处理数据写请求并生成数据日志,包括以下步骤:1)数据写请求发送给服务器组中的主服务器;若主服务器离线,则返回处理数据写请求失败;若主服务器在线,则执行步骤2);2)主服务器根据接收到的数据写请求的内容生成对应的数据日志,所述的数据日志包括数据日志的Id、数据地址和数据;所述的主服务器存放数据日志的逻辑结构为队列,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;3)主服务器根据数据地址,将数据写入其存储中的对应位置;4)主服务器将步骤2)中生成的数据日志插入到数据日志队列队尾,然后移动其数据日志队列的指针并指向队尾;5)主服务器将步骤2)中生成的数据日志传输给服务器组中的每个从服务器,并等待从服务器向其发送写成功的响应;6)若从服务器离线,其无法收到主服务器传输的数据日志,也无法给主服务器响应;否则从服务器接收主服务器传输的数据日志,并根据接收的数据日志中的数据地址,将数据写入其存储中的对应位置,所述的从服务器存放数据日志的逻辑结构为队列,所述的队列从头到尾对应的数据日志的Id单调增长;所述的队列上设有一指针,且所述的队列队头和指针之间的数据日志,包括指针所指向的数据日志都是完整的;从服务器将接收到的数据日志插入其数据日志队列队尾并向主服务器返回写成功的响应;7)若主服务器在用户设定的时间内未收到大于或等于N/2个从服务器写成功的响应,主服务器返回处理数据写请求失败,处理数据写请求结束,N是数据服务器组中所有从服务器的数目,所述的用户设定的时间为小于5分钟;否则主服务器认为所述的数据写入成功,处理数据写请求结束;②分布式存储系统中主服务器离线,通过数据日志恢复主服务器,包括以下步骤:1)在从服务器间选取一个作为主服务器的候选服务器,其他从服务器将各自的指针、指针所指数据日志以及比指针所指数据日志大的数据日志传输到侯选服务器,候选服务器依据Id对接收的数据日志进行排序并按从小到大的顺序对其逐个进行分析,分析出有效数据日志和无效数据日志,包括:情况一,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id小,则此数据日志已存在于候选服务器的数据日志队列中,此数据日志是无效数据日志;情况二,若被分析的数据日志的Id比候选服务器的指针所指的数据日志的Id大,但比任何一个从服务器的指针所指的数据日志的Id小,则这个数据日志是有效数据日志;情况三,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且大于或等于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是有效数据;情况四,若被分析的数据日志的Id比任何一个从服务器的指针所指的数据日志的Id大,且小于M/2个的从服务器有这个数据日志,M是数据服务器组所有服务器的数目,则这个数据日志是无效数据日志;2)将步骤1)中的所有有效数据日志插入侯选服务器的数据日志队列中,忽略无效数据日志;3)候选服务器成为主服务器并通知所有从服务器;分布式存储系统中离线的主服务器恢复过程结束;③分布式存储系统中从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据,包括以下步骤:1)离线后重新上线的从服务器向主服务器发送数据恢复请求;2)主服务器收到从服务器的恢复请求后,向所述的从服务器返回同意恢复响应;同时主服务器从此刻起向从服务器传送新数据日志,所述的新数据日志指从服务器变成在线状态后主服务器产生的数据日志;3)从服务器收到主服务器的同意恢复响应;4)从服务器将其指针及比其指针所指数据日志Id大的数据日志发送给主服务器;5)主服务器将其数据日志与从服务器发送过来的数据日志Id列表进行分析,分析出从服务器在离线时缺失的数据日志,以及从服务器指针的新位置;所述的缺失日志指从服务器在离线状态期间主服务器产生的数据日志;6)主服务器将步骤5)中分析出的从服务器缺失的数据日志和从服务器的指针的新位置传送给从服务器;7)从服务器在接收到主服务器传送过来的从服务器缺失的数据日志后,将其插入到从服务器数据日志队列中的对应位置上,并将从服务器数据日志队列的指针移动到新位置;若所述的指针的新位置未超过从服务器接收到步骤2)中主服务器传送的新数据日志的第一个数据日志的位置,则回到步骤4)并执行;否则从服务器离线后回到在线状态,通过数据日志恢复从服务器缺失数据的过程结束。
地址 210000 江苏省南京市江宁区麒麟科技创新园(生态科技城)东麒路666号