CN117193671B - 数据处理方法、装置、计算机设备和计算机可读存储介质 - Google Patents
数据处理方法、装置、计算机设备和计算机可读存储介质 Download PDFInfo
- Publication number
- CN117193671B CN117193671B CN202311466074.XA CN202311466074A CN117193671B CN 117193671 B CN117193671 B CN 117193671B CN 202311466074 A CN202311466074 A CN 202311466074A CN 117193671 B CN117193671 B CN 117193671B
- Authority
- CN
- China
- Prior art keywords
- storage node
- read
- state
- log index
- permission state
- 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 34
- 230000001360 synchronised effect Effects 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims abstract description 70
- 238000004590 computer program Methods 0.000 claims abstract description 31
- 230000008859 change Effects 0.000 claims description 257
- 238000012508 change request Methods 0.000 claims description 139
- 230000004044 response Effects 0.000 claims description 136
- 238000012545 processing Methods 0.000 claims description 38
- 230000000452 restraining effect Effects 0.000 claims 1
- 238000010586 diagram Methods 0.000 description 18
- 230000008569 process Effects 0.000 description 18
- 230000003993 interaction Effects 0.000 description 13
- 238000004891 communication Methods 0.000 description 5
- 238000005516 engineering process Methods 0.000 description 5
- 230000004083 survival effect Effects 0.000 description 5
- 238000004366 reverse phase liquid chromatography Methods 0.000 description 4
- 238000007726 management method Methods 0.000 description 3
- 238000013500 data storage Methods 0.000 description 2
- 230000000694 effects Effects 0.000 description 2
- 230000006870 function Effects 0.000 description 2
- 230000003068 static effect Effects 0.000 description 2
- 238000010200 validation analysis Methods 0.000 description 2
- OKTJSMMVPCPJKN-UHFFFAOYSA-N Carbon Chemical compound [C] OKTJSMMVPCPJKN-UHFFFAOYSA-N 0.000 description 1
- 238000004458 analytical method Methods 0.000 description 1
- 238000013473 artificial intelligence Methods 0.000 description 1
- 230000008901 benefit Effects 0.000 description 1
- 238000012512 characterization method Methods 0.000 description 1
- 238000006243 chemical reaction Methods 0.000 description 1
- 238000007418 data mining Methods 0.000 description 1
- 238000001514 detection method Methods 0.000 description 1
- 238000011161 development Methods 0.000 description 1
- 229910021389 graphene Inorganic materials 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000012423 maintenance Methods 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
- 238000005457 optimization Methods 0.000 description 1
- 230000007704 transition Effects 0.000 description 1
Landscapes
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请涉及一种数据处理方法、装置、计算机设备、存储介质和计算机程序产品。所述方法包括:当接收到数据读请求,确定从存储节点当前的数据操作权限状态,数据操作权限状态包括只读权限状态和读写权限状态;根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引;获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的;当已同步日志索引覆盖参考日志索引,从从存储节点本地获取数据读请求所请求的目标数据;将目标数据作为数据读请求的反馈数据进行反馈。采用本方法能够提高从存储节点的灵活性。
Description
技术领域
本申请涉及计算机技术领域,特别是涉及一种数据处理方法、装置、计算机设备、存储介质和计算机程序产品。
背景技术
随着计算机技术的发展,出现了分布式存储技术,通过分布式存储技术可以将同一份数据生成多个副本并存储在分布式系统的不同位置,当一份数据丢失或损坏则可以从其他副本获取到正确的数据。
分布式存储技术中,往往将多个副本划分为主副本和从副本,所有的数据读请求和数据写请求都需要访问主副本,以保证副本间数据的一致性。当从副本收到用户请求时,也需要转发给主副本进行处理,导致分布式系统的总能力受限于单节点处理上,导致从副本无法灵活处理用户请求。
发明内容
基于此,有必要针对上述技术问题,提供一种能够提高从存储节点的灵活性的数据处理方法、装置、计算机设备、计算机可读存储介质和计算机程序产品。
本申请提供了一种数据处理方法,应用于从存储节点,所述方法包括:
当接收到数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括只读权限状态和读写权限状态;
根据所述数据操作权限状态,确定主存储节点的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;
获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
将所述目标数据作为所述数据读请求的反馈数据进行反馈。
本申请还提供了一种数据处理装置,应用于从存储节点,所述装置包括:
读请求接收模块,用于当接收到数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括只读权限状态和读写权限状态;
确定模块,用于根据所述数据操作权限状态,确定主存储节点的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;
索引获取模块,用于获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
数据获取模块,用于当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
反馈模块,用于将所述目标数据作为所述数据读请求的反馈数据进行反馈。
在一个实施例中,所述确定模块,还用于当所述数据操作权限状态为所述只读权限状态,从所述从存储节点本地获取所述参考日志索引;当所述数据操作权限状态为读写权限状态,向处于所述读写权限状态的所述主存储节点发送索引获取请求;接收所述主存储节点基于所述索引获取请求反馈的参考日志索引。
在一个实施例中,所述装置还包括变更模块,所述变更模块,用于接收主存储节点从所述读写权限状态变更为所述只读权限状态时发送的状态变更指令,所述状态变更指令包括所述主存储节点变更为所述只读权限状态时的参考日志索引;按照所述状态变更指令,从所述读写权限状态变更为所述只读权限状态;基于所述状态变更指令中的所述参考日志索引,更新所述从存储节点本地存储的所述主存储节点的参考日志索引。
在一个实施例中,所述状态变更指令还包括所述只读权限状态对应的状态有效时长;所述变更模块,还用于将所述从存储节点本地当前存储的状态有效时长,更新为所述状态变更指令中所述只读权限状态对应的状态有效时长。
在一个实施例中,所述装置还包括响应模块,所述响应模块,还用于接收处于所述只读权限状态的主存储节点发送的状态变更请求,所述状态变更请求包括所述主存储节点处于所述只读权限状态时的参考日志索引;获取存储在所述从存储节点本地的所述主存储节点的参考日志索引;当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引相同,向所述主存储节点反馈表征允许变更为所述读写权限状态的响应结果,所述反馈表征允许变更为所述读写权限状态的响应结果,用于指示所述主存储节点从所述只读权限状态变更为所述读写权限状态。
在一个实施例中,所述装置还包括同步装置,所述同步装置,包括接收处于所述读写权限状态的主存储节点发送的业务数据和所述业务数据的日志索引;根据所述业务数据和所述业务数据的日志索引,在所述从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
在一个实施例中,所述响应模块,还用于当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引不同,向所述主存储节点反馈表征拒绝变更为所述读写权限状态的响应结果,所述表征拒绝变更为所述读写权限状态的响应结果,用于指示所述主存储节点维持所述只读权限状态。
在一个实施例中,所述响应模块,还用于当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引不同,向所述主存储节点反馈表征拒绝变更为所述读写权限状态的响应结果,所述表征拒绝变更为所述读写权限状态的响应结果,用于指示所述主存储节点维持所述只读权限状态。
本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当接收到数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括只读权限状态和读写权限状态;
根据所述数据操作权限状态,确定主存储节点的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;
获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
将所述目标数据作为所述数据读请求的反馈数据进行反馈。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当接收到数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括只读权限状态和读写权限状态;
根据所述数据操作权限状态,确定主存储节点的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;
获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
将所述目标数据作为所述数据读请求的反馈数据进行反馈。
本申请还提供了一种计算机程序产品,所述计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当接收到数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括只读权限状态和读写权限状态;
根据所述数据操作权限状态,确定主存储节点的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;
获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
将所述目标数据作为所述数据读请求的反馈数据进行反馈。
上述数据处理方法、装置、计算机设备、存储介质和计算机程序产品,当从存储节点接收到数据读请求,确定从存储节点当前的数据操作权限状态,以判断自身处于只读权限状态还是读写权限状态。根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引,使得从存储节点可以根据自身的数据操作权限状态,判断主存储节点的数据操作权限状态,从而准确地判断出自身在执行数据读请求是否能够满足数据一致性。获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的,当已同步日志索引覆盖参考日志索引,表示从存储节点本地已经同步了主存储节点的最新业务数据,意味着从存储节点满足数据一致性,能够有效避免从存储节点与主存储节点的数据未同步的情况下,向数据读请求反馈旧数据的情况。在数据一致的情况下,从从存储节点本地获取数据读请求所请求的目标数据,并将目标数据作为数据读请求的反馈数据进行反馈,从而使得从存储节点能够独立处理数据读请求,而无需依赖主存储节点进行处理,极大提高了从存储节点的灵活性和响应效率。
本申请提供了一种数据处理方法,所述方法包括:
当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
将所述业务数据和所述日志索引同步至所述从存储节点。
本申请还提供了一种数据处理装置,所述装置包括:
写请求接收模块,用于当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
发送模块,用于生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
变更模块,用于基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
存储模块,用于写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
同步模块,用于将所述业务数据和所述日志索引同步至所述从存储节点。
在一个实施例中,所述变更模块,还用于接收所述从存储节点针对所述状态变更请求反馈的响应结果;当所述响应结果表征所述从存储节点允许变更为所述读写权限状态,从所述只读权限状态变更为所述读写权限状态。
在一个实施例中,所述变更模块,还用于当所述响应结果表征所述从存储节点拒绝变更为所述读写权限状态,确定所述只读权限状态对应的状态有效时长;确定所述主存储节点处于所述只读权限状态的已生效时长;当所述已生效时长达到所述状态有效时长,从所述只读权限状态变更为所述读写权限状态。
在一个实施例中,所述变更模块,还用于响应于状态变更事件,将所述主存储节点从所述读写权限状态变更为所述只读权限状态;获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;生成包括所述参考日志索引的状态变更指令,将所述状态变更指令下发给所述从存储节点;所述状态变更指令用于指示所述从存储节点从所述读写权限状态变更为所述只读权限状态,以及在所述从存储节点本地存储所述参考日志索引。
在一个实施例中,所述变更模块,还用于配置所述只读权限状态对应的状态有效时长,所述状态有效时长用于约束所述主存储节点和所述从存储节点处于所述只读权限状态的时长;生成包括所述参考日志索引和所述状态有效时长的状态变更指令。
本申请还提供了一种计算机设备,所述计算机设备包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现以下步骤:
当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
将所述业务数据和所述日志索引同步至所述从存储节点。
本申请还提供了一种计算机可读存储介质,所述计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
将所述业务数据和所述日志索引同步至所述从存储节点。
本申请还提供了一种计算机程序产品,所述计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现以下步骤:
当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
将所述业务数据和所述日志索引同步至所述从存储节点。
上述数据处理方法、装置、计算机设备、存储介质和计算机程序产品,当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引,生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求,使得从存储节点本地能够存储有主存储节点的最新日志索引,使得从存储节点即可直接使用本地参考日志索引而无须向主存储节点获取,使得从存储节点可以独立处理数据读请求,提高从存储节点数据处理的灵活性。并且,通过状态变更请求询问从存储节点是否同意变更为读写权限状态,基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态,以保证主存储节点和从存储节点的状态一致性。在读写权限状态下写入数据写请求指示的业务数据,并生成业务数据的日志索引,以将业务数据和日志索引同步至从存储节点,能够及时将新数据同步给从存储节点,以保证后续用户访问从存储节点时,从存储节点无需依赖主存储节点即可独立处理用户的数据读请求,能够减少与主存储节点之间的交互,提高从存储节点的灵活性,以及提高从存储节点对数据读请求的响应速度。
附图说明
图1为一个实施例中数据处理方法的应用环境图;
图2为一个实施例中数据处理方法的流程示意图;
图3为一个实施例中从存储节点处理数据读请求的时序图;
图4为一个实施例中从读写权限状态变更为只读权限状态的时序图;
图5为一个实施例中接收处于只读权限状态的主存储节点发送的状态变更请求的流程示意图;
图6为一个实施例中从只读权限状态变更为读写权限状态的时序图;
图7为另一个实施例中数据处理方法的流程示意图;
图8为一个实施例中主存储节点处理数据写请求的时序图;
图9为一个实施例中将状态变更指令下发给从存储节点的流程示意图;
图10为一个实施例中数据处理方法应用在分布式存储场景的架构示意图;
图11为一个实施例中服务器的各副本需要遵循的规则示意图;
图12为一个实施例中为主副本和从副本同步状态的远程过程调用的相关参数和处理的示意图;
图13为一个实施例中数据处理装置的结构框图;
图14为另一个实施例中数据处理装置的结构框图;
图15为一个实施例中计算机设备的内部结构图。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
本申请实施例提供的数据处理方法涉及的数据可以为大数据仓库中的数据表。其中大数据(Big data)是指无法在一定时间范围内用常规软件工具进行捕捉、管理和处理的数据集合,是需要新处理模式才能具有更强的决策力、洞察发现力和流程优化能力的海量、高增长率和多样化的信息资产。随着云时代的来临,大数据也吸引了越来越多的关注,大数据需要特殊的技术,以有效地处理大量的容忍经过时间内的数据。适用于大数据的技术,包括大规模并行处理数据库、数据挖掘、分布式文件系统、分布式数据库、云计算平台、互联网和可扩展的存储系统。
数据库(Database),简而言之可视为电子化的文件柜——存储电子文件的处所,用户可以对文件中的数据进行新增、查询、更新、删除等操作。所谓“数据库”是以一定方式储存在一起、能与多个用户共享、具有尽可能小的冗余度、与应用程序彼此独立的数据集合。
数据库管理系统(Database Management System,DBMS)是为管理数据库而设计的电脑软件系统,一般具有存储、截取、安全保障、备份等基础功能。数据库管理系统可以依据它所支持的数据库模型来作分类,例如关系式、XML(Extensible Markup Language,可扩展标记语言);或依据所支持的计算机类型来作分类,例如服务器群集、移动电话;或依据所用查询语言来作分类,例如SQL(Structured Query Language,结构化查询语言)、XQuery;或依据性能冲量重点来作分类,例如最大规模、最高运行速度;亦或其他的分类方式。不论使用哪种分类方式,一些DBMS能够跨类别,例如,同时支持多种查询语言。
本申请实施例提供的数据处理方法,可以应用于如图1所示的应用环境中。其中,终端102通过网络与服务器104进行通信。数据存储系统可以存储服务器104需要处理的数据。数据存储系统可以集成在服务器104上,也可以放在云上或其他服务器上。终端102可具有主存储节点和至少一个从存储节点,服务器104也可以具有主存储节点和至少一个从存储节点。终端102和服务器104均可单独执行本申请实施例中提供的数据处理方法。终端102和服务器104也可协同用于执行本申请实施例中提供的数据处理方法。当终端102和服务器104协同用于执行本申请实施例中提供的数据处理方法时,终端102向服务104的从存储节点发送数据读请求,当服务器104的从存储节点接收到数据读请求,确定从存储节点当前的数据操作权限状态,数据操作权限状态包括只读权限状态和读写权限状态。服务器104的从存储节点根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。服务器104的从存储节点获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的。当已同步日志索引覆盖参考日志索引,服务器104的从存储节点从从存储节点本地获取数据读请求所请求的目标数据,将目标数据作为数据读请求的反馈数据反馈给终端102。
其中,终端102可以但不限于是各种台式计算机、笔记本电脑、智能手机、平板电脑、智能语音交互设备、智能家电、车载终端、飞行器等。该终端102上可运行应用程序,该应用程序可以是通信应用、音视频应用和图像处理应用等。服务器104可以是独立的物理服务器,也可以是多个物理服务器构成的服务器集群或者分布式系统,还可以是提供云服务、云数据库、云计算、云函数、云存储、网络服务、云通信、中间件服务、域名服务、安全服务、CDN、以及大数据和人工智能平台等基础云计算服务的云服务器。
本实施例中,该数据处理方法应用于服务器104的主存储节点,当终端102和服务器104协同用于执行本申请实施例中提供的数据处理方法时,终端102向服务器104的主存储节点发送数据写请求,当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引。服务器104的主存储节点生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求。服务器104的主存储节点基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态;写入数据写请求指示的业务数据,并生成业务数据的日志索引。服务器104的主存储节点将业务数据和日志索引同步至从存储节点。
在一个实施例中,如图2所示,提供了一种数据处理方法,以该方法应用于图1中的计算机设备的从存储节点(计算机设备可以是图1中的终端或服务器)为例进行说明,包括以下步骤:
步骤S202,当接收到数据读请求,确定从存储节点当前的数据操作权限状态,数据操作权限状态包括只读权限状态和读写权限状态。
其中,数据读请求是指读取数据的请求。数据操作权限状态是指从存储节点具有对数据进行特定操作的权限的状态。该数据操作权限状态包括只读权限状态和读写权限状态,只读权限状态表征具有只读权限的状态,即只能够读取数据。读写权限状态表征具有读写权限的状态,即读取数据的权限和写入数据的权限的状态。写入数据的权限包括对数据的增、删、改等操作。
具体地,计算机设备具有主存储节点和至少一个从存储节点,主存储节点用于存储业务数据和业务数据对应的日志索引,从存储节点用于存储主存储节点同步过来的业务数据和日志索引。当用户需要读取数据时,通过业务终端向计算机设备的任一个从存储节点发送数据读请求。
当计算机设备的从存储节点接收到该数据读请求,从存储节点确定自身当前的数据操作权限状态,该数据操作权限状态包括只读权限状态和读写权限状态。当从存储节点处于只读权限状态,表征从存储节点当前具有只读权限。当从存储节点处于读写权限状态,表征从存储节点当前具有读写权限。
本实施例中,从存储节点的数据操作权限状态与从存储节点的数据操作权限状态相同,当从存储节点处于只读权限状态,表征主存储节点也处于只读权限状态,则从存储节点和主存储节点当前均具有只读权限。当从存储节点处于读写权限状态,表征主存储节点也处于读写权限状态,表征从存储节点和主存储节点当前均具有读写权限。
本实施例中,通过判断从存储节点当前的数据操作权限状态,即可判断出主存储节点当前的数据操作权限状态,而无需从主存储节点处获取主存储节点的数据操作权限状态,减少与主存储节点的交互。
步骤S204,根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。
其中,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。当数据操作权限状态为只读权限状态,参考日志索引是主存储节点从读写权限状态变更为只读权限状态时最近存储的日志索引,即为主存储节点在处于只读权限状态之前的读写权限状态时最近存储的日志索引。最近存储的日志索引,即最新存储的日志索引。例如,主存储节点在读写权限状态写入新的业务数据,并增加对应的日志索引为“3”,接着变更为只读权限状态,则该日志索引“3”即为参考日志索引。
当数据操作权限状态为读写权限状态,参考日志索引是主存储节点在该读写权限状态时最近存储的日志索引。例如,主存储节点当前处于读写权限状态,写入新的业务数据,并增加对应的日志索引为“3”,接着又写入新的业务数据,并增加对应的日志索引为“4”,则该日志索引“4”即为参考日志索引。
主存储节点本地可存储多个已存储日志索引,每个已存储日志索引表征一个数据写请求在主存储节点中进行的数据写操作所写入的业务数据。
具体地,从存储节点根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。
本实施例中,从存储节点本地存储了主存储节点的参考日志索引,当数据操作权限状态为只读权限状态,表征主存储节点也处于只读权限状态,则主存储节点不会写新的业务数据和日志索引,因此从存储节点本地存储的参考日志索引为主存储节点的最新日志索引,则从存储节点从本地获取参考日志索引。
本实施例中,当数据操作权限状态为读写权限状态,表征主存储节点当前处于读写权限状态,可能存在新业务数据和日志索引的写入,则从存储节点本地存储的参考日志索引可能不是主存储节点的最新日志索引,则从存储节点向处于读写权限状态的主存储节点发送索引获取请求。从存储节点接收主存储节点基于索引获取请求反馈的参考日志索引,该反馈的参考日志索引是主存储节点当前存储的最新日志索引。
步骤S206,获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的。
其中,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的。
具体地,处于读写权限状态的主存储节点具有读写权限,该主存储节点在处理数据写请求时,会在主存储节点本地写入数据写请求指示的业务数据,并生成业务数据的日志索引,同样存储在主存储节点本地。主存储节点将业务数据和日志索引同步至从存储节点。从存储节点执行数据同步操作,将该业务数据和日志索引同步至从存储节点本地,在本地形成业务数据对应的已同步数据和日志索引对应的已同步索引。
当从存储节点接收到数据读请求,可获取从存储节点本地存储的已同步日志索引。
进一步地,从存储节点可获取本地最近存储的已同步日志索引。最近存储的已同步日志索引,是从主存储节点所存储的日志索引进行同步获得的最新的日志索引。
步骤S208,当已同步日志索引覆盖参考日志索引,从从存储节点本地获取数据读请求所请求的目标数据。
具体地,从存储节点将本地的已同步日志索引和主存储节点的参考日志索引进行比对,以确定本地的已同步日志索引能否覆盖参考日志索引。当已同步日志索引覆盖参考日志索引,表示从存储节点本地已经同步了主存储节点的最新业务数据,则从存储节点可直接本地存储的已同步数据中,获取数据读请求所请求的数据作为目标数据。
当已同步日志索引未能覆盖参考日志索引,表示从存储节点本地还没有同步主存储节点的最新业务数据,则从存储节点可进入等待状态,直至已同步日志索引覆盖参考日志索引后,从存储节点可直接本地存储的已同步数据中,获取数据读请求所请求的数据作为目标数据。
本实施例中,当已同步日志索引未能覆盖参考日志索引,从存储节点可进入等待状态,并实时或定时检测本地的已同步日志索引是否覆盖参考日志索引,直至覆盖已同步日志索引能够覆盖参考日志索引时停止。
步骤S210,将目标数据作为数据读请求的反馈数据进行反馈。
具体地,从存储节点将目标数据作为数据读请求的反馈数据,并反馈给发送数据读请求的业务终端。
上述数据处理方法中,当从存储节点接收到数据读请求,确定从存储节点当前的数据操作权限状态,以判断自身处于只读权限状态还是读写权限状态。根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引,使得从存储节点可以根据自身的数据操作权限状态,判断主存储节点的数据操作权限状态,从而准确地判断出自身在执行数据读请求是否能够满足数据一致性。获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的,当已同步日志索引覆盖参考日志索引,表示从存储节点本地已经同步了主存储节点的最新业务数据,意味着从存储节点满足数据一致性,能够有效避免从存储节点与主存储节点的数据未同步的情况下,向数据读请求反馈旧数据的情况。在数据一致的情况下,从从存储节点本地获取数据读请求所请求的目标数据,并将目标数据作为数据读请求的反馈数据进行反馈,从而使得从存储节点能够独立处理数据读请求,而无需依赖主存储节点进行处理,极大提高了从存储节点的灵活性和响应效率。
在一个实施例中,根据数据操作权限状态,确定主存储节点的参考日志索引,包括:
当数据操作权限状态为只读权限状态,从从存储节点本地获取参考日志索引;当数据操作权限状态为读写权限状态,向处于读写权限状态的主存储节点发送索引获取请求;接收主存储节点基于索引获取请求反馈的参考日志索引。
具体地,从存储节点本地存储了主存储节点的参考日志索引。当从存储节点确定当前的数据操作权限状态为只读权限状态,从存储节点可确定主存储节点当前也处于只读权限状态,表示主存储节点当前不会写新的业务数据和日志索引。因此,从存储节点本地存储的参考日志索引为主存储节点的最新日志索引,则从存储节点从本地获取参考日志索引。
当从存储节点确定当前的数据操作权限状态为读写权限状态,从存储节点可确定主存储节点当前也处于读写权限状态,表示主存储节点当前可能存在新业务数据和日志索引的写入,则从存储节点本地存储的参考日志索引可能不是主存储节点的最新日志索引。因此,从存储节点向处于读写权限状态的主存储节点发送索引获取请求,等待主存储节点返回最新的日志索引作为参考日志索引。主存储节点接收到该索引获取请求,将接收到该索引获取请求时存储的最新的日志索引作为参考日志索引,并反馈给从存储节点。从存储节点接收主存储节点基于索引获取请求反馈的参考日志索引并更新本地的参考日志索引。
本实施例中,当数据操作权限状态为只读权限状态,表征主存储节点也处于只读权限状态,意味着从存储节点本地存储的主存储节点的参考日志索引是最新的,则从存储节点即可直接使用本地参考日志索引而无须与主存储节点进行交互,使得从存储节点可以独立处理数据读请求,提高从存储节点数据处理的灵活性。当数据操作权限状态为读写权限状态,表征主存储节点也处于只读权限状态,意味着主存储节点此时可能存在新的日志索引,则从存储节点本地的参考日志索引不是主存储节点的最新日志索引,则向处于读写权限状态的主存储节点发送索引获取请求,以准确获取主存储节点当前最新的参考日志索引。并且,使得从存储节点可以根据自身的数据操作权限状态,准确地判断出在自身在执行数据读请求是否能够满足线性一致性,从而在满足线性一致性的情况下处理数据读请求,能够有效避免从存储节点与主存储节点的数据未同步的情况下,向数据读请求反馈旧数据的情况。
如图3所示,为一个实施例中从存储节点处理数据读请求的时序图。
1)用户通过业务终端上运行的客户端向任意的从存储节点发送数据读请求;
2)从存储节点接收到数据读请求,检测当前是否处于只读权限状态,并检测当前的状态有效时长是否过期;
3)当从存储节点当前处于只读权限状态,且只读权限状态对应的状态有效时长未过期,则从存储节点从自己的有限状态机中获取已同步日志索引;
4)从存储节点向从存储节点返回已同步日志索引;
5)当从存储节点当前处于读写权限状态,从存储节点向主存储节点发送索引获取请求;
6)主存储节点返回最近的参考日志索引;
7)当已同步日志索引覆盖参考日志索引,从存储节点从本地获取数据读请求所请求的目标数据;当已同步日志索引未覆盖参考日志索引,则从存储节点等待有限状态机中的已同步日志索引覆盖参考日志索引后,从从存储节点本地获取数据读请求所请求的目标数据。
8)从存储节点将目标数据作为数据读请求的反馈数据反馈给客户端。
在一个实施例中,该方法还包括:
接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,该状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引;按照状态变更指令,从读写权限状态变更为只读权限状态;基于状态变更指令中的参考日志索引,更新从存储节点本地存储的主存储节点的参考日志索引。
其中,状态变更指令,用于指示从存储节点从读写权限状态变更为只读权限状态,还用于指示在从存储节点本地存储参考日志索引或者更新从存储节点本地存储参考日志索引。状态变更指令可包括主存储节点变更为只读权限状态时的参考日志索引。
具体地,主存储节点响应于状态变更事件,将主存储节点从读写权限状态变更为只读权限状态。主存储节点获取本地的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。主存储节点生成包括参考日志索引的状态变更指令,将状态变更指令下发给从存储节点。
本实施例中,生成包括参考日志索引的状态变更指令,包括:配置只读权限状态对应的状态有效时长,状态有效时长用于约束主存储节点和从存储节点处于只读权限状态的时长;生成包括参考日志索引和状态有效时长的状态变更指令。
从存储节点接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,该状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引。
从存储节点按照状态变更指令,从读写权限状态变更为只读权限状态,并将从存储节点本地存储的主存储节点的参考日志索引,变更为状态变更指令中的参考日志索引。从存储节点生成状态变更结果,并将该状态变更结果反馈给主存储节点。
本实施例中,当从存储节点本地未存储主存储节点的参考日志索引时,将主存储节点的参考日志索引存储在从存储节点本地。当从存储节点本地已存储主存储节点的参考日志索引,将从存储节点本地存储的主存储节点的参考日志索引,变更为状态变更指令中的参考日志索引。
本实施例中,接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,以按照状态变更指令,从读写权限状态变更为只读权限状态,从而能够使得从存储节点和主存储节点的数据操作状态保持一致。该状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引,使得从存储节点基于状态变更指令中的参考日志索引,更新从存储节点本地存储的主存储节点的参考日志索引,使得从存储节点本地能够保存主存储节点的最新日志索引,以减少与主存储节点之间的交互,提高对数据读请求的响应速度。
在一个实施例中,状态变更指令还包括只读权限状态对应的状态有效时长;该方法还包括:
将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长。
其中,状态变更指令还包括只读权限状态对应的状态有效时长。只读权限状态对应的状态有效时长,表征从存储节点处于只读权限状态的时间。当达到该状态有效时长后,只读权限状态失效。状态有效时长可包括状态生效时间、状态生存时长或状态失效时间中的至少一种。
状态生效时间表征从存储节点何时变更为只读权限状态。状态生存时长表征从存储节点处于只读权限状态的时长。状态失效时间表征从存储节点的只读权限状态何时失效。
具体地,从存储节点本地存储了当前的数据操作权限状态对应的状态有效时长。数据操作权限状态包括只读权限状态和读写权限状态,则数据操作权限状态对应的状态有效时长,包括只读权限状态对应的状态有效时长和读写权限状态对应的状态有效时长。
当从存储节点当前的数据操作权限状态为只读权限状态,从存储节点本地存有只读权限状态对应的状态有效时长。当从存储节点当前的数据操作权限状态为读写权限状态,从存储节点本地存有读写权限状态对应的状态有效时长。
从存储节点接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,该状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引和只读权限状态对应的状态有效时长。处于读写权限状态的从存储节点本地存储了读写权限状态对应的状态有效时长,则从存储节点将本地存储的读写权限状态对应的状态有效时长,更新为状态变更指令中的只读权限状态所对应的状态有效时长。
本实施例中,将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长,从而能够为每种数据操作权限状态设置各自的有效时长,使得数据操作权限状态可自动生效或自动失效,无须与主存储节点频繁交互,减少从存储节点对主存储节点的依赖。
如图4所示,为一个实施例中,主存储节点和从存储节点从读写权限状态变更为只读权限状态的时序图。
1)主存储节点持续检测当前的数据操作权限状态,如果当前处于读写权限状态且需要变更为只读权限状态时,停止循环检测当前的数据操作权限状态。
2)主存储节点从读写权限状态变更为只读权限状态,并配置只读权限状态对应的状态有效时长。
3)主存储节点获取最近的参考日志索引,生成包括参考日志索引和状态有效时长的权限状态变更,发送给从存储节点。
4)从存储节点接收主存储节点发送的状态变更指令,按照状态变更指令,从读写权限状态变更为只读权限状态。将状态变更指令中的参考日志索引,更新为本地存储的主存储节点的参考日志索引。将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长。
5)当只读权限状态对应的已生效时长即将达到状态有效时长,主存储节点下发状态有效时长更新指令,以通知从存储节点更新从存储节点对应的状态有效时长。
在一个实施例中,如图5所示,该方法还包括:
步骤S502,接收处于只读权限状态的主存储节点发送的状态变更请求,状态变更请求包括主存储节点处于只读权限状态时的参考日志索引。
其中,状态变更请求,是用于主存储节点请求从存储节点允许从只读权限状态变更为读写权限状态。该状态变更请求,包括主存储节点处于只读权限状态时的参考日志索引。
具体地,当处于只读权限状态的主存储节点接收到数据写请求,主存储节点获取主存储节点的参考日志索引,生成包括参考日志索引的状态变更请求。主存储节点向从存储节点发送该状态变更请求。
处于只读权限状态的从存储节点,接收处于只读权限状态的主存储节点发送的状态变更请求,对该状态变更请求进行解析,获得主存储节点处于只读权限状态时的参考日志索引。
步骤S504,获取存储在从存储节点本地的主存储节点的参考日志索引。
具体地,从存储节点获取存储在本地的主存储节点的参考日志索引,该本地存储的参考日志索引是主存储节点从读写权限状态变更为只读权限状态时,所发送的状态变更指令中携带的。
步骤S506,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引相同,向主存储节点反馈表征允许变更为读写权限状态的响应结果,反馈表征允许变更为读写权限状态的响应结果,用于指示主存储节点从只读权限状态变更为读写权限状态。
其中,响应结果是指从存储节点对该状态变更请求的响应。该响应结果有两种,一种表征允许从只读权限状态变更为读写权限状态,或者表征拒绝从只读权限状态变更为读写权限状态。
具体地,从存储节点将本地存储的参考日志索引与状态变更请求中的参考日志索引比对,当本地存储的参考日志索引与状态变更请求中的参考日志索引相同,表征从存储节点当前的数据操作权限状态与状态变更请求中所请求变更的状态一致,即从存储节点当前的数据操作权限状态与主存储节点的数据操作权限状态一致,意味着该状态变更请求有效,则向主存储节点反馈表征允许变更为读写权限状态的响应结果。该反馈表征允许变更为读写权限状态的响应结果,用于指示主存储节点从只读权限状态变更为读写权限状态。
主存储节点基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态。主存储节点在本地写入数据写请求指示的业务数据,并生成业务数据的日志索引。主存储节点将业务数据和日志索引同步至从存储节点。
本实施例中,接收处于只读权限状态的主存储节点发送的状态变更请求,所发送的状态变更请求包括主存储节点处于只读权限状态时的参考日志索引,获取存储在从存储节点本地的主存储节点的参考日志索引,从而能够基于从存储节点本地的参考日志索引与状态变更请求中的参考日志索引是否相同,来判断该状态变更请求是否有效,从而在有效的情况下向主存储节点反馈表征允许变更为读写权限状态的响应结果,使得主存储节点和从存储节点之间的状态变更能够维持一致,有利于实现数据的一致性。
在一个实施例中,该方法还包括:
接收处于读写权限状态的主存储节点发送的业务数据和业务数据的日志索引;根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
具体地,主存储节点变更为读写权限状态后,将数据写请求指示的业务数据写入主存储节点本地,并生成对该业务数据的日志索引。主存储节点将业务数据和该业务数据的日志索引关联存储至主存储节点本地。主存储节点基于业务数据和日志索引生成数据同步指令,该数据同步指令包括业务数据和业务数据对应的日志索引。主存储节点将该数据同步指令发送给各个从存储节点,以将业务数据和日志索引同步至从存储节点。
从存储节点接收到该数据同步指令,解析出业务数据和日志索引。从存储节点根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,以在本地存储关联存储已同步日志索引和已同步数据。已同步日志索引是对该业务数据进行同步获得的,已同步日志索引是对业务数据的日志索引进行同步获得的。
本实施例中,接收处于读写权限状态的主存储节点发送的业务数据和业务数据的日志索引,根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据,从而能够及时同步主存储节点写入的新数据,以保证后续用户访问从存储节点时,从存储节点无需依赖主存储节点即可独立处理用户的数据读请求,提高从存储节点的灵活性。
在一个实施例中,该方法还包括:
当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,向主存储节点反馈表征拒绝变更为读写权限状态的响应结果,表征拒绝变更为读写权限状态的响应结果,用于指示主存储节点维持只读权限状态。
具体地,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,表征从存储节点当前的数据操作权限状态与状态变更请求中所请求变更的状态不一致,则意味着该状态变更请求是过期的无效请求,则从存储节点生成表征拒绝变更为读写权限状态的响应结果,并将响应结果反馈给主存储节点。表征拒绝变更为读写权限状态的响应结果,用于指示主存储节点维持只读权限状态,使得主存储节点接收到该响应结果后,不执行状态变更。
本实施例中,基于从存储节点本地的参考日志索引与状态变更请求中的参考日志索引是否相同,来判断该状态变更请求是否有效,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,表示该状态变更请求是无效请求,则拒绝变更状态,使得从存储节点能够一直维持与主存储节点相同的状态,避免了主存储节点和从存储节点处于不同状态的情况。
在一个实施例中,该方法还包括:
确定从存储节点本地存储的只读权限状态对应的状态有效时长;
确定从存储节点处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,从只读权限状态变更为读写权限状态。
具体地,从存储节点向主存储节点反馈表征拒绝变更为读写权限状态的响应结果后,从存储节点确定本地存储的只读权限状态对应的状态有效时长。从存储节点确定从存储节点处于只读权限状态的已生效时长,该已生效时长表征从存储节点变更为只读权限状态起的生存时长。当从存储节点本地存储的只读权限状态对应的状态有效时长达到状态有效时长,表征从存储节点的只读权限状态失效,也表征主存储节点的只读权限状态失效,意味着主存储节点会自动变更为读写权限状态,则从存储节点也变更为读写权限状态,以与主存储节点保持一致的状态。
本实施例中,从存储节点本地存储的只读权限状态对应的状态有效时长是预先设置的该只读权限状态的生存时长,确定从存储节点处于只读权限状态的已生效时长,以判断只读权限状态的已生存时长是否达到的预设的生存时长,是则表示只读权限状态失效。而主存储节点和从存储节点的状态保持一致,状态生效时长也保持一致,从存储节点的只读权限状态失效意味着存储节点的只读权限状态也失效,也会自动变更为读写状态,从而能够准确保证主存储节点和从存储节点的状态一致性。
如图6所示,为一个实施例中从只读权限状态变更为读写权限状态的时序图。
1)当处于只读权限状态的主存储节点接收到数据写请求,开启状态转换流程;
2)主存储节点停止更新只读权限状态对应的状态有效时长;
3)主存储节点获取当前的参考日志索引,主存储节点生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求;
4)从存储节点接收处于只读权限状态的主存储节点发送的状态变更请求,获取存储在从存储节点本地的主存储节点的参考日志索引,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引相同,生成表征允许变更为读写权限状态的响应结果;当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,生成表征拒绝变更为读写权限状态的响应结果。
5)从存储节点向主存储节点反馈响应结果。
6)当响应结果表征从存储节点允许变更为读写权限状态,主存储节点从只读权限状态变更为读写权限状态;
7)当响应结果表征从存储节点拒绝变更为读写权限状态,主存储节点确定只读权限状态对应的状态有效时长和当前处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,主存储节点从只读权限状态变更为读写权限状态。
8)检测是否需要从读写权限状态转换为只读权限状态。
在一个实施例中,提供了一种数据处理方法,应用于从存储节点,包括:
接收处于只读权限状态的主存储节点发送的状态变更请求,状态变更请求包括主存储节点处于只读权限状态时的参考日志索引;
获取存储在从存储节点本地的主存储节点的参考日志索引;
当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引相同,向主存储节点反馈表征允许变更为读写权限状态的响应结果,反馈表征允许变更为读写权限状态的响应结果,用于指示主存储节点从只读权限状态变更为读写权限状态。
当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,向主存储节点反馈表征拒绝变更为读写权限状态的响应结果,表征拒绝变更为读写权限状态的响应结果,用于指示主存储节点维持只读权限状态。
当向主存储节点反馈表征拒绝变更为读写权限状态的响应结果,确定从存储节点本地存储的只读权限状态对应的状态有效时长;确定从存储节点处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,从只读权限状态变更为读写权限状态。
接收处于读写权限状态的主存储节点发送的业务数据和业务数据的日志索引;根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引,以及只读权限状态对应的状态有效时长;
按照状态变更指令,从读写权限状态变更为只读权限状态;
基于状态变更指令中的参考日志索引,更新从存储节点本地存储的主存储节点的参考日志索引;
将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长;
当接收到数据读请求,确定从存储节点当前的数据操作权限状态,数据操作权限状态包括只读权限状态和读写权限状态;
当数据操作权限状态为只读权限状态,从从存储节点本地获取参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引;
当数据操作权限状态为读写权限状态,向处于读写权限状态的主存储节点发送索引获取请求;接收主存储节点基于索引获取请求反馈的参考日志索引。
获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的;
当已同步日志索引覆盖参考日志索引,从从存储节点本地的已同步数据中,获取数据读请求所请求的目标数据;
将目标数据作为数据读请求的反馈数据进行反馈。
在一个实施例中,如图7所示,提供了一种数据处理方法,以该方法应用于图1中的计算机设备(计算机设备可以是图1中的终端或服务器)为例进行说明,包括以下步骤:
步骤S702,当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引。
其中,参考日志索引是主存储节点具有读写权限时最近存储的日志索引,即是主存储节点处于读写权限状态时存储的最新的日志索引。
具体地,主存储节点处于只读权限状态时,具有只读权限,不具有写权限。主存储节点处于读写权限状态时,具有读写权限。当处于只读权限状态的主存储节点接收到数据写请求,不具有写权限,因此不能写入数据写请求指示的业务数据,则主存储节点获取自身具有读写权限时最近存储至本地的日志索引,将该最近存储的日志索引作为参考日志索引。
步骤S704,生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求。
其中,状态变更请求,是用于主存储节点请求从存储节点允许从只读权限状态变更为读写权限状态。
具体地,主存储节点基于参考日志索引生成状态变更请求,并将状态变更请求下发给每个从存储节点。
从存储节点接收该状态变更请求,基于该状态变更请求中的参考日志索引和从存储节点本地的参考日志索引,生成响应结果并反馈给主存储节点。
步骤S706,基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态。
其中,响应结果是指从存储节点对该状态变更请求的响应。该响应结果有两种,一种表征允许从只读权限状态变更为读写权限状态,或者表征拒绝从只读权限状态变更为读写权限状态。
具体地,主存储节点接收从存储节点针对状态变更请求反馈的响应结果,基于该响应结果从只读权限状态变更为读写权限状态。
当响应结果表征允许从只读权限状态变更为读写权限状态,则主存储节点可立即变更为读写权限状态。当响应结果表征拒绝从只读权限状态变更为读写权限状态,则主存储节点维持只读权限状态,直至只读权限状态失效时自动变更为读写权限状态。
步骤S708,写入数据写请求指示的业务数据,并生成业务数据的日志索引。
其中,业务数据是指需要写入主存储节点的任意数据,可以是在主存储节点中新增的数据、对主存储节点中的已有数据进行修改获得的数据等,但不限于此。
具体地,主存储节点变更为读写权限状态后,具有读写权限,则确定数据写请求指示的业务数据,并将该业务数据写入主存储节点本地。主存储节点生成对该业务数据的日志索引,将业务数据和该业务数据的日志索引关联存储至本地。
步骤S710,将业务数据和日志索引同步至从存储节点。
具体地,主存储节点基于业务数据和日志索引生成数据同步指令,该数据同步指令包括业务数据和业务数据对应的日志索引。主存储节点将该数据同步指令发送给各个从存储节点,以将业务数据和日志索引同步至从存储节点。
从存储节点接收到该数据同步指令,解析出业务数据和日志索引。从存储节点根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
本实施例中,当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引,生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求,使得从存储节点本地能够存储有主存储节点的最新日志索引,使得从存储节点即可直接使用本地参考日志索引而无须向主存储节点获取,使得从存储节点可以独立处理数据读请求,提高从存储节点数据处理的灵活性。并且,通过状态变更请求询问从存储节点是否同意变更为读写权限状态,基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态,以保证主存储节点和从存储节点的状态一致性。在读写权限状态下写入数据写请求指示的业务数据,并生成业务数据的日志索引,以将业务数据和日志索引同步至从存储节点,能够及时将新数据同步给从存储节点,以保证后续用户访问从存储节点时,从存储节点无需依赖主存储节点即可独立处理用户的数据读请求,能够减少与主存储节点之间的交互,提高从存储节点的灵活性,以及提高从存储节点对数据读请求的响应速度。
在一个实施例中,基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态,包括:
接收从存储节点针对状态变更请求反馈的响应结果;当响应结果表征从存储节点允许变更为读写权限状态,从只读权限状态变更为读写权限状态。
具体地,当从存储节点本地存储的参考日志索引与状态变更请求中的参考日志索引相同,从存储节点向主存储节点反馈表征允许变更为读写权限状态的响应结果。
主存储节点接收从存储节点针对状态变更请求反馈的响应结果,当响应结果表征从存储节点允许变更为读写权限状态,主存储节点从只读权限状态变更为读写权限状态。
本实施例中,主存储节点变更为读写权限状态后,配置读写权限状态对应的状态有效时长并下发给从存储节点。从存储节点接收到该状态有效时长,从只读权限状态变更为读写权限状态,并将本地存储的只读权限状态对应的状态有效时长,变更为读写权限状态对应的状态有效时长。
本实施例中,接收从存储节点针对状态变更请求反馈的响应结果,在从存储节点同意变更为读写权限状态的情况下,主存储节点才从只读权限状态变更为读写权限状态,以保存与从存储节点的状态一致性。
在一个实施例中,基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态,包括:
当响应结果表征从存储节点拒绝变更为读写权限状态,确定只读权限状态对应的状态有效时长;确定主存储节点处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,从只读权限状态变更为读写权限状态。
具体地,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,从存储节点向主存储节点反馈表征拒绝变更为读写权限状态的响应结果。
主存储节点接收从存储节点针对状态变更请求反馈的响应结果,当响应结果表征从存储节点拒绝变更为读写权限状态,主存储节点维持当前的只读权限状态,并确定该当前的只读权限状态对应的状态有效时长。主存储节点确定主存储节点处于只读权限状态的已生效时长,判断已生效时长是否达到状态有效时长,未达到则等待已生效时长达到该状态有效时长。当已生效时长达到状态有效时长,从只读权限状态变更为读写权限状态。
本实施例中,当从存储节点拒绝变更为读写权限状态,主存储节点确定只读权限状态对应的状态有效时长,以及主存储节点处于只读权限状态的已生效时长,当已生效时长达到状态有效时长,表征只读权限状态失效,意味着从存储节点的只读权限状态也会失效,则主存储节点和从存储节点均自动从只读权限状态变更为读写权限状态,从而有效保证状态变更的一致性。
如图8所示,为一个实施例中主存储节点处理数据写请求的时序图。
1)用户通过业务终端上运行的客户端向主存储节点发送数据写请求;
2)主存储节点接收到数据写请求,检测当前是否处于读写权限状态;
3)当处于只读权限状态,主存储节点获取当前的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引;生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求;
4)从存储节点针对状态变更请求生成并反馈响应结果;
5)主存储节点接收从存储节点针对状态变更请求反馈的响应结果,当响应结果表征从存储节点允许变更为读写权限状态,从只读权限状态变更为读写权限状态;
6)当响应结果表征从存储节点拒绝变更为读写权限状态,主存储节点确定只读权限状态对应的状态有效时长,以及主存储节点处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,主存储节点从只读权限状态变更为读写权限状态;
7)在读写权限状态下,主存储节点写入数据写请求指示的业务数据,并生成业务数据的日志索引;
8)主存储节点将业务数据和日志索引同步至从存储节点;
9)主存储节点等待数据完成提交;
10)主存储节点将业务数据对应的日志索引应用到有限状态机;
11)有限状态机向主存储节点返回已应用的结果;
12)主存储节点将结果反馈给客户端。
在一个实施例中,如图9所示,该方法还包括:
步骤S902,响应于状态变更事件,将主存储节点从读写权限状态变更为只读权限状态。
其中,状态变更事件,是指需要从读写权限状态变更为只读权限状态的特定事件。状态变更事件可以是如下至少一种:主存储节点已执行数据写请求,或者主存储节点在预设时长内未接收到数据写请求,或者主存储节点的读写权限状态的已生效时长达到该读写权限状态对应的状态有效时长。
具体地,当处于读写权限状态的主存储节点接收到状态变更事件,响应于该状态变更事件将主存储节点从读写权限状态变更为只读权限状态。
例如,当处于读写权限状态的主存储节点已经执行了数据写请求,则从读写权限状态变更为只读权限状态。
或者,当处于读写权限状态的主存储节点在预设时长内未接收到数据写请求,则从读写权限状态变更为只读权限状态。
或者,当主存储节点处于读写权限状态的已生效时长,达到读写权限状态对应的状态有效时长,则从读写权限状态变更为只读权限状态。
步骤S904,获取主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。
具体地,变更为只读权限状态后的主存储节点,获取本地最近存储的日志索引。将该最近存储的日志索引作为参考日志索引。本地最近存储的日志索引,是主存储节点处于读写权限状态时最后存储到本地的日志索引。
步骤S906,生成包括参考日志索引的状态变更指令,将状态变更指令下发给从存储节点;状态变更指令用于指示从存储节点从读写权限状态变更为只读权限状态,以及在从存储节点本地存储参考日志索引。
具体地,处于只读主存储节点基于参考日志索引生成状态变更指令,该状态变更指令包括参考日志索引。主存储节点将状态变更指令下发给每个从存储节点,以指示每个从存储节点从读写权限状态变更为只读权限状态,以及指示每个从存储节点在本地存储参考日志索引。当从存储节点本地存储有参考日志索引时,该状态变更指令还用于指示每个从存储节点更新本地的参考日志索引。
本实施例中,响应于状态变更事件,将主存储节点从读写权限状态变更为只读权限状态,使得主存储节点能够自动变更为只读权限状态,从而提高主存储节点状态变更的灵活性和自主性。获取主存储节点的参考日志索引,所获取的参考日志索引是主存储节点在具有读写权限时最近存储的日志索引,是主存储节点最新的日志索引。生成包括参考日志索引的状态变更指令并下发给从存储节点,从而能够指示从存储节点从读写权限状态变更为只读权限状态,并指示从存储节点本地存储最新的日志索引,使得从存储节点能够保存主存储节点当前的最新日志索引,从而能够通过该最新的日志索引判断从存储节点本地是否已同步最新业务数据,保证了主从存储节点在日志索引和业务数据上的一致性。
在一个实施例中,生成包括参考日志索引的状态变更指令,包括:
配置只读权限状态对应的状态有效时长,状态有效时长用于约束主存储节点和从存储节点处于只读权限状态的时长;生成包括参考日志索引和状态有效时长的状态变更指令。
具体地,主存储节点本地预先存储了只读权限状态对应的状态有效时长和读写权限状态对应的状态有效时长。
当主存储节点从读写权限状态变更为只读权限状态,主存储节点配置只读权限状态对应的状态有效时长。主存储节点获取参考日志索引,基于参考日志索引和只读权限状态对应的状态有效时长生成状态变更指令,从而将状态变更指令下发给每个从存储节点,以指示从存储节点从读写权限状态变更为只读权限状态,以及在从存储节点本地存储参考日志索,以及指示从存储节点将本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长。
本实施例中,主存储节点配置只读权限状态对应的状态有效时长,以通过状态有效时长用于约束主存储节点和从存储节点处于只读权限状态的时长,使得只读权限状态可自动生效或自动失效。下发给从存储节点,使得从存储节点与主存储节点一直保持状态一致,且无须与主存储节点频繁交互,减少从存储节点对主存储节点的依赖。
在一个实施例中,提高了一种数据处理方法,应用于主存储节点,包括:
当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引;
生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求;
接收从存储节点针对状态变更请求反馈的响应结果;
当响应结果表征从存储节点允许变更为读写权限状态,从只读权限状态变更为读写权限状态;
当响应结果表征从存储节点拒绝变更为读写权限状态,确定只读权限状态对应的状态有效时长;
确定主存储节点处于只读权限状态的已生效时长;
当已生效时长达到状态有效时长,从只读权限状态变更为读写权限状态。
在读写权限状态下,写入数据写请求指示的业务数据,并生成业务数据的日志索引;将业务数据和日志索引同步至从存储节点。
响应于状态变更事件,将主存储节点从读写权限状态变更为只读权限状态;
获取主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引;
配置只读权限状态对应的状态有效时长,状态有效时长用于约束主存储节点和从存储节点处于只读权限状态的时长;
生成包括参考日志索引和状态有效时长的状态变更指令,将状态变更指令下发给从存储节点;状态变更指令用于指示从存储节点从读写权限状态变更为只读权限状态,以及更新从存储节点本地存储的参考日志索引。
在一个实施例中,提供了一种数据处理方法,该数据处理方法可应用到所有分布式存储场景。例如,分布式文件系统(GFS,HDFS,JuiceFS,Posix 语义的 NAS等)、对象存储(Amazon S3, Aliyun OSS, Baidu BOS等)、分布式数据库(MySQL,Oracle, HBase,BigTable, Spanner, TiDB,TiKV,ByteKV 等)、分布式块存储系统(云硬盘,云存储池),分布式缓存系统(Redis,MemCache 等),分布式消息队列(Kafka,RocketMQ 等) 等分布式存储场景。
该数据处理方法应用在分布式存储场景的架构如图10所示。其中,服务器存在多个副本,每个副本即为一个节点,每个节点具有各自对应的有限状态机(Finite StateMachine,FSM),也都可以实现共识协议(Faler)和一致性协议(LBCP)协议来保证数据的一致性。节点分为主存储节点和从存储节点。客户端通过与图10中的各节点完成分布式系统的数据写入和数据读取。
如图11和图12中定义了本实施例的数据处理方法在状态变更逻辑中涉及的主要状态、规则和RPC。
所有副本都具有以下参数:cur_state,表示集群当前的数据操作权限状态,包括只读权限状态(readonly,RO)和读写权限状态(read-write,RW);
cur_ro_log_index,表示当前RO状态的日志索引(log index),即切换为RO状态时的日志索引;
cur_ro_lease_ts,表示当前RO状态截止时间。
如图11所示,展示了服务器的各副本需要遵循的规则。所有副本需要遵循的规则如下:
状态(State)表中所有状态都是需要持久化的,因此每一个副本都必须等到已应用日志索引之后才可以开始对外提供服务,比如处理SyncState RPC等。
主副本(Leader)即主存储节点需要遵循的规则如下:
1)自动根据请求情况决定集群应该处于什么状态,比如空闲了就进入RO状态,有数据写请求来了就进入RW状态,对于RO状态需要心跳维护状态有效时长(lease)。
2)集群从RO进入RW状态必须要得到所有从副本(followers)同意,要么停止增加RO lease等到lease到期之后才可以变为RW;从副本即从存储节点;
从副本(Follower)即从存储节点需要遵循的规则如下:
1)如果处于RO状态,数据读请求只需要等到当前有限状态机的已同步日志索引(applied index)大于等于参考日志索引(cur_ro_log_index)即可直接返回数据读请求所请求的目标数据;
2)如果处于RW状态,则必须从leader拿到最新的cur_ro_log_index,并等待applied index大于等于cur_ro_log_index时,返回数据读请求所请求的目标数据;
如图12所示,为主副本和从副本同步状态的远程过程调用(SyncState RPC)的相关参数和处理。Leader在需要通知Follower状态变更或者续约RO lease时进行远程过程调用。远程过程调用的相关参数如下:
is_revoking,表示是否为撤销RO状态请求;ro_log_index,表示进入RO状态时的日志索引,或者撤回RO状态时的日志索引;new_state,在is_revoking为 false时有效,表示集群最新状态;
ro_lease_ts,在is_revoking 为false 时有效,表示RO状态截止时间。
返回值:
Accepted,true代表同意或允许,ro_log_index在is_revoking为true时有意义,代表当前RO状态的日志索引。is_revoking为true表示撤回RO状态,即要把RO状态切换为RW状态。is_revoking为false表示要从RW状态切换为RO状态。
Follower处理:
1)如果ro_log_index为0表示没有任何同步,直接返回true;
2)如果 is_revoking 为 false,根据参数更新所有状态,返回true;如果is_revoking 为true,返回值ro_log_index为RPC处理前的cur_ro_log_index;
3)检查ro_log_index是否和cur_ro_log_index 匹配,如果不匹配返回false;设置cur_ro_log_index和cur_ro_lease_ts 为0来表示当前没有RO状态,更改cur_state 为RW,返回true。
具体处理过程如下:
用户通过业务终端上运行的客户端向主存储节点发送数据写请求,主存储节点接收到数据写请求,检测当前是否处于读写权限状态;
当处于只读权限状态,主存储节点停止更新只读权限状态对应的状态有效时长;
主存储节点获取当前的参考日志索引,主存储节点生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求;
从存储节点接收处于只读权限状态的主存储节点发送的状态变更请求,获取存储在从存储节点本地的主存储节点的参考日志索引,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引相同,生成表征允许变更为读写权限状态的响应结果;当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,生成表征拒绝变更为读写权限状态的响应结果。
从存储节点向主存储节点反馈响应结果;当响应结果表征从存储节点允许变更为读写权限状态,主存储节点从只读权限状态变更为读写权限状态;
当响应结果表征从存储节点拒绝变更为读写权限状态,主存储节点确定只读权限状态对应的状态有效时长和当前处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,主存储节点从只读权限状态变更为读写权限状态。
在读写权限状态下,主存储节点写入数据写请求指示的业务数据,并生成业务数据的日志索引;主存储节点将业务数据和日志索引同步至从存储节点。
主存储节点等待数据完成提交后,将业务数据对应的日志索引应用到有限状态机,有限状态机向主存储节点返回已应用的结果。主存储节点将结果反馈给客户端。
主存储节点检测是否需要从读写权限状态转换为只读权限状态,如果当前处于读写权限状态且需要变更为只读权限状态时,停止循环检测当前的数据操作权限状态。
主存储节点从读写权限状态变更为只读权限状态,并配置只读权限状态对应的状态有效时长。
主存储节点获取最近的参考日志索引,生成包括参考日志索引和状态有效时长的权限状态变更,发送给从存储节点。
从存储节点接收主存储节点发送的状态变更指令,按照状态变更指令,从读写权限状态变更为只读权限状态。
将状态变更指令中的参考日志索引,更新为本地存储的主存储节点的参考日志索引,将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长。
当只读权限状态对应的已生效时长即将达到状态有效时长,主存储节点下发状态有效时长更新指令,以通知从存储节点更新从存储节点对应的状态有效时长。
主存储节点检测是否需要从只读权限状态变更为读写权限状态。
本实施例中,通过增加了读写权限状态、只读权限状态和只读权限状态对应的状态有效时长,使得用户向从副本发起数据读请求时,从副本可以根据自身的数据操作权限状态判断出在自身副本执行读请求是否能够满足线性一致性,进而能够做到系统的每秒的操作数可以随着副本数的增加而线性增长,从而解决了基于LBCP实现的系统读能力受限于主副本能力上限约束的问题。
本实施例的数据处理方法有效提升了在读多写少场景下的读吞吐,能够做到系统的读吞吐从几十万每秒的操作数提升到几百万甚至千万,并且,能够在数据写请求到来可以立刻切换为读写权限状态 ,当有从副本不能够及时响应从只读权限状态变更为了读写权限状态时,数据写请求等待只读权限状态到期,从而能够有效保证数据的一致性。
应该理解的是,虽然如上所述的各实施例所涉及的流程图中的各个步骤按照箭头的指示依次显示,但是这些步骤并不是必然按照箭头指示的顺序依次执行。除非本文中有明确的说明,这些步骤的执行并没有严格的顺序限制,这些步骤可以以其它的顺序执行。而且,如上所述的各实施例所涉及的流程图中的至少一部分步骤可以包括多个步骤或者多个阶段,这些步骤或者阶段并不必然是在同一时刻执行完成,而是可以在不同的时刻执行,这些步骤或者阶段的执行顺序也不必然是依次进行,而是可以与其它步骤或者其它步骤中的步骤或者阶段的至少一部分轮流或者交替地执行。
基于同样的发明构思,本申请实施例还提供了一种用于实现上述所涉及的数据处理方法的数据处理装置。该装置所提供的解决问题的实现方案与上述方法中所记载的实现方案相似,故下面所提供的一个或多个数据处理装置实施例中的具体限定可以参见上文中对于数据处理方法的限定,在此不再赘述。
在一个实施例中,如图13所示,提供了一种数据处理装置1300,应用于从存储节点,包括:
读请求接收模块1302,用于当接收到数据读请求,确定从存储节点当前的数据操作权限状态,数据操作权限状态包括只读权限状态和读写权限状态。
确定模块1304,用于根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引。
索引获取模块1306,用于获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的。
数据获取模块1308,用于当已同步日志索引覆盖参考日志索引,从从存储节点本地获取数据读请求所请求的目标数据。
反馈模块1310,用于将目标数据作为数据读请求的反馈数据进行反馈。
本实施例中,当从存储节点接收到数据读请求,确定从存储节点当前的数据操作权限状态,以判断自身处于只读权限状态还是读写权限状态。根据数据操作权限状态,确定主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引,使得从存储节点可以根据自身的数据操作权限状态,判断主存储节点的数据操作权限状态,从而准确地判断出自身在执行数据读请求是否能够满足数据一致性。获取从存储节点存储的已同步日志索引,已同步日志索引是对主存储节点所存储的日志索引进行同步获得的,当已同步日志索引覆盖参考日志索引,表示从存储节点本地已经同步了主存储节点的最新业务数据,意味着从存储节点满足数据一致性,能够有效避免从存储节点与主存储节点的数据未同步的情况下,向数据读请求反馈旧数据的情况。在数据一致的情况下,从从存储节点本地获取数据读请求所请求的目标数据,并将目标数据作为数据读请求的反馈数据进行反馈,从而使得从存储节点能够独立处理数据读请求,而无需依赖主存储节点进行处理,极大提高了从存储节点的灵活性和响应效率。
在一个实施例中,确定模块1304,还用于当数据操作权限状态为只读权限状态,从从存储节点本地获取参考日志索引;当数据操作权限状态为读写权限状态,向处于读写权限状态的主存储节点发送索引获取请求;接收主存储节点基于索引获取请求反馈的参考日志索引。
本实施例中,当数据操作权限状态为只读权限状态,表征主存储节点也处于只读权限状态,意味着从存储节点本地存储的主存储节点的参考日志索引是最新的,则从存储节点即可直接使用本地参考日志索引而无须与主存储节点进行交互,使得从存储节点可以独立处理数据读请求,提高从存储节点数据处理的灵活性。当数据操作权限状态为读写权限状态,表征主存储节点也处于只读权限状态,意味着主存储节点此时可能存在新的日志索引,则从存储节点本地的参考日志索引不是主存储节点的最新日志索引,则向处于读写权限状态的主存储节点发送索引获取请求,以准确获取主存储节点当前最新的参考日志索引。并且,使得从存储节点可以根据自身的数据操作权限状态,准确地判断出在自身在执行数据读请求是否能够满足线性一致性,从而在满足线性一致性的情况下处理数据读请求,能够有效避免从存储节点与主存储节点的数据未同步的情况下,向数据读请求反馈旧数据的情况。
在一个实施例中,该装置还包括变更模块,变更模块,用于接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引;按照状态变更指令,从读写权限状态变更为只读权限状态;基于状态变更指令中的参考日志索引,更新从存储节点本地存储的主存储节点的参考日志索引。
本实施例中,接收主存储节点从读写权限状态变更为只读权限状态时发送的状态变更指令,以按照状态变更指令,从读写权限状态变更为只读权限状态,从而能够使得从存储节点和主存储节点的数据操作状态保持一致。该状态变更指令包括主存储节点变更为只读权限状态时的参考日志索引,使得从存储节点基于状态变更指令中的参考日志索引,更新从存储节点本地存储的主存储节点的参考日志索引,使得从存储节点本地能够保存主存储节点的最新日志索引,以减少与主存储节点之间的交互,提高对数据读请求的响应速度。
在一个实施例中,状态变更指令还包括只读权限状态对应的状态有效时长;变更模块,还用于将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长。
本实施例中,将从存储节点本地当前存储的状态有效时长,更新为状态变更指令中只读权限状态对应的状态有效时长,从而能够为每种数据操作权限状态设置各自的有效时长,使得数据操作权限状态可自动生效或自动失效,无须与主存储节点频繁交互,减少从存储节点对主存储节点的依赖。
在一个实施例中,该装置还包括响应模块,响应模块,还用于接收处于只读权限状态的主存储节点发送的状态变更请求,状态变更请求包括主存储节点处于只读权限状态时的参考日志索引;获取存储在从存储节点本地的主存储节点的参考日志索引;当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引相同,向主存储节点反馈表征允许变更为读写权限状态的响应结果,反馈表征允许变更为读写权限状态的响应结果,用于指示主存储节点从只读权限状态变更为读写权限状态。
本实施例中,接收处于只读权限状态的主存储节点发送的状态变更请求,所发送的状态变更请求包括主存储节点处于只读权限状态时的参考日志索引,获取存储在从存储节点本地的主存储节点的参考日志索引,从而能够基于从存储节点本地的参考日志索引与状态变更请求中的参考日志索引是否相同,来判断该状态变更请求是否有效,从而在有效的情况下向主存储节点反馈表征允许变更为读写权限状态的响应结果,使得主存储节点和从存储节点之间的状态变更能够维持一致,有利于实现数据的一致性。
在一个实施例中,该装置还包括同步装置,同步装置,包括接收处于读写权限状态的主存储节点发送的业务数据和业务数据的日志索引;根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
本实施例中,接收处于读写权限状态的主存储节点发送的业务数据和业务数据的日志索引,根据业务数据和业务数据的日志索引,在从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据,从而能够及时同步主存储节点写入的新数据,以保证后续用户访问从存储节点时,从存储节点无需依赖主存储节点即可独立处理用户的数据读请求,提高从存储节点的灵活性。
在一个实施例中,响应模块,还用于当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,向主存储节点反馈表征拒绝变更为读写权限状态的响应结果,表征拒绝变更为读写权限状态的响应结果,用于指示主存储节点维持只读权限状态。
本实施例中,基于从存储节点本地的参考日志索引与状态变更请求中的参考日志索引是否相同,来判断该状态变更请求是否有效,当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,表示该状态变更请求是无效请求,则拒绝变更状态,使得从存储节点能够一直维持与主存储节点相同的状态,避免了主存储节点和从存储节点处于不同状态的情况。
在一个实施例中,响应模块,还用于当从存储节点本地的参考日志索引与状态变更请求中的参考日志索引不同,向主存储节点反馈表征拒绝变更为读写权限状态的响应结果,表征拒绝变更为读写权限状态的响应结果,用于指示主存储节点维持只读权限状态。
本实施例中,从存储节点本地存储的只读权限状态对应的状态有效时长是预先设置的该只读权限状态的生存时长,确定从存储节点处于只读权限状态的已生效时长,以判断只读权限状态的已生存时长是否达到的预设的生存时长,是则表示只读权限状态失效。而主存储节点和从存储节点的状态保持一致,状态生效时长也保持一致,从存储节点的只读权限状态失效意味着存储节点的只读权限状态也失效,也会自动变更为读写状态,从而能够准确保证主存储节点和从存储节点的状态一致性。
在一个实施例中,如图14所示,提供了一种数据处理装置1400,应用于主存储节点,包括:
写请求接收模块1402,用于当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引。
发送模块1404,用于生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求。
变更模块1406,用于基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态。
存储模块1408,用于写入数据写请求指示的业务数据,并生成业务数据的日志索引。
同步模块1410,用于将业务数据和日志索引同步至从存储节点。
本实施例中,当处于只读权限状态的主存储节点接收到数据写请求,获取主存储节点的参考日志索引,参考日志索引是主存储节点具有读写权限时最近存储的日志索引,生成包括参考日志索引的状态变更请求,并向从存储节点发送状态变更请求,使得从存储节点本地能够存储有主存储节点的最新日志索引,使得从存储节点即可直接使用本地参考日志索引而无须向主存储节点获取,使得从存储节点可以独立处理数据读请求,提高从存储节点数据处理的灵活性。并且,通过状态变更请求询问从存储节点是否同意变更为读写权限状态,基于从存储节点针对状态变更请求反馈的响应结果,从只读权限状态变更为读写权限状态,以保证主存储节点和从存储节点的状态一致性。在读写权限状态下写入数据写请求指示的业务数据,并生成业务数据的日志索引,以将业务数据和日志索引同步至从存储节点,能够及时将新数据同步给从存储节点,以保证后续用户访问从存储节点时,从存储节点无需依赖主存储节点即可独立处理用户的数据读请求,能够减少与主存储节点之间的交互,提高从存储节点的灵活性,以及提高从存储节点对数据读请求的响应速度。
在一个实施例中,变更模块1406,还用于接收从存储节点针对状态变更请求反馈的响应结果;当响应结果表征从存储节点允许变更为读写权限状态,从只读权限状态变更为读写权限状态。
本实施例中,接收从存储节点针对状态变更请求反馈的响应结果,在从存储节点同意变更为读写权限状态的情况下,主存储节点才从只读权限状态变更为读写权限状态,以保存与从存储节点的状态一致性。
在一个实施例中,变更模块1406,还用于当响应结果表征从存储节点拒绝变更为读写权限状态,确定只读权限状态对应的状态有效时长;确定主存储节点处于只读权限状态的已生效时长;当已生效时长达到状态有效时长,从只读权限状态变更为读写权限状态。
本实施例中,当从存储节点拒绝变更为读写权限状态,主存储节点确定只读权限状态对应的状态有效时长,以及主存储节点处于只读权限状态的已生效时长,当已生效时长达到状态有效时长,表征只读权限状态失效,意味着从存储节点的只读权限状态也会失效,则主存储节点和从存储节点均自动从只读权限状态变更为读写权限状态,从而有效保证状态变更的一致性。
在一个实施例中,变更模块1406,还用于响应于状态变更事件,将主存储节点从读写权限状态变更为只读权限状态;获取主存储节点的参考日志索引,参考日志索引是主存储节点在具有读写权限时最近存储的日志索引;生成包括参考日志索引的状态变更指令,将状态变更指令下发给从存储节点;状态变更指令用于指示从存储节点从读写权限状态变更为只读权限状态,以及在从存储节点本地存储参考日志索引。
本实施例中,响应于状态变更事件,将主存储节点从读写权限状态变更为只读权限状态,使得主存储节点能够自动变更为只读权限状态,从而提高主存储节点状态变更的灵活性和自主性。获取主存储节点的参考日志索引,所获取的参考日志索引是主存储节点在具有读写权限时最近存储的日志索引,是主存储节点最新的日志索引。生成包括参考日志索引的状态变更指令并下发给从存储节点,从而能够指示从存储节点从读写权限状态变更为只读权限状态,并指示从存储节点本地存储最新的日志索引,使得从存储节点能够保存主存储节点当前的最新日志索引,从而能够通过该最新的日志索引判断从存储节点本地是否已同步最新业务数据,保证了主从存储节点在日志索引和业务数据上的一致性。
在一个实施例中,变更模块1406,还用于配置只读权限状态对应的状态有效时长,状态有效时长用于约束主存储节点和从存储节点处于只读权限状态的时长;生成包括参考日志索引和状态有效时长的状态变更指令。
本实施例中,主存储节点配置只读权限状态对应的状态有效时长,以通过状态有效时长用于约束主存储节点和从存储节点处于只读权限状态的时长,使得只读权限状态可自动生效或自动失效。下发给从存储节点,使得从存储节点与主存储节点一直保持状态一致,且无须与主存储节点频繁交互,减少从存储节点对主存储节点的依赖。
上述数据处理装置中的各个模块可全部或部分通过软件、硬件及其组合来实现。上述各模块可以硬件形式内嵌于或独立于计算机设备中的处理器中,也可以以软件形式存储于计算机设备中的存储器中,以便于处理器调用执行以上各个模块对应的操作。
在一个实施例中,提供了一种计算机设备,该计算机设备可以是服务器,其内部结构图可以如图15所示。该计算机设备包括处理器、存储器、输入/输出接口(Input/Output,简称I/O)和通信接口。其中,处理器、存储器和输入/输出接口通过系统总线连接,通信接口通过输入/输出接口连接到系统总线。其中,该计算机设备的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质和内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储数据处理的相关数据。该计算机设备的输入/输出接口用于处理器与外部设备之间交换信息。该计算机设备的通信接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种数据处理方法。
本领域技术人员可以理解,图15中示出的结构,仅仅是与本申请方案相关的部分结构的框图,并不构成对本申请方案所应用于其上的计算机设备的限定,具体的计算机设备可以包括比图中所示更多或更少的部件,或者组合某些部件,或者具有不同的部件布置。
在一个实施例中,还提供了一种计算机设备,包括存储器和处理器,存储器中存储有计算机程序,该处理器执行计算机程序时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
在一个实施例中,提供了一种计算机程序产品,包括计算机程序,该计算机程序被处理器执行时实现上述各方法实施例中的步骤。
需要说明的是,本申请所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,且相关数据的收集、使用和处理需要符合相关规定。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储于一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的各实施例中所使用的对存储器、数据库或其它介质的任何引用,均可包括非易失性和易失性存储器中的至少一种。非易失性存储器可包括只读存储器(Read-OnlyMemory,ROM)、磁带、软盘、闪存、光存储器、高密度嵌入式非易失性存储器、阻变存储器(ReRAM)、磁变存储器(Magnetoresistive Random Access Memory,MRAM)、铁电存储器(Ferroelectric Random Access Memory,FRAM)、相变存储器(Phase Change Memory,PCM)、石墨烯存储器等。易失性存储器可包括随机存取存储器(Random Access Memory,RAM)或外部高速缓冲存储器等。作为说明而非局限,RAM可以是多种形式,比如静态随机存取存储器(Static Random AccessMemory,SRAM)或动态随机存取存储器(Dynamic RandomAccess Memory,DRAM)等。本申请所提供的各实施例中所涉及的数据库可包括关系型数据库和非关系型数据库中至少一种。非关系型数据库可包括基于区块链的分布式数据库等,不限于此。本申请所提供的各实施例中所涉及的处理器可为通用处理器、中央处理器、图形处理器、数字信号处理器、可编程逻辑器、基于量子计算的数据处理逻辑器等,不限于此。
以上实施例的各技术特征可以进行任意的组合,为使描述简洁,未对上述实施例中的各个技术特征所有可能的组合都进行描述,然而,只要这些技术特征的组合不存在矛盾,都应当认为是本说明书记载的范围。
以上所述实施例仅表达了本申请的几种实施方式,其描述较为具体和详细,但并不能因此而理解为对本申请专利范围的限制。应当指出的是,对于本领域的普通技术人员来说,在不脱离本申请构思的前提下,还可以做出若干变形和改进,这些都属于本申请的保护范围。因此,本申请的保护范围应以所附权利要求为准。
Claims (25)
1.一种数据处理方法,其特征在于,应用于从存储节点,所述方法包括:
接收主存储节点发送的状态变更指令,所述状态变更指令是所述主存储节点响应于状态变更事件从读写权限状态变更为只读权限状态时生成的,所述状态变更指令包括所述主存储节点变更为所述只读权限状态时的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;
按照所述状态变更指令,从所述读写权限状态变更为所述只读权限状态;
基于所述状态变更指令中的所述参考日志索引,更新所述从存储节点本地存储的所述主存储节点的参考日志索引;
当接收到来自业务终端的数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括所述只读权限状态和所述读写权限状态,所述主存储节点和所述从存储节点具有相同的数据操作权限状态;
当所述数据操作权限状态为所述只读权限状态,从所述从存储节点本地获取参考日志索引;
获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
将所述目标数据作为所述数据读请求的反馈数据进行反馈。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述数据操作权限状态为所述读写权限状态,向处于所述读写权限状态的所述主存储节点发送索引获取请求;
接收所述主存储节点基于所述索引获取请求反馈的参考日志索引。
3.根据权利要求1所述的方法,其特征在于,所述状态变更指令还包括所述只读权限状态对应的状态有效时长;所述方法还包括:
将所述从存储节点本地当前存储的状态有效时长,更新为所述状态变更指令中所述只读权限状态对应的状态有效时长。
4.根据权利要求1至3任意一项所述的方法,其特征在于,所述方法还包括:
接收处于所述只读权限状态的主存储节点发送的状态变更请求,所述状态变更请求包括所述主存储节点处于所述只读权限状态时的参考日志索引;
获取存储在所述从存储节点本地的所述主存储节点的参考日志索引;
当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引相同,向所述主存储节点反馈表征允许变更为所述读写权限状态的响应结果,所述反馈表征允许变更为所述读写权限状态的响应结果,用于指示所述主存储节点从所述只读权限状态变更为所述读写权限状态。
5.根据权利要求4所述的方法,其特征在于,所述方法还包括:
接收处于所述读写权限状态的主存储节点发送的业务数据和所述业务数据的日志索引;
根据所述业务数据和所述业务数据的日志索引,在所述从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
6.根据权利要求4所述的方法,其特征在于,所述方法还包括:
当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引不同,向所述主存储节点反馈表征拒绝变更为所述读写权限状态的响应结果,所述表征拒绝变更为所述读写权限状态的响应结果,用于指示所述主存储节点维持所述只读权限状态。
7.根据权利要求6所述的方法,其特征在于,所述方法还包括:
确定所述从存储节点本地存储的所述只读权限状态对应的状态有效时长;
确定所述从存储节点处于所述只读权限状态的已生效时长;
当所述已生效时长达到所述状态有效时长,从所述只读权限状态变更为所述读写权限状态。
8.一种数据处理方法,其特征在于,应用于主存储节点,所述方法包括:
当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
将所述业务数据和所述日志索引同步至所述从存储节点;
响应于状态变更事件,将所述主存储节点从所述读写权限状态变更为所述只读权限状态;
获取所述主存储节点从所述读写权限状态变更为所述只读权限状态时的参考日志索引;
生成包括所述参考日志索引的状态变更指令,将所述状态变更指令下发给所述从存储节点;所述状态变更指令用于指示所述从存储节点从所述读写权限状态变更为所述只读权限状态,使得所述从存储节点和所述主存储节点具有相同的数据操作权限状态,以及指示更新所述从存储节点本地存储的参考日志索引。
9.根据权利要求8所述的方法,其特征在于,所述基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态,包括:
接收所述从存储节点针对所述状态变更请求反馈的响应结果;
当所述响应结果表征所述从存储节点允许变更为所述读写权限状态,从所述只读权限状态变更为所述读写权限状态。
10.根据权利要求8所述的方法,其特征在于,所述基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态,包括:
当所述响应结果表征所述从存储节点拒绝变更为所述读写权限状态,确定所述只读权限状态对应的状态有效时长;
确定所述主存储节点处于所述只读权限状态的已生效时长;
当所述已生效时长达到所述状态有效时长,从所述只读权限状态变更为所述读写权限状态。
11.根据权利要求8所述的方法,其特征在于,所述生成包括所述参考日志索引的状态变更指令,包括:
配置所述只读权限状态对应的状态有效时长,所述状态有效时长用于约束所述主存储节点和所述从存储节点处于所述只读权限状态的时长;
生成包括所述参考日志索引和所述状态有效时长的状态变更指令。
12.一种数据处理装置,其特征在于,应用于从存储节点,所述装置包括:
变更模块,用于接收主存储节点发送的状态变更指令,所述状态变更指令是所述主存储节点响应于状态变更事件从读写权限状态变更为只读权限状态时生成的,所述状态变更指令包括所述主存储节点变更为所述只读权限状态时的参考日志索引,所述参考日志索引是所述主存储节点在具有读写权限时最近存储的日志索引;按照所述状态变更指令,从所述读写权限状态变更为所述只读权限状态;基于所述状态变更指令中的所述参考日志索引,更新所述从存储节点本地存储的所述主存储节点的参考日志索引;
读请求接收模块,用于当接收到来自业务终端的数据读请求,确定所述从存储节点当前的数据操作权限状态,所述数据操作权限状态包括所述只读权限状态和所述读写权限状态,所述主存储节点和所述从存储节点具有相同的数据操作权限状态;
确定模块,用于当所述数据操作权限状态为所述只读权限状态,从所述从存储节点本地获取参考日志索引;
索引获取模块,用于获取所述从存储节点存储的已同步日志索引,所述已同步日志索引是对所述主存储节点所存储的日志索引进行同步获得的;
数据获取模块,用于当所述已同步日志索引覆盖所述参考日志索引,从所述从存储节点本地获取所述数据读请求所请求的目标数据;
反馈模块,用于将所述目标数据作为所述数据读请求的反馈数据进行反馈。
13.根据权利要求12所述的装置,其特征在于,所述确定模块,还用于当所述数据操作权限状态为所述读写权限状态,向处于所述读写权限状态的所述主存储节点发送索引获取请求;接收所述主存储节点基于所述索引获取请求反馈的参考日志索引。
14.根据权利要求12所述的装置,其特征在于,所述状态变更指令还包括所述只读权限状态对应的状态有效时长;所述变更模块,还用于将所述从存储节点本地当前存储的状态有效时长,更新为所述状态变更指令中所述只读权限状态对应的状态有效时长。
15.根据权利要求12至14任意一项所述的装置,其特征在于,所述装置还包括:
响应模块,用于接收处于所述只读权限状态的主存储节点发送的状态变更请求,所述状态变更请求包括所述主存储节点处于所述只读权限状态时的参考日志索引;获取存储在所述从存储节点本地的所述主存储节点的参考日志索引;
当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引相同,向所述主存储节点反馈表征允许变更为所述读写权限状态的响应结果,所述反馈表征允许变更为所述读写权限状态的响应结果,用于指示所述主存储节点从所述只读权限状态变更为所述读写权限状态。
16.根据权利要求15所述的装置,其特征在于,所述装置还包括:
同步装置,用于接收处于所述读写权限状态的主存储节点发送的业务数据和所述业务数据的日志索引;根据所述业务数据和所述业务数据的日志索引,在所述从存储节点本地执行数据同步操作,获得已同步日志索引和已同步数据。
17.根据权利要求15所述的装置,其特征在于,所述响应模块,还用于当所述从存储节点本地的参考日志索引与所述状态变更请求中的所述参考日志索引不同,向所述主存储节点反馈表征拒绝变更为所述读写权限状态的响应结果,所述表征拒绝变更为所述读写权限状态的响应结果,用于指示所述主存储节点维持所述只读权限状态。
18.根据权利要求17所述的装置,其特征在于,所述响应模块,还用于确定所述从存储节点本地存储的所述只读权限状态对应的状态有效时长;确定所述从存储节点处于所述只读权限状态的已生效时长;当所述已生效时长达到所述状态有效时长,从所述只读权限状态变更为所述读写权限状态。
19.一种数据处理装置,其特征在于,应用于主存储节点,所述装置包括:
写请求接收模块,用于当处于只读权限状态的所述主存储节点接收到数据写请求,获取所述主存储节点的参考日志索引,所述参考日志索引是所述主存储节点具有读写权限时最近存储的日志索引;
发送模块,用于生成包括所述参考日志索引的状态变更请求,并向从存储节点发送所述状态变更请求;
变更模块,用于基于所述从存储节点针对所述状态变更请求反馈的响应结果,从所述只读权限状态变更为读写权限状态;
存储模块,用于写入所述数据写请求指示的业务数据,并生成所述业务数据的日志索引;
同步模块,用于将所述业务数据和所述日志索引同步至所述从存储节点;
所述变更模块,还用于响应于状态变更事件,将所述主存储节点从所述读写权限状态变更为所述只读权限状态;获取所述主存储节点从所述读写权限状态变更为所述只读权限状态时的参考日志索引;生成包括所述参考日志索引的状态变更指令,将所述状态变更指令下发给所述从存储节点;所述状态变更指令用于指示所述从存储节点从所述读写权限状态变更为所述只读权限状态,使得所述从存储节点和所述主存储节点具有相同的数据操作权限状态,以及指示更新所述从存储节点本地存储的参考日志索引。
20.根据权利要求19所述的装置,其特征在于,所述变更模块,还用于接收所述从存储节点针对所述状态变更请求反馈的响应结果;当所述响应结果表征所述从存储节点允许变更为所述读写权限状态,从所述只读权限状态变更为所述读写权限状态。
21.根据权利要求19所述的装置,其特征在于,所述变更模块,还用于当所述响应结果表征所述从存储节点拒绝变更为所述读写权限状态,确定所述只读权限状态对应的状态有效时长;确定所述主存储节点处于所述只读权限状态的已生效时长;当所述已生效时长达到所述状态有效时长,从所述只读权限状态变更为所述读写权限状态。
22.根据权利要求19所述的装置,其特征在于,所述变更模块,还用于配置所述只读权限状态对应的状态有效时长,所述状态有效时长用于约束所述主存储节点和所述从存储节点处于所述只读权限状态的时长;生成包括所述参考日志索引和所述状态有效时长的状态变更指令。
23.一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至11中任一项所述的方法的步骤。
24.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
25.一种计算机程序产品,包括计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至11中任一项所述的方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311466074.XA CN117193671B (zh) | 2023-11-07 | 2023-11-07 | 数据处理方法、装置、计算机设备和计算机可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311466074.XA CN117193671B (zh) | 2023-11-07 | 2023-11-07 | 数据处理方法、装置、计算机设备和计算机可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN117193671A CN117193671A (zh) | 2023-12-08 |
CN117193671B true CN117193671B (zh) | 2024-03-29 |
Family
ID=88996478
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311466074.XA Active CN117193671B (zh) | 2023-11-07 | 2023-11-07 | 数据处理方法、装置、计算机设备和计算机可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117193671B (zh) |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745005B1 (en) * | 2006-09-29 | 2014-06-03 | Emc Corporation | Checkpoint recovery using a B-tree intent log with syncpoints |
WO2019141186A1 (zh) * | 2018-01-16 | 2019-07-25 | 华为技术有限公司 | 数据处理方法和装置 |
CN110232053A (zh) * | 2017-12-05 | 2019-09-13 | 华为技术有限公司 | 日志处理方法、相关设备及系统 |
CN113987064A (zh) * | 2021-09-23 | 2022-01-28 | 阿里云计算有限公司 | 数据处理方法、系统及设备 |
CN114461593A (zh) * | 2022-04-13 | 2022-05-10 | 云和恩墨(北京)信息技术有限公司 | 日志写入方法及其装置、电子设备及存储介质 |
CN115203217A (zh) * | 2022-06-20 | 2022-10-18 | 平安银行股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
Family Cites Families (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US11675499B2 (en) * | 2020-06-19 | 2023-06-13 | Western Digital Technologies, Inc. | Synchronous discovery logs in a fabric storage system |
-
2023
- 2023-11-07 CN CN202311466074.XA patent/CN117193671B/zh active Active
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US8745005B1 (en) * | 2006-09-29 | 2014-06-03 | Emc Corporation | Checkpoint recovery using a B-tree intent log with syncpoints |
CN110232053A (zh) * | 2017-12-05 | 2019-09-13 | 华为技术有限公司 | 日志处理方法、相关设备及系统 |
WO2019141186A1 (zh) * | 2018-01-16 | 2019-07-25 | 华为技术有限公司 | 数据处理方法和装置 |
CN113987064A (zh) * | 2021-09-23 | 2022-01-28 | 阿里云计算有限公司 | 数据处理方法、系统及设备 |
CN114461593A (zh) * | 2022-04-13 | 2022-05-10 | 云和恩墨(北京)信息技术有限公司 | 日志写入方法及其装置、电子设备及存储介质 |
CN115203217A (zh) * | 2022-06-20 | 2022-10-18 | 平安银行股份有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN117193671A (zh) | 2023-12-08 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US20220043830A1 (en) | Versioned hierarchical data structures in a distributed data store | |
US11086531B2 (en) | Scaling events for hosting hierarchical data structures | |
US10642840B1 (en) | Filtered hash table generation for performing hash joins | |
US10049119B2 (en) | Synchronization of client machines with a content management system repository | |
US10338917B2 (en) | Method, apparatus, and system for reading and writing files | |
JP6181290B2 (ja) | トランザクションの順序付け | |
US9305056B1 (en) | Results cache invalidation | |
US10169367B2 (en) | Managing opportunistic locks in a distributed file system | |
US9792294B2 (en) | Using byte-range locks to manage multiple concurrent accesses to a file in a distributed filesystem | |
US8433693B2 (en) | Locking semantics for a storage system based on file types | |
US9576071B2 (en) | Graph-based data models for partitioned data | |
US9646022B2 (en) | Distributed change notifications for a distributed filesystem | |
CN111263937A (zh) | 内容管理客户端同步服务 | |
US20080243847A1 (en) | Separating central locking services from distributed data fulfillment services in a storage system | |
US8250102B2 (en) | Remote storage and management of binary object data | |
CN113535656B (zh) | 数据访问方法、装置、设备及存储介质 | |
CN112654978A (zh) | 分布式异构存储系统中数据一致性实时检查的方法、设备和系统 | |
CN113377868A (zh) | 一种基于分布式kv数据库的离线存储系统 | |
US11100129B1 (en) | Providing a consistent view of associations between independently replicated data objects | |
CN115114374B (zh) | 事务执行方法、装置、计算设备及存储介质 | |
US20130006920A1 (en) | Record operation mode setting | |
US10387384B1 (en) | Method and system for semantic metadata compression in a two-tier storage system using copy-on-write | |
CN108256019A (zh) | 数据库主键生成方法、装置、设备及其存储介质 | |
CN117193671B (zh) | 数据处理方法、装置、计算机设备和计算机可读存储介质 | |
US20170091253A1 (en) | Interrupted synchronization detection and recovery |
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 |