本技术涉及存储领域,尤其涉及一种数据管理方法、存储系统及相关设备。
背景技术:
1、主从切换技术是一种保证系统高可用性的重要手段,在数据库系统、服务器系统、网络系统、存储系统等分布式系统中应用广泛,主从切换指的是在主节点故障或者升级时,从节点接管主节点的工作,以保证系统的持续运行和稳定性。
2、但是,主从切换过程中,主节点需要进行重启,此过程中无法处理用户的数据写请求,系统会出现短暂不可用的情况,降低用户的使用体验。
技术实现思路
1、本技术提供了一种数据管理方法、存储系统及相关设备,用于解决主从切换过程中系统会出现短暂不可用的情况,提高用户的使用体验。
2、第一方面,提供了一种数据管理方法,该方法可应用于管理节点侧,包括以下步骤:管理节点将状态信息库中的第一节点的状态信息更新为第一状态,其中,第一节点是主节点,状态信息库用于供客户端通过订阅的方式获知第一节点的状态信息,管理节点向第一节点发送主从切换请求,管理节点确定第一节点切换为从节点的情况下,更新第一节点的状态信息为第二状态。
3、实施第一方面描述的方法,管理节点维护有用于存储各个节点状态信息的状态信息库,作为主节点的第一节点进行主从切换时,管理节点可以将第一节点的状态信息修改为第一状态,然后向第一节点发送主从切换请求,指示第一节点切换为从节点,确定第一节点切换为从节点的情况下,更新第一节点的状态信息为第二状态,由于该状态信息库被客户端订阅,因此客户端可以及时获知第一节点是否处于主备切换,避免由于主从切换导致数据写入失败或者数据丢失,解决了主从切换过程中的短暂不可用问题。
4、在一可能的实现方式中,状态信息为第一状态的情况下客户端通过除第一节点以外的其他节点进行数据读写。其中,第一节点是主节点,状态信息库用于供客户端通过订阅的方式获知第一节点的状态信息。在第一节点的状态信息是第一状态时,客户端接收到用户发送的向第一节点写入数据的写入请求时,可以向用户返回第一节点当前无法读写的说明,或者,将数据写入其他节点中,等第一节点和第二节点完成主从切换后,将数据再写入此时作为主节点的第二节点,上述举例用于说明,本技术不作具体限定。
5、可选地,状态信息库可以基于分布式键值存储系统(distributed key-valuestore,etcd)实现,etcd使用raft算法来保证数据的一致性和可靠性,提供了简单的api使得开发人员可以轻松地与etcd进行交互,使得方案的可行性更高。客户端可以通过corvus实现订阅状态信息库的功能,其中,corvus是一个缓存系统,可以存储和管理数据,客户端可以通过redis协议与corvus进行交互,实现数据的读写管理。简单来说,用户的读写请求都经过corvus,然后再发送至对应的节点进行数据读写,corvus订阅状态信息库之后,可以根据状态信息,对读写请求进行处理,使得第一节点在进行主从切换时,与第一节点相关的写请求将不再进行处理,或者写入其他节点,避免由于主从切换导致数据写入失败或者数据丢失的问题,提高用户的使用体验。
6、上述实现方式,通过客户端订阅状态信息库,及时获知第一节点的工作状态,这样在第一节点进行主从切换时,客户端可以获知第一节点当前无法处理数据写请求,此时客户端可以选择向用户反馈第一节点无法处理写请求的信息,也可以将数据写入其他节点,避免由于主从切换导致数据写入失败或者数据丢失的问题,提高用户的使用体验。
7、在一可能的实现方式中,第一节点是主节点的情况下,第二节点是第一节点的从节点,主从切换请求用于指示第一节点将未同步的目标数据同步至第二节点后,第一节点切换为第二节点的从节点,第二节点切换为主节点。
8、其中,第一节点和第二节点进行数据同步时,可以通过分片传输的方式进行数据同步,也就是将第一节点中的目标数据通过数据分片的形式传输至第二节点,将目标数据分为多个分片数据,将分片数据传输给第二节点,在传输过程中,可能会出现网络延迟、硬件故障等问题导致部分分片数据没能及时传输至从节点,因此可以周期性或者定期检查每个分片数据的分片信息,确定哪些分片数据已经传输到第二节点,哪些分片数据还需要重新传输,通过定期检查分片信息可以帮助第一节点确定数据差异并采取相应的措施来保证数据的准确性和完整性。
9、上述实现方式,主节点用于处理用户的写请求,从节点用于处理用户的读请求,从节点通过异步存储的方式实现与主节点的数据同步,因此数据可能在写入主节点一段时间后,才能被存储于从节点中。因此在主从切换时,可能有一部分目标数据还未同步至从节点,如果直接进行主从切换,可能会导致目标数据丢失,降低用户的使用体验。本技术通过在主从切换之前将第一节点中还未同步的目标数据同步给第二节点,可以避免目标数据丢失的问题,提高用户的使用体验。
10、在一可能的实现方式中,第一节点可以确定目标数据传输至第二节点之后,重启第一节点和第二节点,重启后的第一节点切换为从节点,重启后的第二节点切换为主节点。
11、可选地,第一节点可以周期性或者定期检查每个分片数据的分片信息,确定第一节点中的数据与第二节点中的数据之间的差异(difference,diff)是否低于阈值,在低于阈值的情况下,开始进行节点重启。上述阈值可以是默认值,也可以是客户端向用户获取的值,比如在用户输入第一节点的升级请求时获取的值,当然也可以是其他时间获取,本技术不作具体限定。
12、可选地,第一节点可以使用从节点的版本数据重启第一节点,使得重启后的第一节点切换为从节点,第二节点可以使用主节点的版本数据重启第二节点,使得重启后的第二节点切换为主节点。
13、需要说明的,第一节点和第二节点使用的版本数据可以是管理节点下发的版本数据,可以是管理节点在获取到主从切换请求之后下发的,也可以是管理节点获取主从切换请求并更新完状态信息库之后下发的,还可以是在管理节点向第一节点和第二节点发送主从切换请求时下发的,本技术不作具体限定。
14、具体实现中,上述版本数据可以是二进制版本文件,该版本数据包括但不限于主从切换所需的程序代码、数据库文件、配置文件、依赖库文件、脚本文件等等,其中,数据库文件包括程序代码需要使用的数据库的结构定义、数据表、索引等信息,配置文件包括程序代码的参数设置、日志配置、数据库连接信息等等,依赖库文件包括一些程序代码依赖的第三方库文件,脚本文件包括程序代码所需的数据库初始化、环境脚本变量设置等脚本文件,应理解,上述内容用于举例说明,版本数据可包括更多或者更少的内容,本技术不作具体限定。
15、上述实现方式,在第一节点和第二节点进行主从切换时,先对第一节点和第二节点内未同步的目标数据进行同步,使得第一节点和第二节点不会因为主从切换造成数据丢失,提高用户的使用体验。
16、在一可能的实现方式中,在管理节点将状态信息库中的第一节点的状态信息更新为第一状态之前,方法还包括:管理节点在接收到用户发送的第一节点的升级请求。
17、可选地,管理节点将状态信息库中的第一节点的状态信息更新为第一状态之前,方法还包括:管理节点获取第一节点的故障信息。
18、应理解,主从切换请求还可以是其他场景下生产的,比如灾备演练,计划性的主从切换场景,比如主节点负载过高、主节点网络延迟、主节点需要进行维护等应用场景,这里不一一举例说明。
19、上述实现方式,本技术提供的数据管理方法可适用于多种需要主从切换的应用场景,方案适用性强,主从切换过程中对读服务完全不受影响,写服务也可以通过写入其他节点或者向用户返回错误信息的方式减少影响,对业务的影响程度大大降低,提高用户的使用体验。
20、第二方面,提供了一种数据管理方法,该方法可应用于第一节点侧,该方法可包括以下步骤:第一节点接收管理节点发送的主从切换请求,其中第一节点是主节点,第一节点的从节点是第二节点,第一节点将未同步的目标数据同步至第二节点,第一节点切换为从节点。
21、实施第二方面描述的方法,管理节点维护有用于存储各个节点状态信息的状态信息库,作为主节点的第一节点进行主从切换时,管理节点可以将第一节点的状态信息修改为第一状态,然后向第一节点发送主从切换请求,指示第一节点切换为从节点,确定第一节点切换为从节点的情况下,更新第一节点的状态信息为第二状态,由于该状态信息库被客户端订阅,因此客户端可以及时获知第一节点是否处于主备切换,避免由于主从切换导致数据写入失败或者数据丢失,解决了主从切换过程中的短暂不可用问题。
22、在一可能的实现方式中,主从切换请求是管理节点将状态信息库中第一节点的状态信息修改为第一状态之后生成的,状态信息库用于供客户端通过订阅的方式获知第一节点的状态信息,在状态信息为第一状态的情况下客户端通过除第一节点以外的其他节点进行数据读写。
23、在一可能的实现方式中,第一节点切换为从节点之后,方法还包括:第一节点向管理节点发送主从切换完成的信息,主从切换完成的信息用于指示管理节点更新状态信息库,将第一节点的状态信息修改为第二状态。
24、在一可能的实现方式中,主从切换请求是管理节点在接收到用户发送的第一节点的升级请求之后生成的。
25、在一可能的实现方式中,主从切换请求是管理节点获取第一节点的故障信息之后生成的。
26、第三方面,提供了一种管理节点,该管理节点包括:状态更新单元,用于将状态信息库中的第一节点的状态信息更新为第一状态,其中,第一节点是主节点,状态信息库用于供客户端通过订阅的方式获知第一节点的状态信息;状态更新单元,用于向第一节点发送主从切换请求;状态更新单元,用于确定第一节点切换为从节点的情况下,更新第一节点的状态信息为第二状态。
27、实施第三方面描述的管理节点,管理节点维护有用于存储各个节点状态信息的状态信息库,作为主节点的第一节点进行主从切换时,管理节点可以将第一节点的状态信息修改为第一状态,然后向第一节点发送主从切换请求,指示第一节点切换为从节点,确定第一节点切换为从节点的情况下,更新第一节点的状态信息为第二状态,由于该状态信息库被客户端订阅,因此客户端可以及时获知第一节点是否处于主备切换,避免由于主从切换导致数据写入失败或者数据丢失,解决了主从切换过程中的短暂不可用问题。
28、在一可能的实现方式中,在状态信息为第一状态的情况下客户端通过除第一节点以外的其他节点进行数据读写。
29、在一可能的实现方式中,第一节点是主节点的情况下,第二节点是第一节点的从节点,主从切换请求用于指示第一节点将未同步的目标数据同步至第二节点后,第一节点切换为从节点,第二节点切换为主节点。
30、在一可能的实现方式中,管理节点还包括获取单元,获取单元用于在管理节点将状态信息库中的第一节点的状态信息更新为第一状态之前,接收用户发送的第一节点的升级请求。
31、在一可能的实现方式中,管理节点还包括获取单元,获取单元用于在管理节点将状态信息库中的第一节点的状态信息更新为第一状态之前,获取第一节点的故障信息。
32、第四方面,提供了一种计算节点,包括:同步单元,用于收管理节点发送的主从切换请求,其中计算节点是主节点;同步单元,用于将未同步的目标数据同步至计算节点的从节点;切换单元,用于将第一节点切换为从节点。
33、实施第四方面描述的计算节点,管理节点维护有用于存储各个节点状态信息的状态信息库,作为主节点的第一节点进行主从切换时,管理节点可以将第一节点的状态信息修改为第一状态,然后向第一节点发送主从切换请求,指示第一节点切换为从节点,确定第一节点切换为从节点的情况下,更新第一节点的状态信息为第二状态,由于该状态信息库被客户端订阅,因此客户端可以及时获知第一节点是否处于主备切换,避免由于主从切换导致数据写入失败或者数据丢失,解决了主从切换过程中的短暂不可用问题。
34、在一可能的实现方式中,主从切换请求是管理节点将状态信息库中计算节点的状态信息修改为第一状态之后生成的,状态信息库用于供客户端通过订阅的方式获知计算节点的状态信息,在状态信息为第一状态的情况下客户端通过除计算节点以外的其他节点进行数据读写。
35、在一可能的实现方式中,切换单元还用于在将计算节点切换为从节点之后,向管理节点发送主从切换完成的信息,主从切换完成的信息用于指示管理节点更新状态信息库,将计算节点的状态信息修改为第二状态。
36、在一可能的实现方式中,主从切换请求是管理节点在接收到用户发送的计算节点的升级请求之后生成的。
37、在一可能的实现方式中,主从切换请求是管理节点获取计算节点的故障信息之后生成的。
38、第五方面,提供了一种存储系统,该存储系统包括管理节点和第一节点,其中,管理节点实现如权利要求第一方面描述的方法,第一节点实现如第二方面描述的方法。
39、第六方面,提供了一种计算设备,该计算设备包括处理器和存储器,存储器用于存储指令,处理器用于执行指令,以使得计算设备实现如第一方面或第二方面描述的方法。
40、第七方面,提供了一种计算设备集群,包括至少一个计算设备,至少一个计算设备中的每个计算设备包括处理器和存储器,至少一个计算设备的处理器用于执行至少一个计算设备的存储器中存储的指令,以使得计算设备集群实现如第一方面或者第五方面描述的方法。
41、第八方面,提供了一种计算机可读存储介质,其特征在于,计算机可读存储介质中存储有指令,指令被计算设备或者计算设备集群运行时实现如第一方面或第二方面描述的方法。