CN117666970A - 数据存储方法以及数据存储装置 - Google Patents

数据存储方法以及数据存储装置 Download PDF

Info

Publication number
CN117666970A
CN117666970A CN202410132294.7A CN202410132294A CN117666970A CN 117666970 A CN117666970 A CN 117666970A CN 202410132294 A CN202410132294 A CN 202410132294A CN 117666970 A CN117666970 A CN 117666970A
Authority
CN
China
Prior art keywords
data
master node
node
stored
storage
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
CN202410132294.7A
Other languages
English (en)
Other versions
CN117666970B (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 Alibaba Cloud Feitian Information Technology Co ltd
Original Assignee
Hangzhou Alibaba Cloud Feitian Information 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 Alibaba Cloud Feitian Information Technology Co ltd filed Critical Hangzhou Alibaba Cloud Feitian Information Technology Co ltd
Priority to CN202410132294.7A priority Critical patent/CN117666970B/zh
Publication of CN117666970A publication Critical patent/CN117666970A/zh
Application granted granted Critical
Publication of CN117666970B publication Critical patent/CN117666970B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Landscapes

  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本说明书实施例提供数据存储方法以及数据存储装置,其中所述数据存储方法包括:获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;将待存储数据存储至目标主节点。由于目标主节点是根据待存储数据的数据类型筛选得到的,从而可以兼容多种数据类型,提供适用于多种场景的高可用性存储解决方案,并且,每个存储节点包括主节点和备节点,使得一台机器可以同时扮演主节点和备节点的角色,避免了一些机器作为备节点而处于空闲状态,节约了资源,提高了存储性能。

Description

数据存储方法以及数据存储装置
技术领域
本说明书实施例涉及计算机技术领域,特别涉及数据存储方法以及数据存储装置。
背景技术
随着计算机技术的发展,工业软件中使用了大量的分布式的日志存储***(Log-based Storage System)来记录和分析信息。日志存储***是指利用日志的形式记录和存储大量信息的软件***。
目前,可以通过基于分区备份的分布式流处理平台处理高吞吐量的实时数据流。然而,在大量主题和分区的情况下,一台消息传递枢纽(broker)宕机时会涉及到大量的重新选举和同步任务。这会导致分布式流处理平台中的组件均产生较大的压力,影响消息的正常收发,导致存储性能较差,因此,亟需一种存储性能高的数据存储方案。
发明内容
有鉴于此,本说明书实施例提供了一种数据存储方法。本说明书一个或者多个实施例同时涉及一种数据存储装置,一种计算设备,一种计算机可读存储介质以及一种计算机程序产品,以解决现有技术中存在的技术缺陷。
根据本说明书实施例的第一方面,提供了一种数据存储方法,应用于数据存储***,数据存储***包括多个存储节点,存储节点包括主节点和备节点,该方法包括:获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;将待存储数据存储至目标主节点。
根据本说明书实施例的第二方面,提供了一种数据存储装置,应用于数据存储***,数据存储***包括多个存储节点,存储节点包括主节点和备节点,该装置包括:获取模块,被配置为获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;识别模块,被配置为在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;筛选模块,被配置为根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;第一存储模块,被配置为将待存储数据存储至目标主节点。
根据本说明书实施例的第三方面,提供了一种计算设备,包括:存储器和处理器;所述存储器用于存储计算机可执行指令,所述处理器用于执行所述计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法的步骤。
根据本说明书实施例的第四方面,提供了一种计算机可读存储介质,其存储有计算机可执行指令,该指令被处理器执行时实现上述数据存储方法的步骤。
根据本说明书实施例的第五方面,提供了一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述数据存储方法的步骤。
本说明书一个实施例提供的数据存储方法,应用于数据存储***,数据存储***包括多个存储节点,存储节点包括主节点和备节点,包括:获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;将待存储数据存储至目标主节点。由于目标主节点是根据待存储数据的数据类型从第一主节点以外的存储节点中筛选得到的,因此,本方案可以兼容多种数据类型,提供适用于多种场景的高可用性存储解决方案,并且,每个存储节点包括主节点和备节点,使得一台机器可以同时扮演主节点和备节点的角色,避免了一些机器作为备节点而处于空闲状态,节约了资源,提高了存储性能。
附图说明
图1是本说明书一个实施例提供的一种数据存储***的架构图;
图2是本说明书一个实施例提供的一种数据存储方法的流程图;
图3是本说明书一个实施例提供的一种数据存储***中容纳单元的结构示意图;
图4是本说明书一个实施例提供的一种数据存储方法的处理过程流程图;
图5是本说明书一个实施例提供的一种数据存储方法中适应单元的处理流程示意图;
图6是本说明书一个实施例提供的一种数据存储方法中节点选举的流程图;
图7是本说明书一个实施例提供的另一种数据存储方法的处理过程流程图;
图8是本说明书一个实施例提供的一种数据存储方法中合并单元的处理流程示意图;
图9是本说明书一个实施例提供的另一种数据存储***的架构图;
图10是本说明书一个实施例提供的一种数据存储方法的性能测试结果示意图;
图11是本说明书一个实施例提供的另一种数据存储方法的性能测试结果示意图;
图12是本说明书一个实施例提供的一种数据存储装置的结构示意图;
图13是本说明书一个实施例提供的一种计算设备的结构框图。
具体实施方式
在下面的描述中阐述了很多具体细节以便于充分理解本说明书。但是本说明书能够以很多不同于在此描述的其它方式来实施,本领域技术人员可以在不违背本说明书内涵的情况下做类似推广,因此本说明书不受下面公开的具体实施的限制。
在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本说明书一个或多个实施例中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书一个或多个实施例中可能采用术语第一、第二等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一也可以被称为第二,类似地,第二也可以被称为第一。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
此外,需要说明的是,本说明书一个或多个实施例所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
首先,对本说明书一个或多个实施例涉及的名词术语进行解释。
高可用(High Availability):高可用指***在面对故障时能够保持持续可用性的能力。
broker:broker指在分布式日志存储***中负责消息传递的中心枢纽,负责接收、处理和转发消息,以确保高效可靠的消息传递。本说明书实施例中的broker可以理解为存储节点。
在工业软件中,存在两个关键的场景,即消息传递(Messaging)和流(Streaming)处理。这些场景对于日志存储有不同的需求。消息传递是一种高速、异步、程序对程序通信的技术。消息通常被分散存储在不同的机器上。消息传递允许不同的模块或***之间以消息的形式进行通信,实现松耦合和高效的数据传递。在消息传递场景中,消息的可靠性非常重要,消息需要被准确地记录和传递,以确保数据的完整性和一致性。因此,消息传递需要一种高可用性的存储解决方案,以确保消息的安全存储和传递。流处理是一种处理连续数据流的技术。流处理可以对一段时间内的数据进行一致性和完整性的处理,以支持实时分析和决策。在流处理场景中,日志存储的连续性和完整性非常重要。如果存储的日志是不连续或不完整的,将会对后续的数据处理和分析产生严重影响。因此,流处理需要一种高可用性的存储范式,以确保数据的连续性和完整性。
目前,可以通过分布式流处理平台或者分布式的发布-订阅消息***进行数据存储。其中,分布式流处理平台旨在处理高吞吐量的实时数据流。它的高可用性方案建立在一组broker上,这些服务器形成一个集群。分布式流处理平台的高可用性通过分区备份和基于分布式应用程序协调服务(ZooKeeper)的选举机制来实现。当一个broker发生故障时,分布式流处理平台可以从备份中的其他broker中重新选举一个新的主导者,并恢复数据的复制。分布式流处理平台的高可用性方案在流处理场景中表现良好,但在消息传递场景中,涉及大量主题和分区时,broker之间的选举和数据同步可能导致性能下降和成本增加,其中,主题是指数据的类别。分布式的发布-订阅消息***旨在处理大规模的实时消息流。分布式的发布-订阅消息***的高可用性方案建立在一组独立的broker上,这些broker以主-从模式组成一个集群。分布式的发布-订阅消息***使用了类似于分布式流处理平台的分区备份和选举机制,以实现高可用性和数据复制。分布式的发布-订阅消息***的高可用性方案在流处理和消息传递场景中都有良好的表现,但在涉及大量主题和分区时,仍然可能存在性能和成本问题。
由于消息传递和流处理场景对日志存储的需求不同,本说明书实施例提出了一种可以兼容消息传递和流处理场景的高可用性存储范式,以提供高效、可靠的消息传递和流处理功能,并确保数据的连续性和完整性,满足工业软件中的需求。具体地,本说明书实施例提出了一种数据存储方法,应用于数据存储***,数据存储***包括多个存储节点,存储节点包括主节点和备节点,包括:获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;将待存储数据存储至目标主节点。由于本说明书实施例提出的数据存储方案允许多个broker共存、使broker具有多角色、全局主导者分配、数据同步、节点管理和及时通知的机制,实现了适用于所有场景的高可用性存储解决方案。
在本说明书中,提供了一种数据存储方法,本说明书同时涉及一种数据存储装置,一种计算设备,以及一种计算机可读存储介质,在下面的实施例中逐一进行详细说明。
参见图1,图1示出了本说明书一个实施例提供的一种数据存储***的架构图,数据存储***可以包括客户端100和服务端200,服务端200包括多个存储节点,存储节点包括主节点和备节点;
客户端100,用于向服务端200发送针对第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;
服务端200,用于在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;将待存储数据存储至目标主节点。
应用本说明书实施例的方案,由于目标主节点是根据待存储数据的数据类型从第一主节点以外的存储节点中筛选得到的,因此,本方案可以兼容多种数据类型(如非连续数据类型和连续数据类型)的待存储数据的存储任务,同时,由于不同场景中待存储数据的数据类型有多种,因此,本说明书实施例可以提供适用于多种场景的高可用性存储解决方案,并且,每个存储节点包括主节点和备节点,使得一台机器可以同时扮演主节点和备节点的角色,避免了一些机器作为备节点而处于空闲状态,节约了资源,提高了存储性能。
实际应用中,数据存储***可以包括多个客户端100以及服务端200,其中,客户端100可以包括端侧设备,服务端200可以包括云侧设备。多个客户端100之间通过服务端200可以建立通信连接,在数据存储场景中,服务端200即用来在多个客户端100之间提供数据存储服务,多个客户端100可以分别作为发送端或接收端,通过服务端200实现通信。
用户通过客户端100可与服务端200进行交互以接收其它客户端100发送的数据,或将数据发送至其它客户端100等。在数据存储场景中,可以是用户通过客户端100向服务端200发布数据流,服务端200根据该数据流进行数据存储,并将数据存储结果推送至其他建立通信的客户端中。
其中,客户端100与服务端200之间通过网络建立连接。网络为客户端100与服务端200之间提供了通信链路的介质。网络可以包括各种连接类型,例如有线、无线通信链路或者光纤电缆等等。客户端100所传输的数据可能需要经过编码、转码、压缩等处理之后才发布至服务端200。
客户端100可以为浏览器、APP(Application,应用程序)、或网页应用如H5(HyperText Markup Language5,超文本标记语言第5版)应用、或轻应用(也被称为小程序,一种轻量级应用程序)或云应用等,客户端100可以基于服务端200提供的相应服务的软件开发工具包(SDK,Software Development Kit),如基于实时通信(RTC,Real TimeCommunication)SDK开发获得等。客户端100可以部署在电子设备中,需要依赖设备运行或者设备中的某些APP而运行等。电子设备例如可以具有显示屏并支持信息浏览等,如可以是个人移动终端如手机、平板电脑、个人计算机等。在电子设备中通常还可以配置各种其它类应用,例如人机对话类应用、模型训练类应用、文本处理类应用、网页浏览器应用、购物类应用、搜索类应用、即时通信工具、邮箱客户端、社交平台软件等。
服务端200可以包括提供各种服务的服务器,例如为多个客户端提供通信服务的服务器,又如为客户端上使用的模型提供支持的用于后台训练的服务器,又如对客户端发送的数据进行处理的服务器等。需要说明的是,服务端200可以实现成多个服务器组成的分布式服务器集群,也可以实现成单个服务器。服务器也可以为分布式***的服务器,或者是结合了区块链的服务器。服务器也可以是云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、内容分发网络(CDN,Content DeliveryNetwork)以及大数据和人工智能平台等基础云计算服务的云服务器,或者是带人工智能技术的智能云计算服务器或智能云主机。
值得说明的是,本说明书实施例中提供的数据存储方法一般由服务端执行,但是,在本说明书的其它实施例中,客户端也可以与服务端具有相似的功能,从而执行本说明书实施例所提供的数据存储方法。在其它实施例中,本说明书实施例所提供的数据存储方法还可以是由客户端与服务端共同执行。
参见图2,图2示出了本说明书一个实施例提供的一种数据存储方法的流程图,应用于数据存储***,数据存储***包括多个存储节点,存储节点包括主节点和备节点,具体包括以下步骤:
步骤202:获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个。
本说明书一个或多个实施例中,可以获取第一主节点的待存储数据,对待存储数据进行存储。
具体地,第一主节点是指多个主节点(Master Node)中的任一个。主节点负责管理数据的读写操作,维护***的状态信息,以及进行必要的数据管理和调度任务。实际应用中,主节点可以被称为“控制节点”或者“协调节点”。当客户端需要读取数据或者存储数据时,通常会首先与主节点交互。备节点(Slave Node)是为主节点提供备份和故障切换功能的节点。实际应用中,备节点可以被称为“从节点”。备节点用于在主节点发生故障或无法服务时,能够接管主节点的职责,保证***的连续运行和数据的完整性。备节点通常会实时或定期从主节点同步数据和状态信息,以确保在需要的时候能够快速切换并提供服务。通过设置主节点和备节点,数据存储***可以实现高可用性和容错能力,降低由于单点故障导致的***中断风险。
待存储数据是指待存储至第一主节点的数据,第一主节点为待存储数据的目标存储位置。待存储数据可以是日志、消息等等。待存储数据可以是不同工业日志场景中的数据,场景如有大量消息传递但不需要消息顺序的消息传递场景,又如需要严格保证消息顺序的流处理场景。其中,消息传递场景包括但不限于物联网场景,流处理场景包括但不限于金融场景、订单场景、银行场景。
需要说明的是,传统的主从架构中,主节点和备节点会被分配到不同的机器上,导致机器利用率低下。因此,为了提高机器的利用率,在高可用的集群中,本说明书实施例在数据存储***中设置了容纳单元(Container),容纳单元可以支持多个broker在同一台机器上共存,每个broker都包含了主导者和追随者分区,使得一台机器可以同时扮演主节点或备节点的角色,避免了一些机器作为备节点而处于空闲状态,从而节约了资源,避免浪费。
参见图3,图3示出了本说明书一个实施例提供的一种数据存储***中容纳单元的结构示意图,如图3所示,容纳单元中的主导者和追随者是以broker为粒度的设置的,容纳单元包括主节点A和备节点B,主节点A中存储的数据主题包括主题A、主题B,备节点B中存储的数据主题包括主题C、主题D。从而可以实现根据数据类型,在主节点宕机时选择性进行节点选举,如在不要求严格数据顺序、且第一主节点宕机时,不进行节点选举,在严格数据顺序、且第一主节点宕机时进行节点选举,从而根据数据类型的不同灵活地确定数据存储节点,提高了数据存储的灵活性。
实际应用中,获取第一主节点的待存储数据的方式有多种,具体根据实际情况进行选择,本说明书实施例对此不做任何限定。本说明书一种可能的实现方式中,可以接收用户通过客户端发送的第一主节点的待存储数据。本说明书另一种可能的实现方式中,可以从其他数据获取设备或数据库中读取第一主节点的待存储数据。
本说明书一种可选的实施例中,获取第一主节点的待存储数据之后,可以判断第一主节点是否故障,若第一主节点故障,说明第一主节点无法存储待存储数据;若第一主节点未故障,说明第一主节点可以存储待存储数据,也即,上述获取第一主节点的待存储数据之后,还可以包括以下步骤:
在第一主节点未故障的情况下,将待存储数据存储至第一主节点;
从第一主节点中获取存储确认信息,并将存储确认信息发送至客户端,其中,存储确认信息为第一备节点存储第一主节点同步的待存储数据之后发送至第一主节点的,第一备节点为第一主节点对应的备节点。
需要说明的是,在第一主节点未故障的情况下,可以将待存储数据存储至第一主节点,进一步地,第一主节点可以将待存储数据同步至第一主节点对应的第一备节点中,以对待存储数据进行备份。第一备节点同步完成后,可以向第一主节点发送存储确认信息(act),此时,待存储数据的存储过程完成,可以从第一主节点中获取存储确认信息,并将存储确认信息发送至客户端,使得用户可以感知数据存储状态。
实际应用中,判断第一主节点是否故障的方式有多种,具体根据实际情况进行选择,本说明书实施例对此不做任何限定。本说明书一种可能的实现方式中,可以根据待存储数据是否存储成功判断第一主节点是否故障。本说明书另一种可能的实现方式中,可以通过心跳检测方式判断第一主节点是否故障。
应用本说明书实施例的方案,在第一主节点未故障的情况下,将待存储数据存储至第一主节点;从第一主节点中获取存储确认信息,并将存储确认信息发送至客户端。在第一主节点未故障的情况下将待存储数据存储至第一主节点,保证了数据存储的成功率。
本说明书一种可选的实施例中,上述获取第一主节点的待存储数据之后,还可以包括以下步骤:
在第一主节点存储待存储数据失败的情况下,确定第一主节点故障;和/或,
在第一主节点发送的第一心跳过期的情况下,确定第一主节点故障。
需要说明的是,心跳是一种定期的、简短的信号或消息,心跳用于表明节点在线并正常运行。数据存储***中的节点通常会定期发送心跳给其他节点或管理服务器,以表明它们仍在正常运行。如果某个节点停止发送心跳或者心跳过期(间隔超过预设阈值),表示该节点出现故障。
实际应用中,消息传递场景中,通常可以判断第一主节点存储待存储数据是否失败,从而确定第一主节点是否故障;在消息传递场景中,通常可以判断第一主节点发送的第一心跳是否过期,或第一主节点是否发送第一心跳,从而确定第一主节点是否故障。
应用本说明书实施例的方案,在第一主节点存储待存储数据失败的情况下,确定第一主节点故障;和/或,在第一主节点发送的第一心跳过期的情况下,确定第一主节点故障。通过不同的方式确定第一主节点是否存在故障,提高了故障确定方式的灵活性。
步骤204:在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型。
本说明书一个或多个实施例中,获取第一主节点的待存储数据之后,进一步地,在第一主节点故障的情况下,可以对待存储数据进行类型识别,确定待存储数据的数据类型。
具体地,数据类型包括但不限于非连续数据类型、连续数据类型。例如,消息传递场景中的数据为非连续数据类型,流处理场景中的数据为连续数据类型。
实际应用中,对待存储数据进行类型识别,确定待存储数据的数据类型的方式有多种,具体根据实际情况进行选择,本说明书实施例对此不做任何限定。本说明书一种可能的实现方式中,可以使用数据分析工具提取待存储数据中的时间戳,根据时间戳判断待存储数据的数据类型。本说明书另一种可能的实现方式中,可以利用预先训练的类型识别模型对待存储数据进行类型识别,确定待存储数据的数据类型。
步骤206:根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点。
本说明书一个或多个实施例中,获取第一主节点的待存储数据;在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型之后,进一步地,可以根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点。
需要说明的是,由于第一主节点出现故障,因此,选择存储待存储数据的目标存储节点时,可以从第一主节点以外的存储节点中筛选,避免将第一主节点确定为目标主节点,导致数据存储失败。
实际应用中,目标主节点可以基于同步状态集选举得到,也可以是与第一备节点位于同一存储单元的第二主节点,目标主节点的筛选方式根据待存储数据的数据类型确定,本说明书实施例对此不做任何限定。
步骤208:将待存储数据存储至目标主节点。
本说明书一个或多个实施例中,获取第一主节点的待存储数据;在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点之后,进一步地,可以将待存储数据存储至目标主节点。
应用本说明书实施例的方案,由于目标主节点是根据待存储数据的数据类型从第一主节点以外的存储节点中筛选得到的,因此,本方案可以兼容多种数据类型,提供适用于多种场景的高可用性存储解决方案,并且,每个存储节点包括主节点和备节点,使得一台机器可以同时扮演主节点和备节点的角色,避免了一些机器作为备节点而处于空闲状态,节约了资源,提高了存储性能。
本说明书一种可选的实施例中,为了提高数据存储过程的透明度,本说明书实施例中,在数据存储***中设置了通知单元(Notifier),通知单元用向客户端通知数据存储路有变化,完成故障恢复,也即,上述数据存储方法,还可以包括以下步骤:
获取第一主节点的故障状态;
根据故障状态,向客户端发送存储路由信息。
需要说明的是,通知单元是一个故障报告组件,可以保存存储路由信息。存储路由信息用于表征数据从源地址到目标地址的路径。通知单元可以内置于提供路由服务的集群中,还可以由客户端主动对broker进行探测构建得到。在发生broker故障时,通知单元可以及时更新客户端的路由信息。在集群恢复后,通知单元可以通知客户端新的可用broker的路由。集群恢复过程中,不仅需要恢复broker,还需要适应客户端以确保恢复的有效性。
实际应用中,通知单元可以获取第一主节点的故障状态,在故障状态为未故障的情况下,确定存储路由信息为存储于第一主节点;在故障状态为故障的情况下,确定存储路由信息为存储于目标主节点。
应用本说明书实施例的方案,获取第一主节点的故障状态;根据故障状态,向客户端发送存储路由信息。通过根据故障状态,向客户端发送存储路由信息,使得客户端的数据发送和消费过程可以在发生故障时保持不间断。
本说明书一种可选的实施例中,数据类型包括非连续数据类型;上述根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点,可以包括以下步骤:
在根据非连续数据类型,确定待存储数据为非连续型数据的情况下,从多个存储节点中,确定第一主节点对应的第一备节点;
将与第一备节点位于同一存储节点的第二主节点确定为目标主节点。
具体地,第一备节点与第二主节点位于同一存储节点可以理解为第一备节点和第二主节点位于同一个机器中。非连续数据类型是指不具有时间连续性质的数据类型。非连续型数据可以理解为离散数据,包括但不限于商品数、人数。
需要说明的是,根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点时,可能需要进行节点选举,以确定目标主节点,因此,本说明书实施例在数据存储***中设置了可以参与节点选举,也可以不参与节点选举的替代单元(Impostor),替代单元用于使broker具有更多不同的角色,例如作为简单的备节点或充当主节点提供服务。例如,可以将第一主节点对应的第一备节点确定为替代单元,第一备节点可以根据数据类型决定是否承担完整的主节点任务,其中,完整的主节点任务是指数据的写入、数据的读取、应用程序编程接口(API,Application Programming Interface)的响应(如获取集群元数据)等等。若第一备节点不承担完整的主节点任务,可以仅承担数据的读取任务,无需承担数据的写入以及应用程序编程接口的响应。
实际应用中,如果替代单元暴露给客户端,为了提高客户端的易用性,即使替代单元实际上是备节点,在客户端的视角中也会显示为主节点。将第二主节点确定为目标主节点之后,可以将待存储数据中的特殊消息(如定时消息)转发至第二主节点,保证特殊消息的正常投递。
应用本说明书实施例的方案,在根据非连续数据类型,确定待存储数据为非连续型数据的情况下,从多个存储节点中,确定第一主节点对应的第一备节点;将与第一备节点位于同一存储节点的第二主节点确定为目标主节点。在不要求严格数据顺序、且第一主节点宕机时,不进行重新选举,直接将第二主节点确定为目标主节点继续提供服务,不会损失数据,也避免了选举成本,实现了高性能的数据存储。
本说明书一种可选的实施例中,上述将与第一备节点位于同一存储节点的第二主节点确定为目标主节点之后,还可以包括以下步骤:
在第一主节点故障未恢复的情况下,将发送至第一主节点的待存储数据存储至目标主节点。
需要说明的是,在待存储数据为非连续型数据的情况下,将第二主节点确定为目标主节点之后,若第一主节点故障未恢复,后续第一主节点的非连续数据类型的待存储数据可以直接存储至第二主节点,无需再从第一主节点以外的存储节点中进行节点筛选。
应用本说明书实施例的方案,在第一主节点故障未恢复的情况下,将发送至第一主节点的待存储数据存储至目标主节点,提高了数据存储效率。
本说明书一种可选的实施例中,上述将待存储数据存储至目标主节点之后,还可以包括以下步骤:
响应于针对待存储数据的数据获取请求,从第一备节点中读取待存储数据。
需要说明的是,在待存储数据为非连续型数据的情况下,第一备节点仅承担数据的读取任务,不承担完整的主节点任务,此时,响应于针对待存储数据的数据获取请求,可以直接从第一备节点中读取待存储数据。
应用本说明书实施例的方案,响应于针对待存储数据的数据获取请求,从第一备节点中读取待存储数据,实现了快速、准确地获取待存储数据。
参见图4,图4示出了本说明书一个实施例提供的一种数据存储方法的处理过程流程图,图4中的四条横线分别代表客户端、第一主节点、第一备节点、第二主节点,其中,第一备节点和第二备节点位于同一机器中;在消息传递场景下,当第一主节点出现故障时,响应于客户端的请求过程如图4所示,具体包括以下三个阶段:
第一主节点故障之前:客户端向第一主节点发送待存储数据,第一主节点存储待存储数据,并将待存储数据同步至第一备节点,第一备节点向第一主节点发送存储确认信息,第一主节点将存储确认信息返回给客户端代表数据存储成功;第一主节点提供数据读取服务;
第一主节点故障中:待存储数据发送到第一主节点的过程全部失败时,确定第一主节点故障,此时,由于消息传递场景中的待存储数据为非连续型数据,因此,第一备节点不参与选举,可以把特殊消息发送至第二主节点中,以保证这部分消息正常投递;第一备节点提供数据读取服务;在第一主节点故障未恢复的情况下,待存储数据直接发送至第二主节点进行存储;
第一主节点故障恢复之后:第一主节点故障恢复之后的行为和第一主节点故障之前一致,本说明书实施例便不再进行赘述。
本说明书一种可选的实施例中,数据类型包括连续数据类型;上述根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点,可以包括以下步骤:
在根据连续数据类型,确定待存储数据为连续型数据的情况下,获取同步状态集,其中,同步状态集包括主节点和备节点之间的数据同步关系;
根据数据同步关系,从第一主节点以外的存储节点中选举出目标主节点。
具体地,同步状态集(Synchronization-State Set)中存储了主节点和备节点之间的同步状态,当第一主节点故障时,可以从同步状态集中选举一个数据复制进度同步的备节点作为新的主节点,并通知所有节点。
本说明书实施例中,可以在主节点中设置适应单元(Regulator),适应单元用于确定备节点是否与主节点同步。各个备节点每次进行数据同步任务时,都可以向适应单元汇报自己的数据复制情况,即位点。当这个位点和主节点的位点之间的差异小于设置的阈值时,则可以确定主节点和备节点同步。这里的同步指数据复制进度正常。对于处于同步状态的备节点,适应单元可以将它们包含在同步状态集中。如果同步过程太慢(由于网络或硬件问题),适应单元可以将其移出同步状态集,后续数据的发送不需要该备节点确认。为了避免数据丢失,成功的同步是至关重要的。适应单元可以监测每个备节点的同步进度,并评估同步状态。如果备节点无法及时跟上主节点的数据变化,适应单元会触发相应的处理机制,如重新同步或发出警报。
参见图5,图5示出了本说明书一个实施例提供的一种数据存储方法中适应单元的处理流程示意图,如图5所示,控制单元中包括同步状态集,多个控制单元中保持数据一致。存储节点A中包括主节点1、备节点2和备节点3,存储节点B中包括主节点1、备节点2(等待同步)和备节点3,存储节点C中包括主节点1、备节点2和备节点3。所有适应单元都会保存主节点和备节点的数据同步情况。并且数据同步情况可以上报给控制单元,其中,存储节点A、存储节点B的主节点1,存储节点C中的主节点3进行同步情况上报。位于同步状态集的备节点列表是控制单元中的核心数据。当主节点发生故障时,控制单元将从同步状态集中选举出一个备节点作为新的主节点,并通知所有的节点。如存储单元C集群中,主节点1已经故障,主节点3是控制单元重新选举出来的主节点,并会承担同步状态集的上报任务。
需要说明的是,若待存储数据为连续型数据,说明数据传递过程中具有严格的顺序关系,此时,可以获取同步状态集,根据数据同步关系进行节点选举,确定目标主节点。因此,本说明书实施例在数据存储***中设置了独立实现、独立部署,并具备容错能力的控制单元(Controller),控制单元是节点选举的核心组件,用于从全局角度为合适的broker分配主导者状态,也即将合适的broker确定为目标主节点。
实际应用中,根据数据同步关系,从第一主节点以外的存储节点中选举出目标主节点的方式有多种,具体根据实际情况进行选择,本说明书实施例对此不做任何限定。本说明书一种可能的实现方式中,可以随机选举一个数据复制进度同步的备节点作为新的主节点。
本说明书另一种可能的实现方式中,可以直接将第一主节点对应的第一备节点确定为目标主节点,也即,上述根据数据同步关系,从第一主节点以外的存储节点中选举出目标主节点,可以包括以下步骤:
根据数据同步关系,从第一主节点以外的存储节点中选举出第一备节点,其中,第一备节点为第一主节点对应的备节点;
将第一备节点确定为目标主节点。
需要说明的是,由于第一备节点为第一主节点对应的备节点,第一备节点与第一主节点之间的数据复制进度同步性较高,因此,可以直接将第一备节点确定为目标主节点,保证集群的高可用性。
参见图6,图6示出了本说明书一个实施例提供的一种数据存储方法中节点选举的流程图,如图6所示,节点选举过程包括以下三个阶段:
节点选举之前:备节点1和备节点2向控制单元和路由服务进行注册;
节点选举中:控制单元将备节点1选举为主节点,并通知所有节点;
节点选举之后:主节点和备节点2均向控制单元和路由服务注册,并且主节点的数据会向备节点2同步。
应用本说明书实施例的方案,在根据连续数据类型,确定待存储数据为连续型数据的情况下,获取同步状态集;根据数据同步关系,从第一主节点以外的存储节点中选举出目标主节点,通过为合适的broker分配主导者状态,将其作为目标主节点,保证了集群的高可用性。
本说明书一种可选的实施例中,上述根据数据同步关系,从第一主节点以外的存储节点中选举出目标主节点之后,还可以包括以下步骤:
在第一主节点故障恢复的情况下,同步第一主节点和目标主节点的数据;
在数据同步完成的情况下,将第一主节点确定为目标主节点。
需要说明的是,在第一主节点故障恢复之后,第一主节点可以参与节点选举,重新承担完整的主节点任务。进一步地,由于第一主节点故障的过程中,遗漏了部分数据,因此,在第一主节点参与节点选举之前,可以同步第一主节点和目标主节点的数据,保证第一主节点追上目标主节点的数据同步进度,从而在数据同步完成的情况下,将第一主节点确定为目标主节点。
应用本说明书实施例的方案,在第一主节点故障恢复的情况下,同步第一主节点和目标主节点的数据;在数据同步完成的情况下,将第一主节点确定为目标主节点,保证了第一主节点数据的完整性。
参见图7,图7示出了本说明书一个实施例提供的另一种数据存储方法的处理过程流程图,图7中的四条横线分别代表客户端、第一主节点、第一备节点、控制单元;在流处理场景下,当第一主节点出现故障时,响应于客户端的请求过程如图7所示,具体包括以下三个阶段:
第一主节点故障之前:客户端向第一主节点发送待存储数据,第一主节点存储待存储数据,并将待存储数据同步至第一备节点,第一备节点向第一主节点发送存储确认信息,第一主节点将存储确认信息返回给客户端代表数据存储成功;第一主节点提供数据读取服务;同时,第一主节点向控制单元发送心跳,以告知控制单元其未故障,此时不触发节点选举;
第一主节点故障中:第一主节点发生故障之后,第一主节点停止向控制单元发送心跳,此时控制单元中的心跳列表确定第一主节点的心跳过期,触发选举;选举过程中,第一备节点参与选举,提供和第一主节点一样的服务,如数据读取,存储发送的数据;
第一主节点故障恢复之后:第一主节点故障恢复之后,第一主节点重新发送心跳,并参与节点选举,进一步地,第一主节点进行数据同步,追上第一备节点的数据同步进度,控制单元重新选举第一主节点为目标主节点,之后,第一主节点的行为与第一主节点故障之前一致。
本说明书一种可选的实施例中,上述同步第一主节点和目标主节点的数据,可以包括以下步骤:
获取数据存储过程中的存储偏移位点和第一主节点的数据截断位点;
根据数据截断位点和存储偏移位点,确定数据同步位点;
将目标主节点中,数据同步位点之后的数据同步至第一主节点。
需要说明的是,由于节点重新选举之后可能会出现节点之间数据不一致的问题,为了更好地符合云原生的设计理念,本说明书实施例在数据存储***中设置了独立于控制单元和broker存储服务的合并单元(Merger),合并单元用于负责数据的复制和合并过程,确保节点之间的数据同步。
实际应用中,数据存储过程中,合并单元可以在准备(Ready)阶段、握手(Handshake)阶段、传输(Transfer)阶段和关闭(Shutdown)阶段进行操作,其中,主节点和备节点在准备阶段建立高可用性(HA,High Availability)连接;主节点和备节点在握手阶段握手,合并单元在握手阶段将备节点中的不合理存储进行截断,为复制做准备;主节点和备节点在传输节点正常进行数据传输;主节点和备节点在关闭阶段结束同步,断开连接。
在数据处理***中,我们增加一个时代(epoch)文件来记录时代和其对应的起始物理偏移(startOffset)。其中,epoch表示主节点的任期号码,来确保在每个时代中,主节点都是唯一的。如果主节点发生故障,则控制单元会选出一个新的主节点。此时会赋予新的主节点一个递增的新epoch,并记录该主节点在这个epoch对应任期下的起始物理偏移,依靠epoch和起始物理偏移可以保证主备节点切换后数据的一致性。
参见图8,图8示出了本说明书一个实施例提供的一种数据存储方法中合并单元的处理流程示意图,图8中包括主节点的日志和备节点的日志,日志中分别包括主题A、主题B和主题C。主节点的日志中,各主题对应的位点如图8所示。备节点可以从后向前找到最大的时代-起始物理偏移一致的位点,也即图8中的<8,2250>点,然后截断到这个位点,开始向后复制。这种复制在数据存储***中有单独的一个服务去执行,因此主备的复制和选举过程其实是解耦开的,只有当合并单元将一个备节点尽可能跟上主节点时,这个备节点才会被纳入同步状态集。
参见图9,图9示出了本说明书一个实施例提供的另一种数据存储***的架构图,数据存储***由客户端和服务端组成,服务端包括六种解耦的单元(容纳单元、通知单元、替代单元、合并单元、控制单元以及适应单元)组成,这六个单元可以以可插拔的方式实现,提供了灵活性和可扩展性,以最合适的成本实现各个场景的高可用性。并且,该数据存储***是一种设计范式,适用于所有“基于日志存储的软件”。如图9所示:
容纳单元允许多个broker在同一台机器上共存,提高机器利用率,例如,broker1中包括主节点A和替代单元B,主节点A中设置有适应单元,broker2中包括主节点B和替代单元C,主节点B中设置有适应单元,broker3中包括主节点C和替代单元A,主节点C中设置有适应单元;
替代单元使broker具有更多不同的角色,提高机器的灵活性;
通知单元及时通知客户端路由变化,保证故障恢复;
控制单元为合适的broker分配主导者状态,保证集群的高可用性;
合并单元确保主节点和备节点之间的数据同步,避免数据不一致性;
适应单元在主节点中确定处于同步状态的节点,并向控制单元报告。
这六个单元共同构成了一个可靠、高效的高可用设计范式,能够应对各种故障和数据同步的场景,保证数据的一致性和可靠性。
需要说明的是,通知单元、容纳单元、替代单元以及合并单元是各场景都通用的组件,对于消息传递场景,通知单元、容纳单元、替代单元以及合并单元就可以满足场景的高可用条件,而且能让恢复时间压缩到秒级别。但对于流处理场景,还需要额外配合使用控制单元和使用单元,实现节点选举。
实际应用中,针对本说明书实施例所提出的数据存储方案,进行了混沌测试,实验结果表明,该方案能够有效地实现***的高可用性,在故障期间能够提供低延迟、高吞吐量和无消息丢失的容错能力,并在消息传递和流处理场景下具有优异的恢复性能。经过测试,该方案的数据恢复时间(RTO,RecoveryTime Objective)在消息传递场景下约为1秒,流场景下约为3秒。具体地,实验中,通过注入多个故障类型(包括broker崩溃和网络分区),对本说明书实施例所提出的数据存储***进行了性能测试:
参见图10,图10示出了本说明书一个实施例提供的一种数据存储方法的性能测试结果示意图,如图10所示,横轴为时间(单位是秒),纵轴为吞吐量(单位是兆字节每秒)。图10中的(a)用于展示随机故障两个代理(16个分区)得到吞吐量结果,图10中的(b)用于展示随机故障两个代理(1个分区)得到吞吐量结果,图10中的(c)用于展示随机网络分区(16个分区)的吞吐量结果、图10中的(d)用于展示随机网络分区(1个分区)的吞吐量结果。
参见图11,图11示出了本说明书一个实施例提供的另一种数据存储方法的性能测试结果示意图,如图11所示,图11中的(a)用于展示使用或不使用高可用性方案时的聚合发布延迟,其中,图11中的(a)的横轴为性能指标TP(Top Percentile)值,包括平均值、TP50、TP95、TP99、TP99.9、TP99.99、最大值,纵轴为聚合发布延迟(单位是毫秒);图11中的(b)用于展示使用或不使用高可用性方案的平均发布率,其中,图11中的(b)的横轴为时间(单位是分钟),纵轴为平均发布率(单位是兆字节每秒)。
实验结果显示,数据存储***在故障发生后能够迅速恢复,并且具有较短的恢复时间。此外,在多个分区和频繁故障的情况下,数据存储***的恢复时间无显著增加,这说明分区数不会使数据存储***的恢复成本提高。值得注意的是,该方案对于慢速数据的传递过程有所改进,可以降低TP99.99和最大发送延迟时间。
与上述方法实施例相对应,本说明书还提供了数据存储装置实施例,图12示出了本说明书一个实施例提供的一种数据存储装置的结构示意图。如图12所示,该装置应用于数据存储***,数据存储***包括多个存储节点,存储节点包括主节点和备节点,包括:
获取模块1202,被配置为获取第一主节点的待存储数据,其中,第一主节点为多个主节点中的任一个;
识别模块1204,被配置为在第一主节点故障的情况下,对待存储数据进行类型识别,确定待存储数据的数据类型;
筛选模块1206,被配置为根据数据类型,从第一主节点以外的存储节点中筛选出待存储数据对应的目标主节点;
第一存储模块1208,被配置为将待存储数据存储至目标主节点。
可选地,数据类型包括非连续数据类型;筛选模块1206,进一步被配置为在根据非连续数据类型,确定待存储数据为非连续型数据的情况下,从多个存储节点中,确定第一主节点对应的第一备节点;将与第一备节点位于同一存储节点的第二主节点确定为目标主节点。
可选地,该装置还包括:第二存储模块,被配置为在第一主节点故障未恢复的情况下,将发送至第一主节点的待存储数据存储至目标主节点。
可选地,该装置还包括:读取模块,被配置为响应于针对待存储数据的数据获取请求,从第一备节点中读取待存储数据。
可选地,数据类型包括连续数据类型;筛选模块1206,进一步被配置为在根据连续数据类型,确定待存储数据为连续型数据的情况下,获取同步状态集,其中,同步状态集包括主节点和备节点之间的数据同步关系;根据数据同步关系,从第一主节点以外的存储节点中选举出目标主节点。
可选地,筛选模块1206,进一步被配置为根据数据同步关系,从第一主节点以外的存储节点中选举出第一备节点,其中,第一备节点为第一主节点对应的备节点;将第一备节点确定为目标主节点。
可选地,该装置还包括:同步模块,被配置为在第一主节点故障恢复的情况下,同步第一主节点和目标主节点的数据;在数据同步完成的情况下,将第一主节点确定为目标主节点。
可选地,确定模块,进一步被配置为获取数据存储过程中的存储偏移位点和第一主节点的数据截断位点;根据数据截断位点和存储偏移位点,确定数据同步位点;将目标主节点中,数据同步位点之后的数据同步至第一主节点。
可选地,该装置还包括:第三存储模块,被配置为在第一主节点未故障的情况下,将待存储数据存储至第一主节点;从第一主节点中获取存储确认信息,并将存储确认信息发送至客户端,其中,存储确认信息为第一备节点存储第一主节点同步的待存储数据之后发送至第一主节点的,第一备节点为第一主节点对应的备节点。
可选地,该装置还包括:确定模块,被配置为在第一主节点存储待存储数据失败的情况下,确定第一主节点故障;和/或,在第一主节点发送的第一心跳过期的情况下,确定第一主节点故障。
可选地,该装置还包括:发送模块,被配置为获取第一主节点的故障状态;根据故障状态,向客户端发送存储路由信息。
应用本说明书实施例的方案,由于目标主节点是根据待存储数据的数据类型从第一主节点以外的存储节点中筛选得到的,因此,本方案可以兼容多种数据类型,提供适用于多种场景的高可用性存储解决方案,并且,每个存储节点包括主节点和备节点,使得一台机器可以同时扮演主节点和备节点的角色,避免了一些机器作为备节点而处于空闲状态,节约了资源,提高了存储性能。
上述为本实施例的一种数据存储装置的示意性方案。需要说明的是,该数据存储装置的技术方案与上述的数据存储方法的技术方案属于同一构思,数据存储装置的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
图13示出了本说明书一个实施例提供的一种计算设备的结构框图。该计算设备1300的部件包括但不限于存储器1310和处理器1320。处理器1320与存储器1310通过总线1330相连接,数据库1350用于保存数据。
计算设备1300还包括接入设备1340,接入设备1340使得计算设备1300能够经由一个或多个网络1360通信。这些网络的示例包括公用交换电话网(PSTN,Public SwitchedTelephone Network)、局域网(LAN,Local Area Network)、广域网(WAN,Wide AreaNetwork)、个域网(PAN,Personal Area Network)或诸如因特网的通信网络的组合。接入设备1340可以包括有线或无线的任何类型的网络接口(例如,网络接口卡(NIC,NetworkInterface Card))中的一个或多个,诸如IEEE802.11无线局域网(WLAN,Wireless LocalArea Networks)无线接口、全球微波互联接入(Wi-MAX,World Interoperability forMicrowave Access)接口、以太网接口、通用串行总线(USB,Universal Serial Bus)接口、蜂窝网络接口、蓝牙接口、近场通信(NFC,Near Field Communication)接口,等等。
在本说明书的一个实施例中,计算设备1300的上述部件以及图13中未示出的其他部件也可以彼此相连接,例如通过总线。应当理解,图13所示的计算设备结构框图仅仅是出于示例的目的,而不是对本说明书范围的限制。本领域技术人员可以根据需要,增添或替换其他部件。
计算设备1300可以是任何类型的静止或移动计算设备,包括移动计算机或移动计算设备(例如,平板计算机、个人数字助理、膝上型计算机、笔记本计算机、上网本等)、移动电话(例如,智能手机)、可佩戴的计算设备(例如,智能手表、智能眼镜等)或其他类型的移动设备,或者诸如台式计算机或个人计算机(PC,Personal Computer)的静止计算设备。计算设备1300还可以是移动式或静止式的服务器。
其中,处理器1320用于执行如下计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法的步骤。
上述为本实施例的一种计算设备的示意性方案。需要说明的是,该计算设备的技术方案与上述的数据存储方法的技术方案属于同一构思,计算设备的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
本说明书一实施例还提供一种计算机可读存储介质,其存储有计算机可执行指令,该计算机可执行指令被处理器执行时实现上述数据存储方法的步骤。
上述为本实施例的一种计算机可读存储介质的示意性方案。需要说明的是,该存储介质的技术方案与上述的数据存储方法的技术方案属于同一构思,存储介质的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
本说明书一实施例还提供一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现上述数据存储方法的步骤。
上述为本实施例的一种计算机程序产品的示意性方案。需要说明的是,该计算机程序产品的技术方案与上述的数据存储方法的技术方案属于同一构思,计算机程序产品的技术方案未详细描述的细节内容,均可以参见上述数据存储方法的技术方案的描述。
上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
所述计算机指令包括计算机程序代码,所述计算机程序代码可以为源代码形式、对象代码形式、可执行文件或某些中间形式等。所述计算机可读介质可以包括:能够携带所述计算机程序代码的任何实体或装置、记录介质、U盘、移动硬盘、磁碟、光盘、计算机存储器、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、电载波信号、电信信号以及软件分发介质等。需要说明的是,所述计算机可读介质包含的内容可以根据专利实践的要求进行适当的增减,例如在某些地区,根据专利实践,计算机可读介质不包括电载波信号和电信信号。
需要说明的是,对于前述的各方法实施例,为了简便描述,故将其都表述为一系列的动作组合,但是本领域技术人员应该知悉,本说明书实施例并不受所描述的动作顺序的限制,因为依据本说明书实施例,某些步骤可以采用其它顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定都是本说明书实施例所必须的。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。
以上公开的本说明书优选实施例只是用于帮助阐述本说明书。可选实施例并没有详尽叙述所有的细节,也不限制该发明仅为所述的具体实施方式。显然,根据本说明书实施例的内容,可作很多的修改和变化。本说明书选取并具体描述这些实施例,是为了更好地解释本说明书实施例的原理和实际应用,从而使所属技术领域技术人员能很好地理解和利用本说明书。本说明书仅受权利要求书及其全部范围和等效物的限制。

Claims (15)

1.一种数据存储方法,应用于数据存储***,所述数据存储***包括多个存储节点,所述存储节点包括主节点和备节点,所述方法包括:
获取第一主节点的待存储数据,其中,所述第一主节点为多个主节点中的任一个;
在所述第一主节点故障的情况下,对所述待存储数据进行类型识别,确定所述待存储数据的数据类型;
根据所述数据类型,从所述第一主节点以外的存储节点中筛选出所述待存储数据对应的目标主节点;
将所述待存储数据存储至所述目标主节点。
2.根据权利要求1所述的数据存储方法,所述数据类型包括非连续数据类型;
所述根据所述数据类型,从所述第一主节点以外的存储节点中筛选出所述待存储数据对应的目标主节点,包括:
在根据所述非连续数据类型,确定所述待存储数据为非连续型数据的情况下,从所述多个存储节点中,确定所述第一主节点对应的第一备节点;
将与所述第一备节点位于同一存储节点的第二主节点确定为所述目标主节点。
3.根据权利要求2所述的数据存储方法,所述将与所述第一备节点位于同一存储节点的第二主节点确定为所述目标主节点之后,还包括:
在所述第一主节点故障未恢复的情况下,将发送至所述第一主节点的待存储数据存储至所述目标主节点。
4.根据权利要求2所述的数据存储方法,所述将所述待存储数据存储至所述目标主节点之后,还包括:
响应于针对所述待存储数据的数据获取请求,从所述第一备节点中读取所述待存储数据。
5.根据权利要求1所述的数据存储方法,所述数据类型包括连续数据类型;
所述根据所述数据类型,从所述第一主节点以外的存储节点中筛选出所述待存储数据对应的目标主节点,包括:
在根据所述连续数据类型,确定所述待存储数据为连续型数据的情况下,获取同步状态集,其中,所述同步状态集包括所述主节点和所述备节点之间的数据同步关系;
根据所述数据同步关系,从所述第一主节点以外的存储节点中选举出目标主节点。
6.根据权利要求5所述的数据存储方法,所述根据所述数据同步关系,从所述第一主节点以外的存储节点中选举出目标主节点,包括:
根据所述数据同步关系,从所述第一主节点以外的存储节点中选举出第一备节点,其中,所述第一备节点为所述第一主节点对应的备节点;
将所述第一备节点确定为所述目标主节点。
7.根据权利要求5所述的数据存储方法,所述根据所述数据同步关系,从所述第一主节点以外的存储节点中选举出目标主节点之后,还包括:
在所述第一主节点故障恢复的情况下,同步所述第一主节点和所述目标主节点的数据;
在数据同步完成的情况下,将所述第一主节点确定为所述目标主节点。
8.根据权利要求7所述的数据存储方法,所述同步所述第一主节点和所述目标主节点的数据,包括:
获取数据存储过程中的存储偏移位点和所述第一主节点的数据截断位点;
根据所述数据截断位点和所述存储偏移位点,确定数据同步位点;
将所述目标主节点中,所述数据同步位点之后的数据同步至所述第一主节点。
9.根据权利要求1所述的数据存储方法,所述获取第一主节点的待存储数据之后,还包括:
在所述第一主节点未故障的情况下,将所述待存储数据存储至所述第一主节点;
从所述第一主节点中获取存储确认信息,并将所述存储确认信息发送至客户端,其中,所述存储确认信息为第一备节点存储所述第一主节点同步的待存储数据之后发送至所述第一主节点的,所述第一备节点为所述第一主节点对应的备节点。
10.根据权利要求1所述的数据存储方法,所述获取第一主节点的待存储数据之后,还包括:
在所述第一主节点存储所述待存储数据失败的情况下,确定所述第一主节点故障;和/或,
在所述第一主节点发送的第一心跳过期的情况下,确定所述第一主节点故障。
11.根据权利要求1所述的数据存储方法,还包括:
获取所述第一主节点的故障状态;
根据所述故障状态,向客户端发送存储路由信息。
12.一种数据存储装置,应用于数据存储***,所述数据存储***包括多个存储节点,所述存储节点包括主节点和备节点,所述装置包括:
获取模块,被配置为获取第一主节点的待存储数据,其中,所述第一主节点为多个主节点中的任一个;
识别模块,被配置为在所述第一主节点故障的情况下,对所述待存储数据进行类型识别,确定所述待存储数据的数据类型;
筛选模块,被配置为根据所述数据类型,从所述第一主节点以外的存储节点中筛选出所述待存储数据对应的目标主节点;
第一存储模块,被配置为将所述待存储数据存储至所述目标主节点。
13.一种计算设备,包括:
存储器和处理器;
所述存储器用于存储计算机程序/指令,所述处理器用于执行所述计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1至11任意一项所述数据存储方法的步骤。
14.一种计算机可读存储介质,其存储有计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1至11任意一项所述数据存储方法的步骤。
15.一种计算机程序产品,包括计算机程序/指令,该计算机程序/指令被处理器执行时实现权利要求1至11任意一项所述数据存储方法的步骤。
CN202410132294.7A 2024-01-30 2024-01-30 数据存储方法以及数据存储装置 Active CN117666970B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202410132294.7A CN117666970B (zh) 2024-01-30 2024-01-30 数据存储方法以及数据存储装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202410132294.7A CN117666970B (zh) 2024-01-30 2024-01-30 数据存储方法以及数据存储装置

Publications (2)

Publication Number Publication Date
CN117666970A true CN117666970A (zh) 2024-03-08
CN117666970B CN117666970B (zh) 2024-05-07

Family

ID=90064545

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202410132294.7A Active CN117666970B (zh) 2024-01-30 2024-01-30 数据存储方法以及数据存储装置

Country Status (1)

Country Link
CN (1) CN117666970B (zh)

Citations (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106802932A (zh) * 2016-12-28 2017-06-06 华为技术有限公司 一种数据库的路由方法、装置及数据库***
US20170270176A1 (en) * 2010-12-23 2017-09-21 Eliot Horowitz System and method for determining consensus within a distributed database
CN111028902A (zh) * 2019-12-09 2020-04-17 天津开心生活科技有限公司 基于节点切换的请求处理方法及装置、设备和介质
WO2021226905A1 (zh) * 2020-05-14 2021-11-18 深圳市欢太科技有限公司 一种数据存储方法、***及存储介质
WO2022083690A1 (zh) * 2020-10-22 2022-04-28 深圳前海微众银行股份有限公司 数据管理方法、装置、设备、计算机存储介质和程序
CN114610532A (zh) * 2022-01-26 2022-06-10 阿里云计算有限公司 数据库处理方法以及装置
CN115220656A (zh) * 2022-06-21 2022-10-21 京东科技信息技术有限公司 数据存储方法及装置、计算机可读存储介质、电子设备
CN116107828A (zh) * 2021-11-11 2023-05-12 中兴通讯股份有限公司 主节点选择方法、分布式数据库及存储介质
WO2023197670A1 (zh) * 2022-04-13 2023-10-19 苏州浪潮智能科技有限公司 一种分布式存储***控制方法、装置及可读存储介质

Patent Citations (10)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20170270176A1 (en) * 2010-12-23 2017-09-21 Eliot Horowitz System and method for determining consensus within a distributed database
CN106802932A (zh) * 2016-12-28 2017-06-06 华为技术有限公司 一种数据库的路由方法、装置及数据库***
CN111028902A (zh) * 2019-12-09 2020-04-17 天津开心生活科技有限公司 基于节点切换的请求处理方法及装置、设备和介质
WO2021226905A1 (zh) * 2020-05-14 2021-11-18 深圳市欢太科技有限公司 一种数据存储方法、***及存储介质
WO2022083690A1 (zh) * 2020-10-22 2022-04-28 深圳前海微众银行股份有限公司 数据管理方法、装置、设备、计算机存储介质和程序
CN116107828A (zh) * 2021-11-11 2023-05-12 中兴通讯股份有限公司 主节点选择方法、分布式数据库及存储介质
WO2023082800A1 (zh) * 2021-11-11 2023-05-19 中兴通讯股份有限公司 主节点选择方法、分布式数据库及存储介质
CN114610532A (zh) * 2022-01-26 2022-06-10 阿里云计算有限公司 数据库处理方法以及装置
WO2023197670A1 (zh) * 2022-04-13 2023-10-19 苏州浪潮智能科技有限公司 一种分布式存储***控制方法、装置及可读存储介质
CN115220656A (zh) * 2022-06-21 2022-10-21 京东科技信息技术有限公司 数据存储方法及装置、计算机可读存储介质、电子设备

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
HAORAN LI 等: "RT-ZooKeeper: Taming the Recovery Latency of a Coordination Service", ACM TRANSACTIONS ON EMBEDDED COMPUTING SYSTEMS, 22 September 2021 (2021-09-22), pages 1 - 22, XP058930139, DOI: 10.1145/3477034 *
马玮骏;王强;何晓晖;张舒;张庆;: "云存储***管理节点故障自恢复算法", 计算机***应用, no. 02, 15 February 2017 (2017-02-15), pages 91 - 97 *

Also Published As

Publication number Publication date
CN117666970B (zh) 2024-05-07

Similar Documents

Publication Publication Date Title
CN110209726B (zh) 分布式数据库集群***、数据同步方法及存储介质
CN110581782B (zh) 一种容灾数据的处理方法、装置及***
CN111090699A (zh) 业务数据的同步方法和装置、存储介质、电子装置
CN107291787A (zh) 主备数据库切换方法和装置
CN113641511A (zh) 一种消息通信方法和装置
CN103870977A (zh) 移动广告平台数据同步方法及其***
CN110392120B (zh) 一种消息推送过程中故障的恢复方法及装置
CN112506702B (zh) 数据中心容灾方法、装置、设备及存储介质
CN111597197B (zh) 数据库之间的数据对账方法和装置、存储介质及电子设备
CN110032478A (zh) 一种主备中心数据实时同步方法、装置、***及存储介质
CN111865632A (zh) 分布式数据存储集群的切换方法及切换指令发送方法和装置
CN112486707A (zh) 基于Redis的消息异步消费方法及装置
CN111597079A (zh) 针对MySQL Galera集群故障的检测和恢复方法及***
CN117666970B (zh) 数据存储方法以及数据存储装置
CN111241200B (zh) 基于SQLite数据库的主备同步处理方法及装置
CN110351122A (zh) 容灾方法、装置、***与电子设备
CN113515574B (zh) 一种数据同步方法及装置
CN100372302C (zh) 一种远程容灾***及方法
CN112306755B (zh) 一种基于微前端架构的高可用性实现方法和***
CN109101372A (zh) 机箱管理板的冗余切换方法、存储介质及机箱管理板
CN113890817A (zh) 一种通信优化方法和装置
CN101453354A (zh) 一种基于atca架构的高可用性***
CN117827544B (zh) 热备份***、方法、电子设备及存储介质
CN110991676B (zh) 一种基于模块化设计的运维管理平台
CN113472469B (zh) 一种数据同步方法、装置、设备及存储介质

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