CN113946287B - 分布式存储系统及其数据处理方法、相关装置 - Google Patents
分布式存储系统及其数据处理方法、相关装置 Download PDFInfo
- Publication number
- CN113946287B CN113946287B CN202111050345.4A CN202111050345A CN113946287B CN 113946287 B CN113946287 B CN 113946287B CN 202111050345 A CN202111050345 A CN 202111050345A CN 113946287 B CN113946287 B CN 113946287B
- Authority
- CN
- China
- Prior art keywords
- node device
- log
- index
- learning
- master node
- 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.)
- Active
Links
- 238000003672 processing method Methods 0.000 title claims abstract description 25
- 238000000034 method Methods 0.000 claims abstract description 64
- 238000004590 computer program Methods 0.000 claims description 12
- 238000012545 processing Methods 0.000 claims description 10
- 238000004891 communication Methods 0.000 claims description 5
- 239000000758 substrate Substances 0.000 claims 6
- 238000010586 diagram Methods 0.000 description 10
- 230000004044 response Effects 0.000 description 7
- 230000002688 persistence Effects 0.000 description 3
- 230000000630 rising effect Effects 0.000 description 3
- 238000007792 addition Methods 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 230000003111 delayed effect Effects 0.000 description 1
- 238000012217 deletion Methods 0.000 description 1
- 230000037430 deletion Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000012986 modification Methods 0.000 description 1
- 230000004048 modification Effects 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 230000010076 replication Effects 0.000 description 1
- 230000001360 synchronised effect Effects 0.000 description 1
Abstract
本申请涉及分布式存储技术领域,公开了分布式存储系统及其数据处理方法、相关装置。分布式存储系统包括主节点设备、至少一个从节点设备和至少一个学习节点设备,主节点设备、从节点设备和学习节点设备用于与至少一个控制设备交互,方法应用于学习节点设备,方法包括:在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求;将第一读请求发送至主节点设备;接收主节点设备发送的对应第一读请求的目标数据;将目标数据进行存储,以及将目标数据发送至目标控制设备。通过上述方式,能够更快地承接读请求的流量,以缓解主节点设备和从节点设备的负载,同时快速响应目标控制设备,提升目标控制设备的用户的体验。
Description
技术领域
本申请涉及分布式存储技术领域,特别是涉及分布式存储系统及其数据处理方法、相关装置。
背景技术
对于分布式存储系统,主节点设备和从节点设备相互配合,主节点设备提供写请求和读请求,从节点设备提供读请求,以此方式增加整个分布式存储系统的读请求吞吐量。
发明人研究发现,如果由于一些特殊情况,导致向分布式存储系统中发起的读请求迅速上升,此时的主节点设备和从节点设备可能无法承载这些读请求。
发明内容
本申请主要解决的技术问题是提供分布式存储系统及其数据处理方法、相关装置,能够更快地承接读请求的流量,以缓解主节点设备和从节点设备的负载。
为了解决上述问题,本申请采用的一种技术方案是提供一种分布式存储系统的数据处理方法,该分布式存储系统包括主节点设备、至少一个从节点设备和至少一个学习节点设备,主节点设备、从节点设备和学习节点设备用于与至少一个控制设备交互,方法应用于学习节点设备,该方法包括:在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求;将第一读请求发送至主节点设备;接收主节点设备发送的对应第一读请求的目标数据;将目标数据进行存储,以及将目标数据发送至目标控制设备。
其中,接收主节点设备发送的对应第一读请求的目标数据,还包括:接收主节点设备发送的对应第一读请求的目标数据和主节点设备当前所应用的第一日志;方法还包括:获取所应用的第二日志;其中,第二日志由学习节点设备从主节点设备中复制至少部分第一日志形成;根据第一日志和第二日志的索引大小关系,对第二日志进行处理。
其中,根据第一日志和第二日志的索引大小关系,对第二日志进行处理,包括:若第一日志的索引大于第二日志的索引,则确定第一日志的索引和第二日志的索引之间的索引差范围;
确定在索引差范围内的第二日志;不执行与读请求相关的索引差范围内的第二日志所记录的操作。
其中,根据第一日志和第二日志的索引大小关系,对第二日志进行处理,包括:若第二日志的索引大于第一日志的索引,则确定第一日志的索引和第二日志的索引之间的索引差范围;确定在索引差范围内的第二日志;以目标数据为基准数据,重新执行与读请求相关的索引差范围内的第二日志所记录的操作。
其中,以目标数据为基准数据,重新执行与读请求相关的第二日志所记录的操作,包括:按照索引差范围内的索引依次执行与读请求相关的索引差范围内的第二日志所记录的操作;将每次更新的目标数据进行存储,以作为下次更新的基准数据。
其中,该方法还包括:在将第一读请求发送至主节点设备之后,接收至少一控制设备中另一目标控制设备发送的第二读请求;若第二读请求和第一读请求对应同一目标;基于第二读请求接收主节点设备当前所应用的第一日志的索引;获取当前所应用的第二日志的索引;在第二日志的索引大于或等于第一日志的索引时,获取学习节点设备中存储的当前的目标数据;将目标数据发送至另一目标控制设备。
其中,将目标数据进行存储之后,包括:接收至少一控制设备中目标控制设备发送的第三读请求;基于第三读请求接收主节点设备当前所应用的第一日志的索引;获取当前所应用的第二日志的索引;在第二日志的索引大于或等于第一日志的索引时,获取学习节点设备中存储的当前的目标数据;将目标数据发送至另一目标控制设备。
其中,学习节点设备中的第二日志的数量小于主节点设备的第一日志的数量。
其中,该方法还包括:获取当前应用的第二日志;若第二日志中的目标没有对应的基准数据,则不执行第二日志中的操作。
为了解决上述问题,本申请采用的另一种技术方案是提供一种分布式存储系统的数据处理方法,该分布式存储系统包括主节点设备、至少一个从节点设备和至少一个学习节点设备,主节点设备、从节点设备和学习节点设备用于与至少一个控制设备交互,方法应用于主节点设备,该方法包括:响应于节点设备创建指令,建立至少一个学习节点设备;接收学习节点设备发送的至少一个读请求;其中,读请求是由至少一控制设备中目标控制设备向学习节点设备发送的;将对应读请求的目标数据发送至学习节点设备,以使学习节点设备将目标数据发送至目标控制设备并将目标数据进行存储。
为了解决上述问题,本申请采用的另一种技术方案是提供一种分布式存储系统,该分布式存储系统包括:主节点设备;至少一个从节点设备,与主节点设备通信连接;至少一个学习节点设备,与主节点设备通信连接;其中,主节点设备、从节点设备和学习节点设备用于与至少一个控制设备交互,学习节点设备用于实现如上述应用于学习节点设备的方法,主节点设备用于实现如上述应用于主节点设备的方法。
为了解决上述问题,本申请采用的另一种技术方案是提供一种节点设备,该节点设备包括处理器以及与处理器耦接的存储器;其中,存储器用于存储计算机程序,处理器用于执行计算机程序,以实现如上述任一技术方案提供的方法。
为了解决上述问题,本申请采用的另一种技术方案是提供一种计算机可读存储介质,该计算机可读存储介质用于存储计算机程序,计算机程序在被处理器执行时,用于实现如上述任一技术方案提供的方法。
本申请的有益效果是:区别于现有技术的情况,本申请提供的分布式存储系统及其数据处理方法、相关装置。该分布式存储系统包括主节点设备、至少一个从节点设备和至少一个学习节点设备,主节点设备、从节点设备和学习节点设备用于与至少一个控制设备交互,该方法应用于学习节点设备,该方法包括:在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求;将第一读请求发送至主节点设备;接收主节点设备发送的对应第一读请求的目标数据;将目标数据进行存储,以及将目标数据发送至目标控制设备。通过上述方式,利用在学习节点创建时就接收读请求,使学习节点设备可以通过不断的响应读请求的方式,渐进式的从主节点设备获取到数据,以此建立起学习节点设备的数据库,相比于相关技术中在学习节点需要接收完所有快照数据后,再响应读请求的方式,能够更快地承接读请求的流量,以缓解主节点设备和从节点设备的负载,同时快速响应目标控制设备,提升目标控制设备的用户的体验。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。其中:
图1是本申请提供的分布式存储系统一实施例的结构示意图;
图2是本申请提供的分布式存储系统另一实施例的结构示意图;
图3是本申请提供的分布式存储系统的数据处理方法一实施例的流程示意图;
图4是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图5是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图6是本申请提供的分布式存储系统的数据处理方法一应用场景示意图;
图7是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图8是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图9是本申请提供的分布式存储系统的数据处理方法另一应用场景示意图;
图10是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图11是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图12是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图;
图13是本申请提供的节点设备一实施例的结构示意图;
图14是本申请提供的计算机可读存储介质一实施例的结构示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述。可以理解的是,此处所描述的具体实施例仅用于解释本申请,而非对本申请的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与本申请相关的部分而非全部结构。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
本申请中的术语“第一”、“第二”等是用于区别不同对象,而不是用于描述特定顺序。此外,术语“包括”和“具有”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、系统、产品或设备没有限定于已列出的步骤或单元,而是可选地还包括没有列出的步骤或单元,或可选地还包括对于这些过程、方法、产品或设备固有的其它步骤或单元。
在本文中提及“实施例”意味着,结合实施例描述的特定特征、结构或特性可以包含在本申请的至少一个实施例中。在说明书中的各个位置出现该短语并不一定均是指相同的实施例,也不是与其它实施例互斥的独立的或备选的实施例。本领域技术人员显式地和隐式地理解的是,本文所描述的实施例可以与其它实施例相结合。
参阅图1,图1是本申请提供的分布式存储系统一实施例的结构示意图。该分布式存储系统100包括主节点设备10和至少一个从节点设备20。
主节点设备10和至少一个从节点设备20通信连接。从节点设备20需要与主节点设备10保持数据一致性。
在基于共识算法的分布式存储系统中,主节点设备10为Leader,从节点设备20为Follower。
主节点设备10会接收写请求,进行日志复制,收到大多数主节点设备10和至少一个从节点设备20的应答后应用状态机。主节点设备10和从节点设备20都会接收读请求,从节点设备20在收到读请求后去主节点设备10获取当前最新的applyindex作为readindex,等待从节点设备20的applyindex大于或等于readindex时再从从节点设备20的本地存储中读取数据,从而使从节点设备20的读满足线性一致性的。
主节点设备10和至少一个从节点设备20可以通过选举,使主节点设备10和至少一个从节点设备20中的一者,重新成为主节点设备10,之前的主节点设备10变为从节点设备20。
如,目前从节点设备20包括从节点设备A、从节点设备B,此时,从节点设备A、从节点设备B和主节点设备10进行选举,选出从节点设备A为主节点设备,则此时从节点设备A变为主节点设备10,之前的主节点设备10变为从节点设备。因此,主节点设备10和从节点设备20需要满足数据一致性,在选举后,整个系统才能继续运行。
当读流量上涨时,如果目前的主节点设备10和从节点设备20无法承载,则需要增加新的节点设备。发明人长期研究发现,若加入新的从节点设备20需要花费很长时间来进行快照复制以及日志的同步,可能增加分布式存储系统100的集群无法commit的风险,由此,本申请提出以下技术方案,参阅图2,图2是本申请提供的分布式存储系统另一实施例的结构示意图。
该分布式存储系统100包括主节点设备10、至少一个从节点设备20和至少一个学习节点设备30。
至少一个从节点设备20与主节点设备10通信连接。
至少一个学习节点设备30与主节点设备10通信连接。
学习节点设备30不会参与Leader的选举过程,主节点设备10会将日志复制给学习节点设备30,进行数据同步,但主节点设备10提交日志时不将学习节点设备30计入大多数;也就是说,学习节点设备30同样能够支持线性一致性读,且不会成为Leader,不接受写请求。
其中,主节点设备10、从节点设备20和学习节点设备30用于与至少一个控制设备交互,学习节点设备30用于实现以下实施例提出的技术方案。
参阅图3,图3是本申请提供的分布式存储系统的数据处理方法一实施例的流程示意图。该方法应用于学习节点设备,该方法包括:
步骤31:在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求。
在学习节点设备创建时,可立即提供服务,接收至少一控制设备中目标控制设备发送的第一读请求。此时,学习节点设备中没有任何数据。可以有部分主节点设备中的日志。该部分日志可以是与当前时间接近的一部分日志。
步骤32:将第一读请求发送至主节点设备。
由于学习节点设备中此时没有对应的数据,则需要从主节点设备获取与第一读请求对应的目标数据。
步骤33:接收主节点设备发送的对应第一读请求的目标数据。
在主节点设备中,数据的存储方式通常是以键值对的方式进行存储,即key-value的形式,key是关键字,value是值。通常读请求中是以关键字为主要内容,来从节点设备中获取对应值,即目标数据。
主节点设备则按照第一读请求获取对应目标数据,将目标数据发送至学习节点设备。
步骤34:将目标数据进行存储,以及将目标数据发送至目标控制设备。
因学习节点设备中此时没有数据,则可以按照键值对的方式进行存储将目标数据进行存储。如,第一读请求的内容是读取X的值。目标数据为2,则以X:2的形式进行存储。同时,将目标数据发送至目标控制设备,以对其进行响应。
在本实施例中,利用在学习节点创建时就接收读请求,使学习节点设备可以通过不断的响应读请求的方式,渐进式的从主节点设备获取到数据,以此建立起学习节点设备的数据库,相比于相关技术中在接收完所有快照数据后,再响应读请求的方式,能够更快地承接读请求的流量,以缓解主节点设备和从节点设备的负载,同时快速响应目标控制设备,提升目标控制设备的用户的体验。学习节点设备能够与主节点设备配合,做到以少量资源承接突发读流量上涨。
参阅图4,图4是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图。该方法应用于学习节点设备,该方法包括:
步骤41:在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求。
步骤42:将第一读请求发送至主节点设备。
步骤43:接收主节点设备发送的对应第一读请求的目标数据和主节点设备当前所应用的第一日志。
主节点设备在响应写请求时,会将写请求对应设置为日志。在写请求的数量很多时,这些写请求的日志就会以队列的形式排序,以使主节点设备依次响应。
写请求可以是对原有数据的修改、删除或者增加新的数据。如,主节点设备当前具有5个写请求,即对应有5个第一日志,第一个第一日志为X=5,第二个第一日志为Y=2,第三个第一日志为X=X+5,第四个第一日志为Y=Y+3,第五个第一日志为Z=3,则在响应写请求时,会依次进行响应,响应第一个第一日志,则存储X等于5的数据,响应第二个第一日志,则存储Y等于2的数据,响应第三个第一日志,则存储X等于10的数据,响应第四个第一日志,则存储Y等于5的数据,响应第五个第一日志,则存储Z等于3的数据。可以将每一第一日志的序号,作为其索引。
步骤44:获取所应用的第二日志。
其中,第二日志由学习节点设备从主节点设备中复制至少部分第一日志形成。在学习节点设备创建时,会复制主节点设备当前时间产生的部分第一日志,将这些第一日志作为学习节点设备的第二日志。
学习节点设备可以应用这些第二日志,对已存在的数据进行处理。
步骤45:根据第一日志和第二日志的索引大小关系,对第二日志进行处理。
因第一日志和第二日志是对应的,但是由于主节点设备和学习节点设备之间硬件或网络通信的原因,两者之间当前应用的日志可能不同步,则需要进行处理。
在一些实施例中,参阅图5,步骤45可以是如下流程:
步骤51:若第一日志的索引大于第二日志的索引,则确定第一日志的索引和第二日志的索引之间的索引差范围。
若第一日志的索引大于第二日志的索引,则表明主节点设备应用的第一日志已经超过了学习节点设备应用的第二日志,则需要确定主节点设备和学习节点设备之间的索引差距。
如,主节点设备当前所应用的第一日志的索引为6,学习节点设备当前所应用的第二日志的索引为3,则索引差范围为3至6。
步骤52:确定在索引差范围内的第二日志。
按照索引差范围确定该方位内的第二日志。如,索引差范围为3至6,则确定的第二日志为索引3-6分别对应的第二日志。
步骤53:不执行与第一读请求相关的索引差范围内的第二日志所记录的操作。
若索引差范围内的第二日志存在对第一读请求相应的操作,则不执行,其余操作正常执行。把对应第一读请求的目标数据进行存储,以及将目标数据发送至目标控制设备。
结合图6进行说明:
如图6所示,假设起始时X、Y均为0,X←3表示X+3,将正在应用的日志的索引定义为applyindex。如,目标控制设备向学习节点设备发送第一读请求,第一读请求的内容是获取Y的值,而学习节点设备并未存储Y以及Y对应的值,那么需要向主节点设备发起读请求,获取主节点设备的applyindex和Y的值;此时主节点设备的applyindex=4,Y的值为10。
学习节点设备将applyindex作为readindex,即readindex=4,Y=10取回,发现学习节点设备自身的applyindex=2,也就是说,学习节点设备的applyindex小于readindex,此时,学习节点设备将Y=10直接返回给目标控制设备,因为这个Y=10是从主节点设备直接获取的,因此满足线性一致性。学习节点设备将Y=10进行存储,并跳过学习节点设备的日志索引2-4之间的与Y有关的第二日志,也就是说需要跳过Y←1,Y←9,避免重复更新。
通过这种方式,能够在学习节点设备应用的第二日志晚于主节点设备应用的第一日志时,学习节点设备合理的应用索引差范围内的第二日志,以避免更新了学习节点设备中与第一读请求对应的目标数据,进而保证学习节点设备和主节点设备的数据一致性。
参阅图7,步骤45还可以是如下流程:
步骤71:若第二日志的索引大于第一日志的索引,则确定第一日志的索引和第二日志的索引之间的索引差范围。
若第二日志的索引大于第一日志的索引,则表明学习节点设备应用的第二日志已经超过了主节点设备应用的第一日志,则需要确定主节点设备和学习节点设备之间的索引差距。
如,主节点设备当前所应用的第一日志的索引为3,学习节点设备当前所应用的第二日志的索引为6,则索引差范围为3至6。
步骤72:确定在索引差范围内的第二日志。
按照索引差范围确定该方位内的第二日志。如,索引差范围为3至6,则确定的第二日志为索引3-6分别对应的第二日志。
步骤73:以目标数据为基准数据,重新执行与第一读请求相关的索引差范围内的第二日志所记录的操作。
基准数据是指目标的基础值,如,X=0,下一次X需要加1,则0为基准数据,下一次X=1。此时,1就可以作为下一次的基准数据。
如,目标数据为X=3,索引为3的第二日志的内容为Y=Y+2,索引为4的第二日志的内容为X=X+2,索引为5的第二日志的内容为X=X+3,索引为6的第二日志的内容为Y=Y+3。
因此,索引为4和5的第二日志与第一读请求相关,则重新执行索引为4和5的第二日志,则将X=3作为基准数据,执行索引为4的第二日志后,X=5,执行索引为5的第二日志后,X=8。
在一些实施例中,参阅图8,步骤73可以是如下流程:
步骤81:按照索引差范围内的索引依次执行与读请求相关的索引差范围内的第二日志所记录的操作。
步骤82:将每次更新的目标数据进行存储,以作为下次更新的基准数据。
结合图9进行说明:
学习节点设备向主节点设备发起读请求,将applyindex=4,Y=10取回,学习节点设备将applyindex作为readindex,即readindex=4。如果在回包的时候稍有延迟,回来的时候发现学习节点设备自身的applyindex=7,也就是说学习节点设备的applyindex大于readindex,此时学习节点设备将Y=10直接返回给目标控制设备;但是学习节点设备并不能将Y=10直接进行存储,而是需要回溯学习节点设备的日志索引4-7之间与Y有关的日志,如图10中,还需要执行Y←7,且在回溯期间涉及到Y的变更也需要存储起来,在回溯完后再将最后一次的Y存储起来。
通过这种方式,能够在学习节点设备应用的第二日志早于主节点设备应用的第一日志时,学习节点设备合理的应用索引差范围内的第二日志,以避免索引差范围内的第二日志与主节点设备中对应索引的第二日志所使用的基准数据不一致,进而保证学习节点设备和主节点设备的数据一致性。
参阅图10,图10是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图。该方法应用于学习节点设备,该方法包括:
步骤101:在将第一读请求发送至主节点设备之后,接收至少一控制设备中另一目标控制设备发送的第二读请求。
步骤102:若第二读请求和第一读请求对应同一目标。
若第二读请求和第一读请求对应同一目标,则可以理解第二读请求和第一读请求为并发读请求。
步骤103:基于第二读请求接收主节点设备当前所应用的第一日志的索引。
将第一读请求发送至主节点设备获取到的主节点设备当前所应用的第一日志的索引可能跟基于第二读请求接收主节点设备当前所应用的第一日志的索引不同,第一读请求对应的索引可能小于第二读请求对应的索引。
步骤104:获取当前所应用的第二日志的索引。
步骤105:在第二日志的索引大于或等于第一日志的索引时,获取学习节点设备中存储的当前的目标数据。
因第一读请求已经获取过对应的目标数据或索引,则表示此时学习节点设备已经存在一个目标数据,但是考虑到数据一致性,需要在第二日志的索引大于或等于第一日志的索引时,才能获取学习节点设备中存储的当前的目标数据。
步骤106:将目标数据发送至另一目标控制设备。
由于学习节点设备从向主节点设备发起读请求到最终将目标数据存储起来并不是瞬间完成的,期间可能有会有并发的读请求,这些请求需要学习节点设备去主节点设备获取到readindex,取回后等待自身applyindex大于等于readindex,且本地存储有数据时,在将对应的数据返回目标控制设备。
通过上述方式,在学习节点设备中存在读请求对应的目标数据时,只需要保证学习节点设备中应用的第二日志的索引小于或等于主节点设备中应用的第一日志的索引即可,无需再次从主节点设备获得相应的目标数据,能够减少主节点设备的负载,提高系统性能。
参阅图11,图11是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图。该方法应用于学习节点设备,该方法包括:
步骤111:接收至少一控制设备中目标控制设备发送的第三读请求。
本实施例是在将目标数据进行存储之后进行的,表明此时学习节点设备中已经有存储的数据。
步骤112:基于第三读请求接收主节点设备当前所应用的第一日志的索引。
在一些实施例中,步骤112还包括在学习节点设备中确定是否存在与第三读请求对应的目标数据,若没有,则需要基于第三读请求接收主节点设备当前所应用的第一日志的索引和对应第三读请求的目标数据。
若有,则只需要接收主节点设备当前所应用的第一日志的索引。
步骤113:获取当前所应用的第二日志的索引。
步骤114:在第二日志的索引大于或等于第一日志的索引时,获取学习节点设备中存储的对应第三读请求的目标数据。
步骤115:将对应第三读请求的目标数据发送至另一目标控制设备。
通过在第二日志的索引大于或等于第一日志的索引时,获取学习节点设备中存储的对应第三读请求的目标数据,能够保证主节点设备和学习节点设备之间的数据一致性。
在上述任一实施例中,学习节点设备中的第二日志的数量小于主节点设备的第一日志的数量。
在上述任一实施例中,学习节点设备在应用第二日志时,获取当前应用的第二日志;若第二日志中的目标没有对应的基准数据,则不执行第二日志中的操作。需要等到对应目标的读请求后,按照读请求从主节点设备获取对应的数据,然后将此数据作为后续日志中的基准数据。
由于学习节点设备不参与选举,因此,学习节点设备不需要完整的全量数据,因此学习节点设备既不用存储全量的日志,也不需要生成、保存快照数据。但为了做到与主节点设备的数据同步的一致性,学习节点设备需保存一段时间的日志,由于可以接受进程重启数据丢失,日志的持久化也不是必要的,能够减少学习节点设备的负载,提升整体性能。
参阅图12,图12是本申请提供的分布式存储系统的数据处理方法另一实施例的流程示意图。该方法应用于主节点设备,该方法包括:
步骤121:响应于节点设备创建指令,建立至少一个学习节点设备。
步骤122:接收学习节点设备发送的至少一个读请求。
其中,读请求是由至少一控制设备中目标控制设备向学习节点设备发送的。
步骤123:将对应读请求的目标数据发送至学习节点设备,以使学习节点设备将目标数据发送至目标控制设备并将目标数据进行存储。
本实施例中的主节点设备可以配合上述任一实施例中的学习节点设备,完成上述任一实施例的技术方案。
在本实施例中,主节点设备通过响应学习节点设备的读请求,并向学习节点设备发送对应数据的方式,使学习节点设备渐进式地获取到数据,以此学习节点设备建立起数据库,相比于向学习节点设备全量复制所有快照数据后,再响应读请求的方式,能够使学习节点设备更快地承接读请求的流量,以缓解主节点设备和从节点设备的负载,同时学习节点设备能够快速响应目标控制设备,提升目标控制设备的用户的体验。学习节点设备能够与主节点设备配合,做到以少量资源承接突发读流量上涨。
参阅图13,图13是本申请提供的节点设备一实施例的结构示意图。该节点设备130包括处理器131以及与处理器131耦接的存储器132;其中,存储器132用于存储计算机程序,处理器131用于执行计算机程序,以实现以下方法:
在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求;将第一读请求发送至主节点设备;接收主节点设备发送的对应第一读请求的目标数据;将目标数据进行存储,以及将目标数据发送至目标控制设备;或,
响应于节点设备创建指令,建立至少一个学习节点设备;接收学习节点设备发送的至少一个读请求;其中,读请求是由至少一控制设备中目标控制设备向学习节点设备发送的;将对应读请求的目标数据发送至学习节点设备,以使学习节点设备将目标数据发送至目标控制设备并将目标数据进行存储。
可以理解,处理器131还用于执行计算机程序,以实现上述任一实施例的方法。
若节点设备130为学习节点设备,则可以实现对应学习节点设备的方法。
若节点设备130为主节点设备,则可以实现对应主节点设备的方法。
参阅图14,图14是本申请提供的计算机可读存储介质一实施例的结构示意图。该计算机可读存储介质140用于存储计算机程序141,计算机程序141在被处理器执行时,用于实现以下方法:
在学习节点设备创建时,接收至少一控制设备中目标控制设备发送的第一读请求;将第一读请求发送至主节点设备;接收主节点设备发送的对应第一读请求的目标数据;将目标数据进行存储,以及将目标数据发送至目标控制设备;或,
响应于节点设备创建指令,建立至少一个学习节点设备;接收学习节点设备发送的至少一个读请求;其中,读请求是由至少一控制设备中目标控制设备向学习节点设备发送的;将对应读请求的目标数据发送至学习节点设备,以使学习节点设备将目标数据发送至目标控制设备并将目标数据进行存储。
可以理解,计算机程序141在被处理器执行时,还用于实现上述任一实施例的方法,具体参阅上述任一实施例,这里不做赘述。
综上,本申请提出上述技术方案,学习节点设备无需处理写请求,能够基于共识算法与主节点设备进行数据同步,且支持数据线性一致性,而学习节点设备的状态机可以不持久化,对应的日志也不必持久化,可以做到以少量资源承接突发读流量上涨。虽然学习节点设备需要存储一段时间的数据才能热起来,但在实际使用中,相比全量拷贝数据再提供服务的方案,由于业务读取热数据的情景较多,读取时会有一定的集中性,实际扩容会更迅速。
在本申请所提供的几个实施方式中,应该理解到,所揭露的方法以及设备,可以通过其它的方式实现。例如,以上所描述的设备实施方式仅仅是示意性的,例如,所述模块或单元的划分,仅仅为一种逻辑功能划分,实际实现时可以有另外的划分方式,例如多个单元或组件可以结合或者可以集成到另一个系统,或一些特征可以忽略,或不执行。
所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部单元来实现本实施方式方案的目的。
另外,在本申请各个实施方式中的各功能单元可以集成在一个处理单元中,也可以是各个单元单独物理存在,也可以两个或两个以上单元集成在一个单元中。上述集成的单元既可以采用硬件的形式实现,也可以采用软件功能单元的形式实现。
上述其他实施方式中的集成的单元如果以软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本申请的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的全部或部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)或处理器(processor)执行本申请各个实施方式所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,RandomAccess Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
以上所述仅为本申请的实施方式,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本申请的专利保护范围内。
Claims (12)
1.一种分布式存储系统的数据处理方法,其特征在于,所述分布式存储系统包括主节点设备、至少一个从节点设备和至少一个学习节点设备,所述主节点设备、所述从节点设备和所述学习节点设备用于与至少一个控制设备交互,所述方法应用于所述学习节点设备,所述方法包括:
在所述学习节点设备创建时,接收所述至少一控制设备中目标控制设备发送的第一读请求;
将所述第一读请求发送至所述主节点设备;
接收所述主节点设备发送的对应所述第一读请求的目标数据和所述主节点设备当前所应用的第一日志;
将所述目标数据进行存储,以及将所述目标数据发送至所述目标控制设备;
获取所应用的第二日志;其中,所述第二日志由所述学习节点设备从所述主节点设备中复制至少部分所述第一日志形成;
根据所述第一日志和所述第二日志的索引大小关系,对所述第二日志进行处理。
2.根据权利要求1所述的方法,其特征在于,
所述根据所述第一日志和所述第二日志的索引大小关系,对所述第二日志进行处理,包括:
若所述第一日志的索引大于所述第二日志的索引,则确定所述第一日志的索引和所述第二日志的索引之间的索引差范围;
确定在所述索引差范围内的第二日志;
不执行与所述读请求相关的所述索引差范围内的第二日志所记录的操作。
3.根据权利要求1所述的方法,其特征在于,
所述根据所述第一日志和所述第二日志的索引大小关系,对所述第二日志进行处理,包括:
若所述第二日志的索引大于所述第一日志的索引,则确定所述第一日志的索引和所述第二日志的索引之间的索引差范围;
确定在所述索引差范围内的第二日志;
以所述目标数据为基准数据,重新执行与所述读请求相关的所述索引差范围内的第二日志所记录的操作。
4.根据权利要求3所述的方法,其特征在于,
所述以所述目标数据为基准数据,重新执行与所述读请求相关的第二日志所记录的操作,包括:
按照所述索引差范围内的索引依次执行与所述读请求相关的所述索引差范围内的第二日志所记录的操作;
将每次更新的所述目标数据进行存储,以作为下次更新的基准数据。
5.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
在将所述第一读请求发送至所述主节点设备之后,接收所述至少一控制设备中另一目标控制设备发送的第二读请求;
若所述第二读请求和所述第一读请求对应同一目标;
基于所述第二读请求接收所述主节点设备当前所应用的第一日志的索引;
获取当前所应用的第二日志的索引;
在所述第二日志的索引大于或等于所述第一日志的索引时,获取所述学习节点设备中存储的当前的所述目标数据;
将所述目标数据发送至另一所述目标控制设备。
6.根据权利要求1所述的方法,其特征在于,
所述将所述目标数据进行存储之后,包括:
接收所述至少一控制设备中目标控制设备发送的第三读请求;
基于所述第三读请求接收所述主节点设备当前所应用的第一日志的索引;
获取当前所应用的第二日志的索引;
在所述第二日志的索引大于或等于所述第一日志的索引时,获取所述学习节点设备中存储的当前的所述目标数据;
将所述目标数据发送至另一所述目标控制设备。
7.根据权利要求1所述的方法,其特征在于,
所述学习节点设备中的第二日志的数量小于所述主节点设备的第一日志的数量。
8.根据权利要求1所述的方法,其特征在于,
所述方法还包括:
获取当前应用的第二日志;
若所述第二日志中的目标没有对应的基准数据,则不执行所述第二日志中的操作。
9.一种分布式存储系统的数据处理方法,其特征在于,所述分布式存储系统包括主节点设备、至少一个从节点设备和至少一个学习节点设备,所述主节点设备、所述从节点设备和所述学习节点设备用于与至少一个控制设备交互,所述方法应用于所述主节点设备,所述方法包括:
响应于节点设备创建指令,建立至少一个所述学习节点设备;
接收所述学习节点设备发送的至少一个读请求;其中,所述读请求是由所述至少一控制设备中目标控制设备向所述学习节点设备发送的;
将对应所述读请求的目标数据和所述主节点设备当前所应用的第一日志发送至所述学习节点设备,以使所述学习节点设备将所述目标数据发送至所述目标控制设备并将所述目标数据进行存储,以及使所述学习节点设备获取所应用的第二日志;其中,所述第二日志由所述学习节点设备从所述主节点设备中复制至少部分所述第一日志形成;根据所述第一日志和所述第二日志的索引大小关系,对所述第二日志进行处理。
10.一种分布式存储系统,其特征在于,所述分布式存储系统包括:
主节点设备;
至少一个从节点设备,与所述主节点设备通信连接;
至少一个学习节点设备,与所述主节点设备通信连接;
其中,所述主节点设备、所述从节点设备和所述学习节点设备用于与至少一个控制设备交互,所述学习节点设备用于实现如权利要求1-8任一项所述的方法,所述主节点设备用于实现如权利要求9所述的方法。
11.一种节点设备,其特征在于,所述节点设备包括处理器以及与所述处理器耦接的存储器;
其中,所述存储器用于存储计算机程序,所述处理器用于执行所述计算机程序,以实现如权利要求1-9任一项所述的方法。
12.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质用于存储计算机程序,所述计算机程序在被处理器执行时,用于实现如权利要求1-9任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111050345.4A CN113946287B (zh) | 2021-09-08 | 分布式存储系统及其数据处理方法、相关装置 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202111050345.4A CN113946287B (zh) | 2021-09-08 | 分布式存储系统及其数据处理方法、相关装置 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113946287A CN113946287A (zh) | 2022-01-18 |
CN113946287B true CN113946287B (zh) | 2024-06-21 |
Family
ID=
Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196832A (zh) * | 2019-06-04 | 2019-09-03 | 北京百度网讯科技有限公司 | 用于获取快照信息的方法及装置 |
Patent Citations (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110196832A (zh) * | 2019-06-04 | 2019-09-03 | 北京百度网讯科技有限公司 | 用于获取快照信息的方法及装置 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107919977B (zh) | 一种基于Paxos协议的在线扩容、在线缩容的方法和装置 | |
CN106899648B (zh) | 一种数据处理方法和设备 | |
US8572037B2 (en) | Database server, replication server and method for replicating data of a database server by at least one replication server | |
US20120254342A1 (en) | Method for Providing Access to Data Items from a Distributed Storage System | |
CN111368002A (zh) | 一种数据处理方法、系统、计算机设备和存储介质 | |
US11385830B2 (en) | Data storage method, apparatus and system, and server, control node and medium | |
US20130110781A1 (en) | Server replication and transaction commitment | |
US9424145B2 (en) | Ensuring the same completion status for transactions after recovery in a synchronous replication environment | |
US20170168756A1 (en) | Storage transactions | |
KR20120018178A (ko) | 객체 저장부들의 네트워크상의 스웜-기반의 동기화 | |
CN113010549A (zh) | 基于异地多活系统的数据处理方法、相关设备及存储介质 | |
CN114422537B (zh) | 多云存储系统、多云数据读写方法及电子设备 | |
CN112835885B (zh) | 一种分布式表格存储的处理方法、装置及系统 | |
CN113946287B (zh) | 分布式存储系统及其数据处理方法、相关装置 | |
CN105868002B (zh) | 一种用于在分布式计算中处理重发请求的方法与设备 | |
CN113672641A (zh) | 数据库集群数据处理方法、装置、系统、介质和电子设备 | |
CN107045426B (zh) | 一种多副本读取方法和系统 | |
CN113946287A (zh) | 分布式存储系统及其数据处理方法、相关装置 | |
CN111782634A (zh) | 数据分布式存储方法、装置、电子设备及存储介质 | |
CN111400098A (zh) | 一种副本管理方法、装置、电子设备及存储介质 | |
CN113704254B (zh) | 一种数据库的业务处理方法、装置、电子设备和存储介质 | |
CN112181305B (zh) | 数据库集群网络分区选择方法和装置 | |
CN111857583B (zh) | 一种分布式存储卷更新方法、系统、设备及计算机介质 | |
CN114584572B (zh) | 一种分布式对象存储中数据同步方法、装置、设备及介质 | |
CN117874136A (zh) | 分布式数据库的副本同步方法、装置及非易失性存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant |