CN111368005B - 基于区块链的数据处理方法、装置、设备及可读存储介质 - Google Patents
基于区块链的数据处理方法、装置、设备及可读存储介质 Download PDFInfo
- Publication number
- CN111368005B CN111368005B CN202010192945.3A CN202010192945A CN111368005B CN 111368005 B CN111368005 B CN 111368005B CN 202010192945 A CN202010192945 A CN 202010192945A CN 111368005 B CN111368005 B CN 111368005B
- Authority
- CN
- China
- Prior art keywords
- node
- consensus
- block
- state
- synchronization
- 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 11
- 238000001514 detection method Methods 0.000 claims abstract description 129
- 230000001360 synchronised effect Effects 0.000 claims abstract description 106
- 238000000034 method Methods 0.000 claims abstract description 57
- 238000012545 processing Methods 0.000 claims description 34
- 230000007246 mechanism Effects 0.000 claims description 33
- 230000003993 interaction Effects 0.000 claims description 31
- 230000008569 process Effects 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 12
- 230000001960 triggered effect Effects 0.000 claims description 7
- 230000002159 abnormal effect Effects 0.000 claims description 5
- 238000010586 diagram Methods 0.000 description 19
- 239000000725 suspension Substances 0.000 description 6
- 238000004891 communication Methods 0.000 description 5
- 230000006870 function Effects 0.000 description 5
- 238000011084 recovery Methods 0.000 description 4
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005516 engineering process Methods 0.000 description 3
- 238000012544 monitoring process Methods 0.000 description 3
- 230000009286 beneficial effect Effects 0.000 description 2
- 238000013500 data storage Methods 0.000 description 2
- 238000012423 maintenance Methods 0.000 description 2
- 230000001174 ascending effect Effects 0.000 description 1
- 230000008859 change Effects 0.000 description 1
- 238000013461 design Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/20—Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
- G06F16/27—Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/10—Active monitoring, e.g. heartbeat, ping or trace-route
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L43/00—Arrangements for monitoring or testing data switching networks
- H04L43/16—Threshold monitoring
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/01—Protocols
- H04L67/10—Protocols in which an application is distributed across nodes in the network
- H04L67/1095—Replication or mirroring of data, e.g. scheduling or transport for data synchronisation between network nodes
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Databases & Information Systems (AREA)
- Signal Processing (AREA)
- Computer Networks & Wireless Communication (AREA)
- Data Mining & Analysis (AREA)
- General Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- Software Systems (AREA)
- Computing Systems (AREA)
- Health & Medical Sciences (AREA)
- Cardiology (AREA)
- General Health & Medical Sciences (AREA)
- Hardware Redundancy (AREA)
Abstract
本申请实施例公开了一种基于区块链的数据处理方法、装置、设备及可读存储介质,方法包括:在第一心跳周期中,第一节点向第二节点发送第一区块高度,接收第二节点的第二区块高度;若第一节点在同步检测状态下确定第一区块高度和最大的第二区块高度的差异不满足共识条件,则进行同步;在第二心跳周期中,第一节点向第二节点发送同步后的第一区块高度,接收第二节点的第三区块高度;若第一节点检测到同步后的第一区块高度和最大的第二区块高度的差异满足共识条件,则根据第三区块高度确定满足共识条件的第二节点的数量;若该数量大于数量阈值,则第一节点将同步检测状态切换为同步完成状态,进行共识。采用本申请,可以提高区块链节点的共识成功率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及一种基于区块链的数据处理方法、装置、设备及可读存储介质。
背景技术
区块链是一种分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链还可以进行数据加密传输、节点识别和安全访问,是一种先进的分布式基础架构。
在区块链网络中,对于交易数据被写入账本的流程可以为,首先客户端向连接区块链网络的数据节点或轻节点发送,随后交易数据在区块链网络中传递(也就是节点以接力棒的方式进行传递),直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,进行执行共识,待共识完成后将该交易数据写入账本,随后返回至客户端。
由于每个共识节点都可能存在网络掉线或共识信息落后的情况,这些情况会导致共识节点在共识的时候信息不同步,造成共识失败,进而降低区块链网络的共识成功率。
申请内容
本申请实施例提供一种基于区块链的数据处理方法、装置、设备及可读存储介质,可以提高区块链节点的共识成功率。
本申请实施例一方面提供一种基于区块链的数据处理方法,包括:
第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于上述第一心跳周期中的上述至少两个第二节点所发送的第二区块高度;
若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理;
上述第一节点在第二心跳周期中向上述第二节点发送区块同步后的第一区块高度,接收处于上述第二心跳周期中的上述至少两个第二节点发送的第三区块高度;
若上述第一节点在上述同步检测状态下检测到上述区块同步后的第一区块高度和上述最大的第二区块高度之间的差异满足共识条件,则根据上述第三区块高度确定满足上述共识条件的第二节点的数量,作为第一目标数量;
若上述第一目标数量大于数量阈值,则上述第一节点将上述同步检测状态切换为同步完成状态,在上述同步完成状态下进入共识业务流程。
本申请实施例一方面提供一种基于区块链的数据处理装置,包括:
第一区块高度交互模块,用于第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于上述第一心跳周期中的上述至少两个第二节点所发送的第二区块高度;
区块同步模块,用于若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理;
第二区块高度交互模块,用于上述第一节点在第二心跳周期中向上述第二节点发送区块同步后的第一区块高度,接收处于上述第二心跳周期中的上述至少两个第二节点发送的第三区块高度;
第一目标数量确定模块,用于若上述第一节点在上述同步检测状态下检测到上述区块同步后的第一区块高度和上述最大的第二区块高度之间的差异满足共识条件,则根据上述第三区块高度确定满足上述共识条件的第二节点的数量,作为第一目标数量;
共识业务进入模块,用于若上述第一目标数量大于数量阈值,则上述第一节点将上述同步检测状态切换为同步完成状态,在上述同步完成状态下进入共识业务流程。
其中,上述区块同步模块,包括:
第一高度差异确定单元,用于上述第一节点在上述同步检测状态下,确定上述第一区块高度以及最大的第二区块高度之间的第一高度差异参数;
待同步区块拉取单元,用于若上述第一区块高度小于上述最大的第二区块高度,且上述第一高度差异参数大于参数阈值,则确定上述第一区块高度和上述最大的第二区块高度之间的差异不满足共识条件,根据上述第一高度差异参数从目标第二节点拉取待同步区块,进行区块同步;上述目标第二节点为上述至少两个第二节点中具有上述最大的第二区块高度的第二节点。
其中,上述第一目标数量确定模块,包括:
第二高度差异确定单元,用于上述第一节点在上述同步检测状态下,确定上述区块同步后的第一区块高度以及上述最大的第二区块高度之间的第二高度差异参数;
第三高度差异获取单元,用于若上述第二高度差异参数小于或等于参数阈值,则确定上述区块同步后的第一区块高度和上述最大的第二区块高度之间的差异满足共识条件,触发获取上述第三区块高度与上述最大的第二区块高度之间的第三高度差异参数;
目标数量统计单元,用于统计上述第三高度差异参数小于或等于上述参数阈值的第二节点的数量,作为第一目标数量。
其中,还包括:
初始化模块,用于上述第一节点在初始化状态下进行节点初始化;
信息配置模块,用于当完成节点初始化时,将上述初始化状态切换为配置状态,在上述配置状态下从智能合约中获取共识配置信息,根据上述共识配置信息进行配置处理;
心跳机制触发模块,用于当完成配置处理时,上述第一节点将上述配置状态切换为心跳触发状态,在上述心跳触发状态下触发心跳机制;上述心跳机制用于产生上述第一心跳周期和上述第二心跳周期。
其中,还包括:
共识消息发送模块,用于在共识业务流程中,处于上述同步完成状态的上述第一节点在第三心跳周期中向上述至少两个第二节点发送第一共识消息;
共识消息接收模块,用于接收处于上述第三心跳周期中的上述至少两个第二节点所发送的第二共识消息;
状态切换检测模块,用于上述第一节点根据上述第一共识消息以及上述第二共识消息,进行状态切换检测;
共识业务暂停模块,用于若状态切换检测出上述第一节点从上述同步完成状态切换为上述同步检测状态,则暂停上述第一节点的共识业务流程;
共识业务维持模块,用于若状态切换检测出上述第一节点保持上述同步完成状态,则继续进行共识业务流程。
其中,上述状态切换检测模块,包括:
生成时间戳获取单元,用于获取上述第一共识消息对应的第一生成时间戳,以及上述第二共识消息对应的第二生成时间戳;
最大生成时间戳确定单元,用于在上述第二生成时间戳中确定出最大的第二生成时间戳;
时间差异参数确定单元,用于若上述第一生成时间戳小于上述最大的第二生成时间戳,则确定上述第一生成时间戳与上述最大的第二生成时间戳之间的第一时间差异参数;
状态切换检测进行单元,用于根据上述第一时间差异参数进行状态切换检测;
同步完成状态保持单元,用于若上述第一生成时间戳大于或等于上述第二生成时间戳,则上述第一节点保持上述同步完成状态。
其中,上述状态切换检测进行单元,包括:
状态切换子单元,用于若上述第一时间差异参数大于时长阈值,则上述第一节点从上述同步完成状态切换为上述同步检测状态;
状态保持子单元,用于若上述第一时间差异参数小于或等于上述时长阈值,则上述第一节点保持上述同步完成状态。
其中,还包括:
时间范围确定模块,用于根据上述第一生成时间戳以及上述最大的第二生成时间戳,确定待同步消息的生成时间范围;
消息同步模块,用于根据上述待同步消息的生成时间范围,从上述最大的第二生成时间戳对应的第二节点拉取上述待同步消息,进行消息同步。
其中,还包括:
共识消息交互模块,用于在第四心跳周期中向上述至少两个第二节点发送消息同步后的第一共识消息,接收处于上述第四心跳周期中的上述至少两个第二节点发送的第三共识消息;
时间差异参数获取模块,用于上述第一节点在上述同步检测状态下获取上述消息同步后的第一共识消息对应的第三生成时间戳,获取上述第三生成时间戳与上述最大的第二生成时间戳之间的第二时间差异参数;
上述时间差异参数获取模块,还用于若上述第二时间差异参数小于或等于上述时长阈值,则获取上述第三共识消息对应的生成时间戳与上述最大的第二生成时间戳之间的第三时间差异参数;
第二目标数量确定模块,用于统计上述第三时间差异参数小于或等于上述时长阈值的第二节点的数量,作为第二目标数量;
共识业务恢复模块,用于若上述第二目标数量大于上述数量阈值,则上述第一节点将上述同步检测状态切换为上述同步完成状态,在上述同步完成状态下恢复上述第一节点的共识业务流程。
其中,上述区块高度交互模块,包括:
节点信息交互单元,用于上述第一节点在第一心跳周期中向至少两个第二节点发送第一网络状态和第一区块高度,接收处于上述第一心跳周期中的上述至少两个第二节点所发送的第二网络状态和第二区块高度;
第一共识业务停止单元,用于若上述第一网络状态为异常状态,则停止进入共识业务流程;
网络正常节点数确定单元,用于若上述第一网络状态为正常状态,则确定上述至少两个第二节点中上述第二网络状态为上述正常状态的第二节点的数量,作为网络正常节点数;
第二共识业务停止单元,用于若上述网络正常节点数等于或小于上述数量阈值,则停止进入共识业务流程;
则上述区块同步模块,还用于若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,且上述网络正常节点数大于上述数量阈值,则进行区块同步处理。
本申请实施例一方面提供了一种计算机设备,包括:处理器和存储器;
上述存储器存储有计算机程序,上述计算机程序被上述处理器执行时,使得所诉处理器执行如本申请实施例中的方法。
本申请实施例一方面提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令,上述程序指令当被处理器执行时,执行如本申请实施例中的方法。
本申请实施例在进入共识业务流程前,第一节点与第二节点会在第一心跳周期中互相通知当前的区块高度(第一节点发送第一区块高度,第二节点发送第二区块高度),第一节点可以根据第二区块高度来对自己能否进入共识进行检测。若处于同步检测状态下的第一节点检测到第一区块高度与最大的第二区块高度之间的差异满足共识条件,则第一节点可以根据最大的第二区块高度来进行区块同步。当到了第二心跳周期,处于同步检测状态下的第一节点又会向第二节点发送区块同步后的第一区块高度,并继续接收第二节点发送过来的第三区块高度。在第二心跳周期中,第一节点可以确定出区块同步后的第一区块高度与上述最大的第二区块高度之间的差异,来确定自己区块同步后的区块高度是否满足了共识条件。若该区块同步后的第一区块高度与上述最大的第二区块高度之间的差异满足了共识条件(可以理解为第一节点进行区块同步后,第一区块高度增加了,与该最大的第二区块高度更为接近了),则第一节点可以根据第三区块高度来确定满足该共识条件的第二节点的数量,作为第一目标数量,当该第一目标数量大于数量阈值时,第一节点可以将状态从同步检测状态切换为同步完成状态,在该同步完成状态下进入共识业务流程。可以看出,当第一节点自己已满足共识条件时,第一节点仍不能单独进入共识业务流程,只有在确定有超出数量阈值的第二节点都满足共识条件时,第一节点才会切换为同步完成状态,并进入共识业务流程。因为在进入该共识业务流程中的第一节点与第二节点中,每个节点均为同步完成状态,也就是说,每个节点均满足进行共识的条件,由此,可以大幅减少因节点状态落后(如网络掉线、信息不同步等)而导致节点共识失败的情况,即可以提高共识的成功率。
附图说明
为了更清楚地说明本申请实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种系统架构示意图;
图2是本申请实施例提供的一种共识节点进行状态切换的示意图;
图3是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图;
图4是本申请实施例提供的一种区块同步的场景示意图;
图5是本申请实施例提供的一种第一节点进入共识业务流程的场景示意图;
图6是本申请实施例提供的一种根据共识消息确定共识业务流程的流程示意图;
图7是本申请实施例提供的一种根据共识消息进行消息同步的场景示意图;
图8是本申请实施例提供的一种恢复第一节点的共识业务流程的场景示意图;
图9是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图;
图10是本申请实施例提供的一种计算机设备的示意图。
具体实施方式
下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
请参见图1,是本申请实施例提供的一种系统架构示意图。区块链是一种分布式数据存储、点对点传输、共识机制以及加密算法等计算机技术的新型应用模式,主要用于对数据按时间顺序进行整理,并加密成账本,使其不可被篡改和伪造,同时可进行数据的验证、存储和更新。区块链本质上是一个去中心化的数据库,该数据库中的每个节点均存储一条相同的区块链,区块链网络将节点区分为核心节点、数据节点以及轻节点,其中核心节点负责区块链全网的共识,也就是说核心节点为区块链网络中的共识节点。对于区块链网络中的共识节点进入共识业务流程的过程可以为,客户端发送交易数据至数据节点或轻节点,随后该交易数据以接力棒的方式在区块链网络中的数据节点或轻节点之间传递,直到共识节点收到该交易数据,共识节点再将该交易数据打包进区块,与其他共识节点之间进行共识。如图1所示,该系统架构可以包括第一节点集群1000以及第二节点集群100,该第一节点集群1000可以包括至少两个第一节点,第二节点集群100可以包括至少两个第二节点。如图1所示,该第一节点集群1000可以包括第一节点1000a、第一节点1000b、…、第一节点1000c,该第二节点集群100具体可以包括第二节点100a、第二节点100b、…、第二节点100c。其中,该第一节点1000a、第一节点1000b、…、第一节点1000c以及该第二节点100a、第二节点100b、…、第二节点100c,均为核心节点(即共识节点)。
如图1所示,第二节点100a、第二节点100b、…、第二节点100c可以分别与第一节点1000a、第一节点1000b、…、第一节点1000c进行网络连接,以便于第二节点可以通过该网络连接与第一节点进行数据交互;第二节点100a、第二节点100b、…、第二节点100c互相连接,以便于第二节点之间可以进行数据交互,第一节点1000a、第一节点1000b、…、第一节点1000c互相连接,以便于第一节点之间可以进行数据交互。以第一节点100a为例,第一节点100a在接收到由数据节点或轻节点发送的交易数据后,可以将该交易数据存储至内存池(如交易池)中,并更新其用于记录输入数据的哈希树;之后,将更新时间戳更新为接收到该交易数据的时间,并尝试不同的随机数进行特征值计算,当得到特征值时,便可将该交易数据对应存储,生成区块头和区块主体,得到新生成的区块;随后,第一节点1000可以根据区块链网络中其他核心节点(即共识节点)的节点标识,将上述新生成的区块分别发送给其所在的区块链网络中的其他核心节点,由其他核心节点对新生成的区块进行校验(即进行共识),并在完成校验后将上述新生成的区块添加至其存储的区块链中。其中,区块链网络中的每个核心节点,均具有与其对应的节点标识,而且区块链网络中的每个核心节点均可以存储有区块链网络中其他核心节点的节点标识,以便后续根据其他核心节点的节点标识,将生成的区块广播至区块链网络中的其他核心节点,使得区块链网络中全部核心节点上存储的交易数据均一致。
对于区块链网络中的核心节点(包括第一节点与第二节点)执行共识的过程,本申请新增了节点的状态一致性的检测,核心节点需要根据当前的状态来确定是否允许进入共识业务流程。本申请的方法具体为,以第一节点1000a、第二节点100a以及第二节点100b为例,第一节点1000a在第一心跳周期中向第二节点100a以及第二节点100b发送第一区块高度,并接收处于该第一心跳周期中的第二节点100a以及第二节点100b所发送的第二区块高度(在第一心跳周期中,第一节点1000a、第二节点100a以及第二节点100b会互相通知自己当前的区块高度);第一节点1000a可以根据第二节点100a以及第二节点100b的第二区块高度,来进行区块高度的检测,确定自己的当前的区块高度是否满足共识条件,此时第一节点1000a根据第二节点100a以及第二节点100b的第二区块高度来进行检测的状态为同步检测状态。第一节点1000a若在同步检测状态下,检测到自己的第一区块高度与第二节点100a以及第二节点100b中的最大的第二区块高度之间的差异不满足共识条件,则第一节点1000a会根据该最大的第二区块高度来进行区块同步处理;当到了第二心跳周期时,第一节点1000a会在第二心跳周期中向第二节点100a以及第二节点100b发送区块同步后的第一区块高度,并接收处于该第二心跳周期中的第二节点100a以及第二节点100b的第三区块高度;若该第一节点1000a在该同步检测状态下检测到该区块同步后的第一区块高度与该最大的第二区块高度之间的差异满足共识条件,则第一节点1000a可以根据该第三区块高度确定出满足该共识条件的第二节点的数量,作为第一目标数量;若该第一目标数量大于了数量阈值,则该第一节点1000a可以将该同步检测状态切换为同步完成状态,并在该同步完成状态下进入共识业务流程。如,第二节点除第二节点100a与第二节点100b外,还包括第二节点100c,该第二节点100a的第三区块高度与该最大的第二区块高度之间的差异满足共识条件;第二节点100b的第三区块高度与该最大的第二区块高度之间的差异也满足共识条件;第二节点100c的第三区块高度与该最大的第二区块高度之间的差异不满足共识条件。则第一节点100a可以确定出,满足该共识条件的第二节点数量为2(1个第二节点100a+1个第二节点100b),可以看出,在第二节点100a、第二节点100b以及第二节点100c中,有2个第二节点已满足共识条件,即第一目标数量为2,该第一目标数量2大于数量阈值1。在第二节点100a、第二节点100b以及第二节点100c中,若满足共识条件的第二节点数量(2)与第二节点总数量的比值超过2/3,则该第一节点1000a会将同步检测状态切换为同步完成状态,并进入共识业务流程,同时,状态为同步检测状态下的第二节点100a以及第二节点100c也会将状态切换为同步完成状态,并进入共识业务流程,第二节点100c因不满足共识条件,则会将状态保持为同步检测状态,不会进入共识业务流程。
可选的,可以理解的是,除上述描述的根据满足共识条件的第二节点数量,来确定第一节点是否进入共识业务流程外,还可以根据第一节点的数量以及满足共识条件的第二节点的数量来进行确定。如,第一节点包括第一节点1000a,第二节点包括第二节点100a以及第二节点100b。在第二心跳周期中,第一节点1000a根据第二节点100a、第二节点100b发送的第三区块高度,确定出第二节点100a不满足共识条件,第二节点100b满足共识条件,则在第二节点(包括第二节点100a以及第二节点100b)中,满足共识条件的第二节点有1个,由于第一节点1000a也满足共识条件,所以在第一节点1000a、第二节点100a以及第二节点100b这3个共识节点中,有2个共识节点(第一节点1000a以及第二节点100b)满足了共识条件,因为满足共识条件的共识节点数量2与区块链中共识节点的总数量为2/3,该比值达到了比值阈值,则第一节点1000a以及第二节点100b可以将状态切换为同步完成状态,并进入共识业务流程。也就是说,本申请中,共识节点进入共识业务流程,可以根据区块链中所有共识节点(如第一节点以及第二节点)的总数量,以及满足共识条件的共识节点的节点数量(如满足共识条件的第二节点数量+满足共识条件的第一节点数量)来进行确定。
可以理解的是,本发明实施例提供的方法可以由计算机设备执行,计算机设备包括但不限于终端或服务器。本发明实施例中的节点可以为计算机设备。
为便于理解,请一并参见图2,是本申请实施例提供的一种共识节点进行状态切换的示意图。如图2所示,共识节点的状态可以包括初始化状态、信息配置状态、心跳触发状态、同步检测状态以及同步完成状态共5个状态。其中,初始化状态是指共识节点刚起来时候的一个初始状态;信息配置状态是共识节点起来后,进行信息配置的状态,在共识节点处于该信息配置时,可以从智能合约中获取到共识信息来进行配置;初始化状态以及信息配置状态都是共识节点自我完成,共识节点在这两个状态都不会进行广播通知其他共识节点自己的状态,但会进行自我监测,如,共识节点在进行配置时,会进行自我监测,在监测到已完成信息配置时,则会进入下一个状态,即进入心跳触发状态。该心跳触发状态可以用于触发心跳机制,该心跳机制可以用于产生心跳周期,共识节点在每次心跳周期中都可以互相通知自己当前的节点信息。当心跳机制触发成功,共识节点在进入心跳机制中的第一个心跳周期时,共识节点会从心跳触发状态切换为同步检测状态。在共识节点处于同步检测状态时,共识节点会通过心跳机制或广播等方式,向其他共识节点发送自己的节点信息(信息如区块高度、共识节点列表、共识消息等),同时会接收其他共识节点发送过来的节点信息,再根据其他共识节点的节点信息对自己进行检测是否需要节点信息的同步。如在心跳机制的一个心跳周期(如第一心跳周期)中,共识节点与其他共识节点互相通知了自己当前的节点信息,该共识节点在通过检测后,共识节点确定自己的节点信息处于落后状态,且与其他共识节点的节点信息差异大,则该共识节点可以确定自己需要进行同步,则共识节点会保持状态为同步检测状态不变,并从其他共识节点中主动拉取待同步信息(该待同步信息为该共识节点与其他共识节点中的目标共识节点的节点信息之间的差异信息,这里的目标共识节点是指与该共识节点具有最大节点信息差异的其他共识节点),随后可以根据该待同步信息来进行信息同步;当心跳机制的时间到达下一个心跳周期(如第二心跳周期)时,共识节点会在同步检测状态下又向其他共识节点发送信息同步后的节点信息,并接收其他共识节点重新发送过来的节点信息,该共识节点会在该第二心跳周期中继续根据信息同步后的节点信息以及重新获取到的节点信息来进行检测,若该信息同步后的节点信息,与该重新获取到的节点信息之间的差异足够小,即在差异阈值内,则该共识节点可以确定自己已满足共识条件,随后可以根据该第二心跳周期中其他共识节点的节点信息,确定出满足共识条件的其他共识节点的数量,若满足共识条件的其它共识节点的数量超出了数量阈值,则该共识节点会将状态从同步检测状态切换为同步完成状态。若在上述第一心跳周期中,共识节点通过检测后确定自己的节点信息领先于其他共识节点的节点信息,或确定自己的节点信息与其他共识节点的节点信息之间的差异小,则该共识节点不需要进行同步,则该共识节点会保持同步检测状态,并主动向其他共识节点发送待同步信息,以使需要进行同步的其他共识节点可以根据该待同步信息进行同步。在第二心跳周期中,该共识节点会根据其他共识节点发送过来的节点信息,来确定已满足共识条件的其他共识节点的数量,根据该数量来确定自己是否需要进行状态切换;若该数量大于上述数量阈值,则该共识节点会将状态切换为同步完成状态,若该数量小于数量阈值,则该共识节点会保持同步检测状态。
需要说明的是,在有超过数量阈值的共识节点均满足共识条件时,则每个满足共识条件的共识节点均会将状态切换为同步完成状态,并会进入共识业务流程中。在共识业务流程中,每个共识节点会继续通过新的心跳周期互相通知当前的节点信息,再一次进行检测。若检测到自己的节点信息落后了,且落后较多,则会将同步完成状态切换为同步检测状态,在为该同步检测状态下时,会暂停共识,主动去拉取其他共识节点的节点信息来进行同步;若检测到自己的节点信息处于领先状态或者落后得不多,则会继续保持同步完成状态,并继续进行共识。也就是说,每个共识节点只有自己的状态为同步完成状态时,才会进行共识。
请参见图3,是本申请实施例提供的一种基于区块链的数据处理方法的流程示意图。如图3所示,该方法可以包括:
步骤S101,第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于上述第一心跳周期中的上述至少两个第二节点所发送的第二区块高度。
本申请实施例中,该第一节点可以为区块链网络中的核心节点(共识节点),该第一心跳周期可以为心跳机制中的一个心跳周期,该心跳周期可以用于区块链中的共识节点互相通知自己当前的节点信息。其中,该节点信息可以包括节点的区块高度、共识消息以及共识节点列表等。这里的区块高度可以是指节点的最新区块的区块编号,区块编号可以是指根据区块生成的具体时间,按递增顺序进行排序的编号,如第一节点包括区块a、区块b以及区块c,其中,区块a的生成时间早于区块b,区块b的生成时间早于区块c,则可以将区块a的编号设置为1、将区块b的编号设置为2以及将区块c的编号设置为3,则第一节点的区块高度即为区块c的编号3。
步骤S102,若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理。
本申请实施例中,该第二节点可以为区块链网络中的核心节点(共识节点),该同步检测状态是共识节点的状态中的其中一个状态,共识节点的状态可以用于限制共识节点进入共识业务。共识节点的状态可以包括:初始化状态、信息配置状态、同步检测状态同步完成状态。其中,初始化状态以及信息配置状态是指第一节点刚起来时,会自己进行节点初始化和进行信息配置,信息配置状态晚于初始化状态,在第一节点初始化状态下完成节点初始化时,第一节点会将初始化状态切换为信息配置状态,在该信息配置状态下进行信息配置。其中,该配置过程具体为第一节点从智能合约中获取到共识配置信息,根据该共识配置信息而进行信息配置;同步检测状态可以负责对节点信息的检测,用于检测节点当前的节点信息是否需要进行同步,以及在需要进行同步时,需要同步的内容(待同步信息),若需要进行同步,则节点会根据待同步信息来进行同步;同步完成状态是共识节点进入共识业务的一个状态,只有共识节点处于同步完成状态时,才可以进入共识业务。上述的第一心跳周期中的第一节点为同步检测状态。当第一节点从智能合约中获取到共识配置信息,根据该共识配置信息进行配置后,该第一节点的状态会从信息配置状态切换为心跳触发状态,并在该心跳触发状态下触发心跳机制,当心跳机制的时间到达第一心跳周期时,第一节点会进入第一心跳周期,在第一心跳周期中向第二节点发送第一节点的第一区块高度,并在该第一心跳周期中,接收第二节点发送过来的第二区块高度。根据该第一节点的第一区块高度,以及该第二节点的第二区块高度,第一节点可以对自己的第一区块高度进行检测,确定自己是否需要进行区块同步。检测的方法具体可以为,第一节点在第二节点的第二区块高度中,确定出最大的第二区块高度,再确定出第一区块高度与该最大的第二区块高度之间的第一高度差异参数;若该第一高度差异参数小于该最大的第二区块高度,且该第一高度差异参数大于参数阈值,则第一节点可以确定该第一区块高度与该最大的第二区块高度之间的差异不满足共识条件(也就是说,该第一节点当前的第一区块高度与该最大的第二区块高度相差太大,该第一节点不满足共识条件),则第一节点可以根据该第一高度差异参数从目标第二节点拉取待同步区块,并根据该待同步区块进行区块同步。其中,该参数阈值可以为人为规定数值。该第一高度参数可以用于表示第一节点与目标第二节点之间的待同步区块的高度;目标第二节点可以是指在第二节点中,具有该最大的第二区块高度的第二节点;该待同步区块可以是指第一高度差异参数对应的差异区块,可以理解为,该待同步区块为第一节点没有且目标第二节点有的区块。如,第二节点包括节点a、节点b、以及节点c,其中,节点a的第二区块高度为100(包括区块1--区块100),节点b的第二区块高度为93(包括区块1--区块93),节点c的第二区块高度为95(包括区块1--区块95),因为100大于95,95大于93,则节点a的区块高度100是最大的第二区块高度,节点a为目标第二节点;因为第一节点的区块高度为96(包括区块1--区块96),则第一高度差异参数为4(区块高度100-区块高度96=4),则该第一节点与节点a之间的待同步区块可以为96--100之间的差异区块,即,待同步区块为区块97、区块98、区块99以及区块100。
步骤S103,上述第一节点在第二心跳周期中向上述第二节点发送区块同步后的第一区块高度,接收处于上述第二心跳周期中的上述至少两个第二节点发送的第三区块高度。
本申请中,该第二心跳周期也为心跳机制中的一个心跳周期,且该第二心跳周期晚于上述第一心跳周期,是上述第一心跳周期的下一个心跳周期,当心跳时间间隔一到,会从第一心跳周期进入到第二心跳周期,如第一心跳周期为0-2秒,第二心跳周期为2-4秒,即每间隔2秒触发一次心跳。在该第二心跳周期中,第一节点与第二节点又会互相通知自己当前的节点信息(如区块高度)。即,在第二心跳周期中,第一节点会向第二节点发送进行区块同步后的第一区块高度,并接收第二节点发送的第三区块高度。其中,该第二节点的第三区块高度为第二节点在上述第一心跳周期中进行区块同步后的区块高度,该第二节点在第一心跳周期中会接收第一节点以及其他第二节点的区块高度,并根据其他第二节点的区块高度,来进行区块同步处理。其中,对于第二节点进行区块同步的具体实现方式,可以参见上述步骤S102中对第一节点进行区块同步的描述,这里将不再进行赘述。
需要说明的是,若该第一节点在同步检测状态下,在上述第一心跳周期中检测到自己的第一区块高度与最大的第二区块高度之间的差异满足共识条件(第一高度差异参数小于或等于参数阈值),或第一节点检测到第一区块高度大于最大的第二区块高度,则第一节点可以确定自己不需要同步,则第一节点会将自己视为已进行了区块同步,并主动向第二节点推送待同步区块,以使第二节点可以根据该待同步区块进行区块同步。第一节点会在第一心跳周期中等待第二节点进行同步,且第一节点会等待第二心跳周期的到来,第二心跳周期一到,第一节点会在第二心跳周期中再次向第二节点发送自己的第一区块高度(也就是上述第一心跳周期中的第一区块高度)。
需要说明的是,第一节点每生成一个区块,则区块高度会相应增加,而在区块链网络中,不同的区块高度区间对应不同的共识节点列表。则在第一节点的区块高度发生变化时,如进行区块同步后,区块高度会发生变化,第一节点可以根据同步后的区块高度,对第一节点的共识节点列表进行检测。若该同步后的区块高度对应的区块区间与同步前的区块高度对应的区块区间不一致,则需要对第一节点的共识节点列表进行更新,更新为同步后的区块高度所对应的共识节点列表,则通过区块同步,可以使第一节点与第二节点的共识节点列表保持一致。可以理解为,如,区块区间1-10对应的共识节点列表为共识节点列表1、区块区间11-20对应的共识节点列表为共识节点列表2,以及区块区间21-30对应的共识节点列表为共识节点列表3,第一节点的区块高度为5,进行区块同步后,同步后的区块高度为15;则可以看出,同步前的区块高度5在区块区间1-10内,同步后的区块高度15在区块区间11-20内,则该第一节点同步前的区块高度5与同步后的区块高度15对应的区块区间不一致,则可以确定该第一节点的共识节点列表需要更新,可以将第一节点的共识节点列表更新为区块高度15对应的共识节点列表2。
步骤S104,若上述第一节点在上述同步检测状态下检测到上述区块同步后的第一区块高度和上述最大的第二区块高度之间的差异满足共识条件,则根据上述第三区块高度确定满足上述共识条件的第二节点的数量,作为第一目标数量。
本申请中,在第二心跳周期中,处于同步检测状态的第一节点可以确定出区块同步后的第一区块高度以及上述最大的第二区块高度之间的第二高度差异参数;若该第二高度差异参数小于或等于参数阈值,则第一节点可以确定区块同步后的第一区块高度与该最大的第二区块高度之间的差异满足了共识条件,则可以触发获取上述第三区块高度与该最大的第二区块高度之间的第三高度差异参数,统计出第三高度差异参数中小于或等于该参数阈值的第二节点的数量,作为第一目标数量。可以理解为,当该第二高度差异参数小于或等于参数阈值时,可以说明该第一节点进行区块同步后的第一区块高度与上述最大的第二区块高度十分接近,该第一节点已满足共识条件。则第一节点可以在第三区块高度中确定出满足共识条件的第二节点的数量,作为第一目标数量。步骤S105,若上述第一目标数量大于数量阈值,则上述第一节点将上述同步检测状态切换为同步完成状态,在上述同步完成状态下进入共识业务流程。
本申请实施例中,这里的数量阈值可以为人为规定数值,该数量阈值可以根据第二节点的节点总数量以及给定比例值来确定。这里的给定比例值可以是指在区块链网络中,满足共识条件的第二节点在全部第二节点中的目标比值,该目标比值可以为人为规定的数值。该给定比例值可以为百分数、小数以及分数等数值呈现方式,也就是说,该数量阈值是小于或等于第二节点的节点总数量的数值,如,以该给定比例值为60%为例,当第二节点为60个时,该数量阈值可以为60×60%=36。当上述第一目标数量大于该数量阈值时,第一节点才可以将同步检测状态切换为同步完成状态,并在同步完成状态下进入共识业务流程,然后开始执行共识。如,以第一节点为第一节点a,第二节点包括第二节点a、第二节点并b以及第二节点c为例,其中,第一节点a进行区块同步后,已满足共识条件。第二节点a在第二心跳周期发送至第一节点a的第三区块高度为80,第二节点b在第二心跳周期发送至第一节点a的第三区块高度为100,,第二节点c在第二心跳周期中发送至第一节点a的第三区块高度为98;则在第二节点中(包括第二节点a、第二节点b以及第二节点c)。其中,第二节点b的第三区块高度100为在第一心跳周期中最大的第二区块高度,也就是说,该第二节点b在第一心跳周期中区块高度最为领先,该第二节点b在第一心跳周期中将自己视为已进行了区块同步,保持区块高度为100并一直在等待第一节点a、第二节点a以及第二节点c进行区块同步。因为参数阈值为3,则可以看出,第二节点a的第三区块高度80与最大的第二区块高度100之间的第三高度差异参数为20,大于了参数阈值3,则第二节点a为不满足共识条件的第二节点;第二节点c的第三区块高度98与最大的第二区块高度100之间的第三高度差异参数为2,小于参数阈值3,则第二节点c为满足共识条件的第二节点;第二节点b的第三区块高度100与最大的第二区块高度100之间的第三高度差异参数为0,小于参数阈值3,则第二节点b为满足共识条件的第二节点。则在第二节点a、第二节点b以及第二节点c中,满足共识条件的第二节点的数量为2(1个第二节点b+第二节点c),则第一目标数量为2。给定比例值为60%,则数量阈值为3×60%=1.8,则第一目标数量2大于数量阈值1.8,则第一节点a可以将同步检测状态切换为同步完成状态,并进入共识业务流程。
可选的,可以理解的是,在上述第一心跳周期中,第一节点向第二节点发送第一区块高度的同时,同时向第二节点发送第一网络状态,并在第一心跳周期中接收该第二节点发送的该第二节点的第二区块高度以及第二网络状态;若该第一节点的第一网络状态为异常状态,则第一节点停止进入共识业务流程;若该第一节点的第一网络状态为正常状态,则第一节点可以确定该第二节点中该第二网络状态为正常状态的第二节点的数量,作为网络正常节点数;若该网络正常节点数等于或小于上述数量阈值,则第一节点会停止进入共识业务流程;则第一节点在执行若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理的步骤前,需要同时满足第一节点在同步检测状态下检测到第一区块高度和最大的第二区块高度之间的差异不满足共识条件,且该网络正常节点数大于上述数量阈值的条件。可以理解为,在第一节点进行区块同步前,多加了网络状态这一限制条件,只有第一节点的网络状态为正常状态,且有超过数量阈值的第二节点的网络状态也为正常状态时,第一节点才能根据区块高度来进行区块同步,并执行后续步骤;当该第一节点的网络状态为异常状态时,或当该第一节点的网络状态为正常状态,且第二节点中网络状态为正常状态的节点的节点数小于数量阈值时,该第一节点都会停止进入共识业务流程。可以看出,在共识节点进行共识前,增加了对共识节点的网络状态以及节点状态的考虑,在满足自身网络状态正常,且网络状态为正常的其他共识节点有超过数量阈值的情况下,共识节点会进行根据区块高度进行区块同步。在下一个心跳周期中,根据其他节点的同步后的区块高度,来确定是否进入共识业务流程。这样可以使得共识节点在进行共识时,网络状态良好且状态(为同步完成状态)良好,可以提高共识成功率。
本申请实施例在进入共识业务流程前,第一节点与第二节点会在第一心跳周期中互相通知当前的区块高度(第一节点发送第一区块高度,第二节点发送第二区块高度),第一节点可以根据第二区块高度来对自己能否进入共识进行检测。若处于同步检测状态下的第一节点检测到第一区块高度与最大的第二区块高度之间的差异满足共识条件,则第一节点可以根据最大的第二区块高度来进行区块同步。当到了第二心跳周期,处于同步检测状态下的第一节点又会向第二节点发送区块同步后的第一区块高度,并继续接收第二节点发送过来的第三区块高度。在第二心跳周期中,第一节点可以确定出区块同步后的第一区块高度与上述最大的第二区块高度之间的差异,来确定自己区块同步后的区块高度是否满足了共识条件。若该区块同步后的第一区块高度与上述最大的第二区块高度之间的差异满足了共识条件(可以理解为第一节点进行区块同步后,第一区块高度增加了,与该最大的第二区块高度更为接近了),则第一节点可以根据第三区块高度来确定满足该共识条件的第二节点的数量,作为第一目标数量,当该第一目标数量大于数量阈值时,第一节点可以将状态从同步检测状态切换为同步完成状态,在该同步完成状态下进入共识业务流程。可以看出,当第一节点自己已满足共识条件时,第一节点仍不能单独进入共识业务流程,只有在确定有超出数量阈值的第二节点都满足共识条件时,第一节点才会切换为同步完成状态,并进入共识业务流程。因为在进入该共识业务流程中的第一节点与第二节点中,每个节点均为同步完成状态,也就是说,每个节点均满足进行共识的条件,由此,可以大幅减少因节点状态落后(如网络掉线、信息不同步等)而导致节点共识失败的情况,即可以提高共识的成功率。
进一步地,为便于理解,请一并参见图4,是本申请实施例提供的一种区块同步的场景示意图。如图4所示,节点2000a可以为第一节点,节点2000b、节点2000c、以及节点2000d可以为第二节点,节点2000a的区块包括区块1、区块2以及区块3,则节点2000a的第一区块高度为3;节点2000b的区块包括区块1、区块2、区块3以及区块4,则节点2000b的第二区块高度为4;节点2000c的区块包括区块1、区块2、区块3、区块4以及区块5,则节点2000c的第二区块高度为5;节点2000d的区块包括区块1、区块2、区块3、区块4、区块5以及区块6,则节点2000d的第二区块高度为6。在第一心跳周期中,节点2000a、节点2000b节点2000c以及节点2000d的状态均为同步检测状态。节点2000b、节点2000c以及节点2000d可以向节点2000a发送各自的区块高度,节点2000a在接收到节点2000b、节点2000c以及节点2000d的第二区块高度后,可以确定节点2000a的第一区块高度3小于节点2000b的第二区块高度4,小于了节点2000c的第二区块高度5,也小于了节点2000d的第二区块高度6。则节点2000a可以在第二区块高度4、第二区块高度5以及第二区块高度6中确定出最大的第二区块高度为6,节点2000d为目标第二节点。因为节点2000a的第一区块高度3与最大的第二区块高度6之间的高度差异参数为3,大于了参数阈值2,则节点2000a的检测结果为需要进行区块同步,则节点2000a可以在同步检测状态下,根据节点2000d的第二区块高度6来进行区块同步。如图4所示,节点2000d的区块为区块1、区块2、区块3、区块4、区块5以及区块6,则根据该节点2000d的区块(区块1、区块2、区块3、区块4、区块5以及区块6),以及节点2000a的区块(区块1、区块2以及区块3),节点2000a可以确定出待同步区块为区块4、区块5以及区块6;则节点2000a可以从节点2000d中拉取区块4、区块5以及区块6,并进行区块同步。如图4所示,在第二心跳周期到来时,节点2000a已完成了全部待同步区块(包括区块4、区块5以及区块6)的同步,节点2000a在进行同步后的区块包括了区块1、区块2、区块3、区块4、区块5以及区块6,同步后的第一区块高度为6。同理,节点2000b在第一心跳周期中也可以接收到来自节点2000a、节点2000c以及节点2000d的区块高度,确定出最大的区块高度为节点2000d的区块高度6,根据该节点2000d的区块高度6以及自己的区块高度4,可以确定出节点2000b以及节点2000d之间的高度差异参数为2,该高度差异参数等于参数阈值2,则节点2000b无需进行区块同步,则节点2000b会等待下一个心跳周期(如第二心跳周期)的到来。同理,可以看出,因为节点2000c的区块高度为5,与节点2000d的区块高度6之间的高度差异参数为1,小于参数阈值2,则节点2000c也无需进行区块同步,节点2000d的区块高度6是最大的,节点2000d也无需进行同步。
为便于理解,请一并参见图5,是本申请实施例提供的一种第一节点进入共识业务流程的场景示意图。如图5所示,以上述图4所对应实施例中的节点2000a、节点2000b、节点2000c以及节点2000d为例,该节点2000a可以为第一节点,该节点2000b、节点2000c以及节点2000d可以为第二节点。该节点2000a在第一心跳周期中进行了区块同步,在第一心跳周期到第二心跳周期的时间里,节点2000a完成了对待同步区块即区块4、区块5以及区块6的同步,节点2000a在第二心跳周期中的区块高度为6;节点2000b、2000c以及节点2000d在第一心跳周期中未进行区块同步,节点2000b的区块高度为4,节点2000c的区块高度为5,节点2000d的区块高度为6。则该节点2000a可以确定节点2000b、节点2000c以及节点2000d均满足共识条件(因为在第二心跳周期中,节点2000b的区块高度4与最大的区块高度6之间的高度差异参数2小于参数阈值2、节点2000c的区块高度5与最大的区块高度6之间的高度差异参数1小于参数阈值2、节点2000d的区块高度6与最大的区块高度6之间的高度差异参数0小于参数阈值2),则在第二心跳周期中,节点2000a可以确定出在节点2000b、节点2000c以及节点2000d中,满足共识条件的数量为3,即第一目标数量为3。因为该第一目标数量3大于数量阈值2,则节点2000a可以将状态从同步检测状态切换为同步完成状态,并可以进入共识业务流程。
进一步地,请参见图6,是本申请实施例提供的一种根据共识消息对确定共识业务流程的流程示意图。
步骤S201,在共识业务流程中,处于上述同步完成状态的上述第一节点在第三心跳周期中向上述至少两个第二节点发送第一共识消息。
本申请实施例中,该第三心跳周期可以为心跳机制中的一个心跳周期,该第三心跳周期可以为上述第二心跳周期的下一个心跳周期。该共识消息可以包括预投票消息、出块提案消息等,因为第一节点在第二心跳周期到第三心跳周期的时间段中,正处于共识业务流程中(第一节点为同步完成状态),所以当到达第三心跳周期时,第一节点的状态仍为同步完成状态。
步骤S202,接收处于上述第三心跳周期中的上述至少两个第二节点所发送的第二共识消息。
步骤S203,上述第一节点根据上述第一共识消息以及上述第二共识消息,进行状态切换检测。
本申请实施例中,第一节点可以获取到该第一共识消息对应的第一生成时间戳,以及第二共识消息对应的第二生成时间戳;其中,该生成时间戳可以用于表征共识消息生成的最新时间。第一节点可以在第二生成时间戳中确定出最大的第二生成时间戳,若该第一生成时间戳大于或等于该最大的第二生成时间戳,则可以表明该第一节点的共识消息领先于第二节点,也可以理解为,该第一节点共识的区块比第二节点共识的区块多,则第一节点无需进行消息同步,则可以将该第三心跳周期中的状态保持为同步完成状态;若该第一生成时间戳小于该第二生成时间戳,则可以表明该第一节点的共识消息落后于第二节点,也可以理解为,该第一节点共识的区块比第二节点共识的区块少,则第一节点可以确定第一生成时间戳与该最大的第二生成时间戳之间的第一时间差异参数,若该第一时间差异参数大于时长阈值,则可以确定第一节点的共识消息落后太多,该第一节点需要进行消息同步,则第一节点可以将状态从同步完成状态切换为同步检测状态;若该第一时间差异参数小于或等于该时长阈值,则可以确定该第一节点的共识消息虽处于落后状态,但并未落后太多,则第一节点可以保持状态为同步完成状态。
步骤S204,若状态切换检测出上述第一节点从上述同步完成状态切换为上述同步检测状态,则暂停上述第一节点的共识业务流程。
本申请实施例中,若该第三心跳周期中的第一节点将状态切换为同步检测状态,则可以说明该第一节点的状态不足以支撑共识业务,若强行使第一节点参与共识业务,很可能使第一节点共识失败。则当该第三心跳周期中的第一节点的状态从同步完成状态切换为同步检测状态时,可以暂停该第一节点的共识业务流程。
当该第三心跳周期中的第一节点的状态为同步检测状态且暂停共识业务流程时,第一节点可以根据该第一节点的共识消息的第一生成时间戳以及该第二节点的最大的第二生成时间戳,确定出待同步消息的生成时间范围;第一节点根据该待同步消息的生成时间范围,可以从该最大的第二生成时间戳对应的第二节点拉取待同步消息,并根据该待同步消息进行消息同步。其中,该待同步消息可以是指第一节点与最大的第二生成时间戳对应的第二节点之间的差异消息。当心跳机制到达第四心跳周期时,第一节点可以在第四心跳周期中向第二节点发送消息同步后的第一共识消息,并接收处于该第四心跳周期中的第二节点的第三共识消息。其中,该第四心跳周期为上述第三心跳周期中的下一个心跳周期。该第一节点可以在同步检测状态下获取到消息同步后的第一共识消息对应的第三生成时间戳,并获取该第三生成时间戳与上述最大的第二生成时间戳之间的第二时间差异参数;若上述第二时间差异参数小于或等于上述时长阈值,则获取上述第三共识消息对应的生成时间戳与上述最大的第二生成时间戳之间的第三时间差异参数;第一节点可以统计该第三时间差异参数小于或等于该时长阈值的第二节点的数量,作为第二目标数量;若该第二目标数量大于上述数量阈值,则该第一节点可以将同步检测状态切换为同步完成状态,在该同步完成状态下恢复该第一节点的共识业务流程。
为便于理解,请一并参见图2。第一节点与第二节点在第一心跳周期中已互相通知自己的区块高度,并根据区块高度进行区块同步。当第二心跳周期到达后,第一节点与第二节点会互相通知自己区块同步后的区块高度,其中,第一节点已满足了共识条件,若在第二心跳周期中,超出数量阈值的第二节点满足了共识条件,则该满足共识条件的第一节点与第二节点会进入共识业务流程;在该共识业务流程中,第一节点与第二节点进行了区块共识(其中,第一节点共识了区块20、区块21,第二节点均共识了区块20、区块21、区块22、区块23以及区块24)。当心跳机制的心跳时间一到,会触发第二心跳周期的下一个心跳周期(如第三心跳周期),第一节点与第二节点在第三心跳周期中互相通知自己当前的共识消息。根据第二节点当前的共识消息,第一节点可以确定出自己是否需要进行消息同步,若需要进行消息同步(如,第一节点完成了区块20以及区块21的共识,但第二节点已完成了从区块20至区块24的共识,落后太多),则第一节点会从同步完成状态切换为同步检测状态。处于该同步检测状态时,该第一节点会暂停共识业务流程,并根据第二节点的共识消息(区块20至区块24)来进行消息同步。而在第一节点暂停共识业务流程时,第二节点也会等待第一节点进行消息同步,不会继续进行对当前完成区块(如区块24)的下一个区块(如区块25的)及之后区块的共识。当心跳机制的心跳时间到达,会触发第三心跳周期的下一个心跳周期(如第四心跳周期),第一节点与第二节点会在第四心跳周期中互相通知自己当前的共识消息,第一节点可以在第四心跳周期中确定自己进行消息同步后,是否满足了共识条件,若满足了且有超出数量阈值的第二节点也满足了共识条件,第一节点会将同步检测状态切换为同步完成状态,并恢复共识业务流程,同时,第二节点也会恢复共识业务流程,继续进行对区块的共识。若该第一节点在第四心跳周期中,确定自己在进行消息同步后,仍不满足共识条件,则第一节点会继续暂停共识业务流程,将状态保持为同步检测状态,并继续进行消息同步。
步骤S205,若状态切换检测出上述第一节点保持上述同步完成状态,则继续进行共识业务流程。
本申请中,若该第三心跳周期中的第一节点将状态保持为同步完成状态,则可以说明该第一节点的状态依然可以支撑共识业务,则可以继续进行共识业务。
需要说明的是,本申请中的心跳周期(包括第一心跳周期、第二心跳周期、第三心跳周期以及第四心跳周期)均用于共识节点互相通知自己当前的节点信息(如当前区块高度、当前共识消息等)。其中,第一心跳周期早于第二心跳周期,第二心跳周期早于第三心跳周期,第三心跳周期早于第四心跳周期。如,当共识节点在第二心跳周期中为同步完成状态,进行共识业务流程后,在第三心跳周期中检测到自己需要进行消息同步,则会将同步完成状态切换为同步检测状态,并在第三心跳周期到第四心跳周期的时间段中,进行消息同步。当心跳机制的心跳时间一到,会从第三心跳周期进入到第四心跳周期,在第四心跳周期中各个共识节点会互相通知自己当前的节点信息。其中,以心跳机制为例,共识节点在第一心跳周期中,当心跳机制的心跳时间一到,就会触发第二心跳周期,共识节点会进入第二心跳周期中,在第二心跳周期中进行广播通知。同理,在心跳时间到达后,又会触发第三心跳周期,共识节点又会从第二心跳周期进入第三心跳周期,在第三心跳周期中进行广播通知。其中,每两个相邻的心跳周期之间的时间间隔相同。
本申请实施例的第一节点在共识业务流程中,会在第三心跳周期中互相通知共识消息,可以使得第一节点可以根据自己的共识消息以及第二节点的共识消息来检测自己是否需要进行消息同步,若需要进行消息同步,则第一节点可以确定自己的状态不足以支撑继续进行共识业务,若强行进行共识,很可能导致共识失败,则第一节点会将状态从同步完成状态切换为同步检测状态,并暂停共识业务流程,并根据第二节点的共识消息来进行消息同步。在第四心跳周期中,第一节点与第二节点又会互相通知自己当前的共识消息,则第一节点可以在第四心跳周期中,确定自己进行消息同步后是否满足共识条件,若满足则会根据在第四心跳周期中,满足共识条件的第二节点的数量,来确定自己是否可以恢复共识业务流程,在满足共识条件的第二节点超出数量阈值时,第一节点采会恢复共识业务流程,继续进行共识。可以看出,在共识业务流程中,不满足状态的共识节点会暂停共识,则在共识业务流程中进行共识业务的共识节点的状态都具有良好状态,可以提高共识的成功率。
进一步地,为便于理解,请一并参见图7,是本申请实施例提供的一种根据共识消息进行消息同步的场景示意图。如图7所示,节点7000a可以为第一节点,节点7000b、节点7000c以及节点7000d可以为第二节点,节点7000a的共识消息可以包括共识消息701、共识消息702、共识消息703以及共识消息704,其中,共识消息701的生成时间戳为10:30,共识消息702的生成时间戳为10:40,共识消息703的生成时间戳为10:50,共识消息704的生成时间戳为10:55,可以看出,节点7000a的第一生成时间戳(第一节点中最新的共识消息的生成时间戳)为共识消息704的生成时间戳10:55;节点7000b的共识消息可以包括共识消息701、共识消息702、共识消息703、共识消息704以及共识消息705,其中,共识消息705的生成时间戳为11:00,可以看出,节点7000b的第二生成时间戳(第二节点中最新的共识消息的生成时间戳)为共识消息705的生成时间戳11:00;节点7000c的共识消息可以包括共识消息701、共识消息702以及共识消息703,节点7000c的第二生成时间戳为共识消息703的生成时间戳10:50;节点7000d的共识消息可以包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706,其中,共识消息706的生成时间戳为11:02,可以看出,节点7000d的第二生成时间戳为共识消息706的生成时间戳11:02。在第三心跳周期中,节点7000a、节点7000b、节点7000c以及节点7000d的节点状态均为同步完成状态。节点7000a可以接收到节点7000b、节点7000c以及节点7000d发送过来的共识消息,根据节点7000b的共识消息、节点7000c的共识消息以及节点7000d的共识消息,可以确定节点7000d的第二生成时间戳11:02,大于节点7000b的第二生成时间戳11:00且大于节点7000c的第二生成时间戳10:50,则节点7000a可以将节点7000d的第二生成时间戳确定为最大的第二生成时间戳。该最大的第二生成时间戳11:02大于节点7000a的第一生成时间戳10:55,则节点7000a可以确定自己的共识消息已落后于节点7000d。节点7000a根据生成时间戳10:55以及最大的第二生成时间戳11:02,可以确定出时间差异参数为7(10:55至11:02之间的时间段),因为该时间差异参数7大于了时长阈值4,则节点7000a可以确定自己的共识消息已落后太多,需要进行消息同步,则节点7000a可以将状态从同步完成状态切换为同步检测状态。处于同步检测状态下的节点7000a可以根据节点7000d的共识消息(包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706),来进行消息同步。根据节点7000d的共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706,以及节点7000a的共识消息701、共识消息702、共识消息703、共识消息704,节点7000a可以确定节点7000a与节点7000d之间的差异消息为共识消息705以及共识消息706,则节点7000a可以将共识消息705以及共识消息706确定为待同步消息。根据该共识消息705以及共识消息706,节点7000a可以进行消息同步。如图7所示,节点7000a在第三心跳周期到第四心跳周期的时间段中,进行了消息同步,同步后,在到达第四心跳周期时,节点7000a的共识消息包括了共识消息705以及共识消息706。则节点7000a可以在第四心跳周期中向节点7000b、节点7000c以及节点7000d发送同步后的共识消息(包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706)。同理,在第三心跳周期中,节点7000b可以接收到节点7000a、节点7000c以及节点7000d发送过来的共识消息,节点7000b可以在节点7000a、节点7000c以及节点7000d的共识消息中,确定节点7000d的第二生成时间戳11:02为最大的第二生成时间戳,该最大的第二生成时间戳11:02大于节点7000b的第二生成时间戳11:00,则该节点7000b可以确定自己的共识共识消息已落后于节点7000d,但因最大的第二生成时间戳11:02与节点7000b的第二生成时间戳11:00之间的时间差异参数为2,该时间差异参数2小于时长阈值4,则节点7000b无需进行消息同步,会维持同步完成状态。同理,在第三心跳周期中,节点7000c可以接收到节点7000a、节点7000b以及节点7000d发送过来的共识消息,节点7000c可以在节点7000a、节点7000b以及节点7000d的共识消息中,确定节点7000d的第二生成时间戳11:02为最大的第二生成时间戳,该最大的第二生成时间戳11:02大于节点7000c的第二生成时间戳10:50,则该节点7000c可以确定自己已落后于节点7000d,且最大的第二生成时间戳11:02与节点7000c的第二生成时间戳10:50之间的时间差异参数为12,该时间差异参数12远大于了时长阈值4,则节点7000c需要进行消息同步,会将状态从同步完成状态切换为同步检测状态,在第三心跳周期到第四心跳周期的时间段中进行消息同步。如图7所示,在到达第四心跳周期时,节点7000c的共识消息包括了共识消息704、共识消息705以及共识消息706。其中,对于节点7000c进行消息同步的具体实现方式可以参见上述对节点7000a进行消息同步的描述,这里将不再进行赘述。
需要说明的是,当第二节点的共识消息的第二生成时间戳(第二节点中最新共识消息的生成时间),大于了第一节点的共识消息的第一生成时间戳(第一节点中最新共识消息的生成时间),且在第一节点的共识消息的第一生成时间戳与第二节点的共识消息的第二生成时间戳之间,存在其他大于第一节点的第一生成时间戳,且小于第二节点的第二生成时间戳的生成时间戳,则第一节点也需要将这些生成时间戳所对应的第二节点的共识消息,也作为待同步消息,并进行同步。如,上述节点7000d还包括了共识消息707以及共识消息708,且共识消息707的生成时间戳为10:56,共识消息708的生成时间戳为10:58,因为10:56以及10:58位于节点7000a的第一生成时间戳10:55,与节点7000d的第二生成时间戳11:02之间,则节点7000a可以将共识消息707与共识消息708也作为待同步消息,则节点7000a在节点7000b中拉取到的待同步消息共为共识消息705、共识消息706、共识消息707以及共识消息708。
进一步地,为便于理解,请一并参见图8,是本申请实施例提供的一种恢复第一节点共识业务流程的场景示意图。如图8所示,以上述图8所对应实施例中的节点7000a、节点7000b节点7000c以及节点7000d为例,该节点7000a可以为第一节点,该节点7000b、节点7000c以及节点7000d可以为第二节点。节点7000a、节点7000b、节点7000c以及节点7000d在第三心跳周期中包括的共识消息以及共识消息对应的生成时间戳,可以如上述图7中的第三心跳周期中的共识消息以及共识消息对应的生成时间戳所示。则节点7000a可以确定自己在第三心跳周期中的第一生成时间戳为10:55(最新的共识消息704的生成时间戳),节点7000a已落后于节点7000d的第二生成时间戳11:02(最新的共识消息706的生成时间戳),且时间差异参数7大于时长阈值4,则节点7000a可以确定自己现在不足以支撑共识业务,需要进行消息同步,节点7000a会将状态从同步完成状态切换为同步检测状态,并在同步检测状态下暂停共识业务流程,在第三心跳周期到第四心跳周期的时间段中进行消息同步。如图8所示,在到达第四心跳周期时,该节点7000a的共识消息包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706。其中,对于节点7000a进行消息同步的具体实现过程,可以参见上述图5所对应实施例中,步骤S204中对第一节点进行消息同步的描述,这里将不再进行赘述。在第四心跳周期中,节点7000a可以向节点7000b、节点7000c以及节点7000d发送进行消息同步后的共识消息(包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706),同时,节点7000b可以向节点7000a发送进行消息同步后的共识消息(包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705),因为节点7000b与节点7000d之间的时间差异参数小于时长阈值,所以节点7000b未进行区块同步,但将自己视为已进行完同步,一直在等待其他节点同步;节点7000c可以向节点7000a发送进行消息同步后的共识消息(包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706);节点7000d可以向节点7000a发送进行消息同步后的共识消息(包括共识消息701、共识消息702、共识消息703、共识消息704、共识消息705以及共识消息706)。因为节点7000a已完成了对全部待同步消息(包括共识消息705以及共识消息706)的同步,则节点7000a可以确定自己在第四心跳周期中,与节点7000d的第二生成时间戳11:02(11:02为最大的第二生成时间戳)的时间差异参数0小于时长阈值4,则节点7000a可以确定自己已满足共识条件;此时,节点7000a可以确定节点7000b的第二生成时间戳为11:00,与最大的第二生成时间戳11:02之间的时间差异参数为2,小于时长阈值4,则节点7000b满足共识条件;同理,节点7000a可以确定节点7000c与最大的第二生成时间戳11:02之间的时间差异参数0小于时长阈值4,则节点7000c满足共识条件;同理,节点7000a可以确定节点7000d也满足共识条件。则在节点7000b、节点7000c以及节点7000d中,满足共识条件的节点有3个,则第二目标数量为3,该第二目标数量大于数量阈值2,则节点7000a可以将状态从同步检测状态切换为同步完成状态,并恢复共识业务流程。
进一步地,请参见图9,是本申请实施例提供的一种基于区块链的数据处理装置的结构示意图。上述基于区块链的数据处理装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该基于区块链的数据处理装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。该数据处理装置1可以包括:第一区块高度交互模块11、区块同步模块12、第二区块高度交互模块13、第一目标数量确定模块14以及共识业务进入模块15。
第一区块高度交互模块11,用于第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于上述第一心跳周期中的上述至少两个第二节点所发送的第二区块高度;
区块同步模块12,用于若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理;
第二区块高度交互模块13,用于上述第一节点在第二心跳周期中向上述第二节点发送区块同步后的第一区块高度,接收处于上述第二心跳周期中的上述至少两个第二节点发送的第三区块高度;
第一目标数量确定模块14,用于若上述第一节点在上述同步检测状态下检测到上述区块同步后的第一区块高度和上述最大的第二区块高度之间的差异满足共识条件,则根据上述第三区块高度确定满足上述共识条件的第二节点的数量,作为第一目标数量;
共识业务进入模块15,用于若上述第一目标数量大于数量阈值,则上述第一节点将上述同步检测状态切换为同步完成状态,在上述同步完成状态下进入共识业务流程。
其中,第一区块高度交互模块11、区块同步模块12、第二区块高度交互模块13、第一目标数量确定模块14以及共识业务进入模块15的具体实现方式,可以参见上述图3所对应实施例中步骤S101-步骤S105的描述,这里将不再进行赘述。
请参见图9,上述区块同步模块12,可以包括:第一高度差异确定单元121以及待同步区块拉取单元122。
第一高度差异确定单元121,用于上述第一节点在上述同步检测状态下,确定上述第一区块高度以及最大的第二区块高度之间的第一高度差异参数;
待同步区块拉取单元122,用于若上述第一区块高度小于上述最大的第二区块高度,且上述第一高度差异参数大于参数阈值,则确定上述第一区块高度和上述最大的第二区块高度之间的差异不满足共识条件,根据上述第一高度差异参数从目标第二节点拉取待同步区块,进行区块同步;上述目标第二节点为上述至少两个第二节点中具有上述最大的第二区块高度的第二节点。
其中,上述第一高度差异确定单元121以及区块拉取单元122的具体实现方式可以参见上述图3所对应实施例中步骤S102的描述,这里将不再进行赘述。
请参见图9,上述第一目标数量确定模块14,可以包括:第二高度差异确定单元141、第三高度差异获取单元142以及目标数量统计单元143。
第二高度差异确定单元141,用于上述第一节点在上述同步检测状态下,确定上述区块同步后的第一区块高度以及上述最大的第二区块高度之间的第二高度差异参数;
第三高度差异获取单元142,用于若上述第二高度差异参数小于或等于参数阈值,则确定上述区块同步后的第一区块高度和上述最大的第二区块高度之间的差异满足共识条件,触发获取上述第三区块高度与上述最大的第二区块高度之间的第三高度差异参数;
目标数量统计单元143,用于统计上述第三高度差异参数小于或等于上述参数阈值的第二节点的数量,作为第一目标数量。
其中,第二高度差异确定单元141、第三高度差异获取单元142以及目标数量统计单元143的具体实现方式可以参见上述他3所对应实施例中步骤S104的描述,这里将不再进行赘述。
请参见图9,数据处理装置1可以包括第一区块高度交互模块11、区块同步模块12、第二区块高度交互模块13、第一目标数量确定模块14以及共识业务进入模块15,还可以包括:初始化模块16、信息配置模块17以及心跳机制触发模块18。
初始化模块16,用于上述第一节点在初始化状态下进行节点初始化;
信息配置模块17,用于当完成节点初始化时,将上述初始化状态切换为配置状态,在上述配置状态下从智能合约中获取共识配置信息,根据上述共识配置信息进行配置处理;
心跳机制触发模块18,用于当完成配置处理时,上述第一节点将上述配置状态切换为心跳触发状态,在上述心跳触发状态下触发心跳机制;上述心跳机制用于产生上述第一心跳周期和上述第二心跳周期。
其中,初始化模块16、信息配置模块17以及心跳机制触发模块18的具体实现方式,可以参见上述图3所对应实施例中步骤S102中的描述,这里将不再进行赘述。
请参见图9,数据处理装置1可以包括第一区块高度交互模块11、区块同步模块12、第二区块高度交互模块13、第一目标数量确定模块14、共识业务进入模块15、初始化模块16、信息配置模块17以及心跳机制触发模块18,还可以包括:共识消息发送模块19、共识消息接收模块20、状态切换检测模块21、共识业务暂停模块22以及共识业务维持模块23。
共识消息发送模块19,用于在共识业务流程中,处于上述同步完成状态的上述第一节点在第三心跳周期中向上述至少两个第二节点发送第一共识消息;
共识消息接收模块20,用于接收处于上述第三心跳周期中的上述至少两个第二节点所发送的第二共识消息;
状态切换检测模块21,用于上述第一节点根据上述第一共识消息以及上述第二共识消息,进行状态切换检测;
共识业务暂停模块22,用于若状态切换检测出上述第一节点从上述同步完成状态切换为上述同步检测状态,则暂停上述第一节点的共识业务流程;
共识业务维持模块23,用于若状态切换检测出上述第一节点保持上述同步完成状态,则继续进行共识业务流程。
其中,共识消息发送模块19、共识消息接收模块20、状态切换检测模块21、共识业务暂停模块22以及共识业务维持模块23的具体实现方式,可以参见上述图6所对应实施例中步骤S201-步骤S205的描述,这里将不再进行赘述。
请参见图9,上述状态切换检测模块21,可以包括:生成时间戳获取单元211、最大生成时间戳确定单元212、时间差异参数确定单元213、状态切换检测进行单元214以及同步完成状态保持单元215。
生成时间戳获取单元211,用于获取上述第一共识消息对应的第一生成时间戳,以及上述第二共识消息对应的第二生成时间戳;
最大生成时间戳确定单元212,用于在上述第二生成时间戳中确定出最大的第二生成时间戳;
时间差异参数确定单元213,用于若上述第一生成时间戳小于上述最大的第二生成时间戳,则确定上述第一生成时间戳与上述最大的第二生成时间戳之间的第一时间差异参数;
状态切换检测进行单元214,用于根据上述第一时间差异参数进行状态切换检测;
同步完成状态保持单元215,用于若上述第一生成时间戳大于或等于上述第二生成时间戳,则上述第一节点保持上述同步完成状态。
其中,生成时间戳获取单元211、最大生成时间戳确定单元212、时间差异参数确定单元213、状态切换检测进行单元214以及同步完成状态保持单元215的具体实现方式,可以参见上述图6所对应实施例中步骤S203的描述,这里将不再进行赘述。
请参见图9,上述状态切换检测进行单元214,可以包括:状态切换子单元2141以及状态保持子单元2142。
状态切换子单元2141,用于若上述第一时间差异参数大于时长阈值,则上述第一节点从上述同步完成状态切换为上述同步检测状态;
状态保持子单元2142,用于若上述第一时间差异参数小于或等于上述时长阈值,则上述第一节点保持上述同步完成状态。
其中,状态切换子单元2141以及状态保持子单元2142的具体实现方式,可以参见上述图6所对应实施例中步骤S203的描述,这里将不再进行赘述。
请参见图9,数据处理装置1可以包括第一区块高度交互模块11、区块同步模块12、第二区块高度交互模块13、第一目标数量确定模块14、共识业务进入模块15、初始化模块16、信息配置模块17、心跳机制触发模块18、共识消息发送模块19、共识消息接收模块20、状态切换检测模块21、共识业务暂停模块22以及共识业务维持模块23,还可以包括:时间范围确定模块24以及消息同步模块25。
时间范围确定模块24,用于根据上述第一生成时间戳以及上述最大的第二生成时间戳,确定待同步消息的生成时间范围;
消息同步模块25,用于根据上述待同步消息的生成时间范围,从上述最大的第二生成时间戳对应的第二节点拉取上述待同步消息,进行消息同步。
其中,时间范围确定模块24以及消息同步模块25的具体实现方式可以参见上述图6所对应实施例中步骤S204的描述,这里将不再进行赘述。
请参见图9,数据处理装置1可以包括第一区块高度交互模块11、区块同步模块12、第二区块高度交互模块13、第一目标数量确定模块14、共识业务进入模块15、初始化模块16、信息配置模块17、心跳机制触发模块18、共识消息发送模块19、共识消息接收模块20、状态切换检测模块21、共识业务暂停模块22、共识业务维持模块23、时间范围确定模块24以及消息同步模块25,还可以包括:共识消息交互模块26、时间差异参数获取模块27、第二目标数量确定模块28以及共识业务恢复模块29。
共识消息交互模块26,用于在第四心跳周期中向上述至少两个第二节点发送消息同步后的第一共识消息,接收处于上述第四心跳周期中的上述至少两个第二节点发送的第三共识消息;
时间差异参数获取模块27,用于上述第一节点在上述同步检测状态下获取上述消息同步后的第一共识消息对应的第三生成时间戳,获取上述第三生成时间戳与上述最大的第二生成时间戳之间的第二时间差异参数;
上述时间差异参数获取模块27,还用于若上述第二时间差异参数小于或等于上述时长阈值,则获取上述第三共识消息对应的生成时间戳与上述最大的第二生成时间戳之间的第三时间差异参数;
第二目标数量确定模块28,用于统计上述第三时间差异参数小于或等于上述时长阈值的第二节点的数量,作为第二目标数量;
共识业务恢复模块29,用于若上述第二目标数量大于上述数量阈值,则上述第一节点将上述同步检测状态切换为上述同步完成状态,在上述同步完成状态下恢复上述第一节点的共识业务流程。
其中,共识消息交互模块26、时间差异参数获取模块27、第二目标数量确定模块28以及共识业务恢复模块29的具体实现方式,可以参见上述图6所对应实施例中步骤S204的描述,这里将不再进行赘述。
请参见图9,上述区块高度交互模块11,可以包括:节点信息交互单元111、第一共识业务停止单元112、网络正常节点数确定单元113以及第二共识业务停止单元114。
节点信息交互单元111,用于上述第一节点在第一心跳周期中向至少两个第二节点发送第一网络状态和第一区块高度,接收处于上述第一心跳周期中的上述至少两个第二节点所发送的第二网络状态和第二区块高度;
第一共识业务停止单元112,用于若上述第一网络状态为异常状态,则停止进入共识业务流程;
网络正常节点数确定单元113,用于若上述第一网络状态为正常状态,则确定上述至少两个第二节点中上述第二网络状态为上述正常状态的第二节点的数量,作为网络正常节点数;
第二共识业务停止单元114,用于若上述网络正常节点数等于或小于上述数量阈值,则停止进入共识业务流程;
则上述区块同步模块11,还用于若上述第一节点在同步检测状态下检测到上述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,且上述网络正常节点数大于上述数量阈值,则进行区块同步处理。
其中,节点信息交互单元111、第一共识业务停止单元112、网络正常节点数确定单元113以及第二共识业务停止单元114的具体实现方式,可以参见上述图3所对应实施例中步骤S105中对于节点网络状态的描述,这里将不再进行赘述。
本申请实施例在进入共识业务流程前,第一节点与第二节点会在第一心跳周期中互相通知当前的区块高度(第一节点发送第一区块高度,第二节点发送第二区块高度),第一节点可以根据第二区块高度来对自己能否进入共识进行检测。若处于同步检测状态下的第一节点检测到第一区块高度与最大的第二区块高度之间的差异满足共识条件,则第一节点可以根据最大的第二区块高度来进行区块同步。当到了第二心跳周期,处于同步检测状态下的第一节点又会向第二节点发送区块同步后的第一区块高度,并继续接收第二节点发送过来的第三区块高度。在第二心跳周期中,第一节点可以确定出区块同步后的第一区块高度与上述最大的第二区块高度之间的差异,来确定自己区块同步后的区块高度是否满足了共识条件。若该区块同步后的第一区块高度与上述最大的第二区块高度之间的差异满足了共识条件(可以理解为第一节点进行区块同步后,第一区块高度增加了,与该最大的第二区块高度更为接近了),则第一节点可以根据第三区块高度来确定满足该共识条件的第二节点的数量,作为第一目标数量,当该第一目标数量大于数量阈值时,第一节点可以将状态从同步检测状态切换为同步完成状态,在该同步完成状态下进入共识业务流程。可以看出,当第一节点自己已满足共识条件时,第一节点仍不能单独进入共识业务流程,只有在确定有超出数量阈值的第二节点都满足共识条件时,第一节点才会切换为同步完成状态,并进入共识业务流程。因为在进入该共识业务流程中的第一节点与第二节点中,每个节点均为同步完成状态,也就是说,每个节点均满足进行共识的条件,由此,可以大幅减少因节点状态落后(如网络掉线、信息不同步等)而导致节点共识失败的情况,即可以提高共识的成功率。
进一步地,请参见图10,是本申请实施例提供的一种计算机设备的示意图。如图10所示,上述图9所对应实施例中的装置1可以应用于上述计算机设备,1000上述计算机设备1000可以包括:至少一个处理器1001,例如CPU,至少一个网络接口1004,用户接口1003,存储器1005,至少一个通信总线1002。其中,通信总线1002用于实现这些组件之间的连接通信。其中,用户接口1003可以包括显示屏(Display)、键盘(Keyboard),网络接口1004可选地可以包括标准的有线接口、无线接口(如WI-FI接口)。存储器1005可以是高速RAM存储器,也可以是非不稳定的存储器(non-volatile memory),例如至少一个磁盘存储器。存储器1005可选地还可以是至少一个位于远离前述处理器1001的存储装置。如图10所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及设备控制应用程序。
在图10所示的计算机设备1000中,网络接口1004主要用于与业务服务器进行网络通信;而用户接口1003主要用于为用户提供输入的接口;而处理器1001可以用于调用存储器1005中存储的设备控制应用程序,以实现:
第一节点获取第一同步周期中的第一节点状态信息以及上述第一节点的区块高度;
接收第二节点在上述第一同步周期中发送的上述第二节点的区块高度;
根据上述第一节点的区块高度和上述第二节点的区块高度,与上述第二节点之间进行区块同步;
当完成区块同步时,将上述第一同步周期中的第一节点状态信息设置为同步完成状态,在第二同步周期中向上述第二节点发送为上述同步完成状态的第一节点状态信息;
接收上述第二节点在上述第二同步周期中发送的第二节点状态信息,确定上述第二同步周期中为上述同步完成状态的第二节点状态信息的完成数量,根据上述同步完成状态的第一节点状态信息以及上述完成数量,确定目标数量;
若上述目标数量大于数量阈值,则进入共识业务流程。
应当理解,本申请实施例中所描述的计算机设备1000可执行前文图3到图8所对应实施例中对该基于区块链的数据处理方法的描述,也可执行前文图9所对应实施例中对该数据处理装置1的描述,在此不再赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。
此外,这里需要指出的是:本申请实施例还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的视频数据处理的计算机设备1000所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图3到图8所对应实施例中对上述基于区块链的数据处理方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。
上述计算机可读存储介质可以是前述任一实施例提供的视频数据处理装置或者上述计算机设备的内部存储单元,例如计算机设备的硬盘或内存。该计算机可读存储介质也可以是该计算机设备的外部存储设备,例如该计算机设备上配备的插接式硬盘,智能存储卡(smart media card,SMC),安全数字(secure digital,SD)卡,闪存卡(flash card)等。进一步地,该计算机可读存储介质还可以既包括该计算机设备的内部存储单元也包括外部存储设备。该计算机可读存储介质用于存储该计算机程序以及该计算机设备所需的其他程序和数据。该计算机可读存储介质还可以用于暂时地存储已经输出或者将要输出的数据。
本申请实施例的说明书和权利要求书及附图中的术语“第一”、“第二”等是用于区别不同对象,而非用于描述特定顺序。此外,术语“包括”以及它们任何变形,意图在于覆盖不排他的包含。例如包含了一系列步骤或单元的过程、方法、装置、产品或设备没有限定于已列出的步骤或模块,而是可选地还包括没有列出的步骤或模块,或可选地还包括对于这些过程、方法、装置、产品或设备固有的其他步骤单元。
本领域普通技术人员可以意识到,结合本文中所公开的实施例描述的各示例的单元及算法步骤,能够以电子硬件、计算机软件或者二者的结合来实现,为了清楚地说明硬件和软件的可互换性,在上述说明中已经按照功能一般性地描述了各示例的组成及步骤。这些功能究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本申请的范围。
本申请实施例提供的方法及相关装置是参照本申请实施例提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令可提供到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或结构示意图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (13)
1.一种基于区块链的数据处理方法,其特征在于,包括:
第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于所述第一心跳周期中的所述至少两个第二节点所发送的第二区块高度;
若所述第一节点在同步检测状态下检测到所述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理;
所述第一节点在第二心跳周期中向所述第二节点发送区块同步后的第一区块高度,接收处于所述第二心跳周期中的所述至少两个第二节点发送的第三区块高度;
若所述第一节点在所述同步检测状态下检测到所述区块同步后的第一区块高度和所述最大的第二区块高度之间的差异满足共识条件,则根据所述第三区块高度确定满足所述共识条件的第二节点的数量,作为第一目标数量;
若所述第一目标数量大于数量阈值,则所述第一节点将所述同步检测状态切换为同步完成状态,在所述同步完成状态下进入共识业务流程。
2.根据权利要求1所述的方法,其特征在于,所述若所述第一节点在同步检测状态下检测到所述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理,包括:
所述第一节点在所述同步检测状态下,确定所述第一区块高度以及最大的第二区块高度之间的第一高度差异参数;
若所述第一区块高度小于所述最大的第二区块高度,且所述第一高度差异参数大于参数阈值,则确定所述第一区块高度和所述最大的第二区块高度之间的差异不满足共识条件,根据所述第一高度差异参数从目标第二节点拉取待同步区块,进行区块同步;所述目标第二节点为所述至少两个第二节点中具有所述最大的第二区块高度的第二节点。
3.根据权利要求1所述的方法,其特征在于,所述若所述第一节点在所述同步检测状态下检测到所述区块同步后的第一区块高度和所述最大的第二区块高度之间的差异满足共识条件,则根据所述第三区块高度确定满足所述共识条件的第二节点的数量,作为第一目标数量,包括:
所述第一节点在所述同步检测状态下,确定所述区块同步后的第一区块高度以及所述最大的第二区块高度之间的第二高度差异参数;
若所述第二高度差异参数小于或等于参数阈值,则确定所述区块同步后的第一区块高度和所述最大的第二区块高度之间的差异满足共识条件,触发获取所述第三区块高度与所述最大的第二区块高度之间的第三高度差异参数;
统计所述第三高度差异参数小于或等于所述参数阈值的第二节点的数量,作为第一目标数量。
4.根据权利要求1所述的方法,其特征在于,还包括:
所述第一节点在初始化状态下进行节点初始化;
当完成节点初始化时,将所述初始化状态切换为配置状态,在所述配置状态下从智能合约中获取共识配置信息,根据所述共识配置信息进行配置处理;
当完成配置处理时,所述第一节点将所述配置状态切换为心跳触发状态,在所述心跳触发状态下触发心跳机制;所述心跳机制用于产生所述第一心跳周期和所述第二心跳周期。
5.根据权利要求1所述的方法,其特征在于,还包括:
在共识业务流程中,处于所述同步完成状态的所述第一节点在第三心跳周期中向所述至少两个第二节点发送第一共识消息;
接收处于所述第三心跳周期中的所述至少两个第二节点所发送的第二共识消息;
所述第一节点根据所述第一共识消息以及所述第二共识消息,进行状态切换检测;
若状态切换检测出所述第一节点从所述同步完成状态切换为所述同步检测状态,则暂停所述第一节点的共识业务流程;
若状态切换检测出所述第一节点保持所述同步完成状态,则继续进行共识业务流程。
6.根据权利要求5所述的方法,其特征在于,所述第一节点根据所述第一共识消息以及所述第二共识消息,进行状态切换检测,包括:
获取所述第一共识消息对应的第一生成时间戳,以及所述第二共识消息对应的第二生成时间戳;
在所述第二生成时间戳中确定出最大的第二生成时间戳;
若所述第一生成时间戳小于所述最大的第二生成时间戳,则确定所述第一生成时间戳与所述最大的第二生成时间戳之间的第一时间差异参数,根据所述第一时间差异参数进行状态切换检测;
若所述第一生成时间戳大于或等于所述最大的第二生成时间戳,则所述第一节点保持所述同步完成状态。
7.根据权利要求6所述的方法,其特征在于,所述根据所述第一时间差异参数进行状态切换检测,包括:
若所述第一时间差异参数大于时长阈值,则所述第一节点从所述同步完成状态切换为所述同步检测状态;
若所述第一时间差异参数小于或等于所述时长阈值,则所述第一节点保持所述同步完成状态。
8.根据权利要求6所述的方法,其特征在于,在所述若状态切换检测出所述第一节点从所述同步完成状态切换为所述同步检测状态,则暂停所述第一节点的共识业务流程的步骤之后,还包括:
根据所述第一生成时间戳以及所述最大的第二生成时间戳,确定待同步消息的生成时间范围;
根据所述待同步消息的生成时间范围,从所述最大的第二生成时间戳对应的第二节点拉取所述待同步消息,进行消息同步。
9.根据权利要求8所述的方法,其特征在于,还包括:
在第四心跳周期中向所述至少两个第二节点发送消息同步后的第一共识消息,接收处于所述第四心跳周期中的所述至少两个第二节点发送的第三共识消息;
所述第一节点在所述同步检测状态下获取所述消息同步后的第一共识消息对应的第三生成时间戳,获取所述第三生成时间戳与所述最大的第二生成时间戳之间的第二时间差异参数;
若所述第二时间差异参数小于或等于时长阈值,则获取所述第三共识消息对应的生成时间戳与所述最大的第二生成时间戳之间的第三时间差异参数;
统计所述第三时间差异参数小于或等于所述时长阈值的第二节点的数量,作为第二目标数量;
若所述第二目标数量大于所述数量阈值,则所述第一节点将所述同步检测状态切换为所述同步完成状态,在所述同步完成状态下恢复所述第一节点的共识业务流程。
10.根据权利要求1所述的方法,其特征在于,所述第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于所述第一心跳周期中的所述至少两个第二节点所发送的第二区块高度,包括:
所述第一节点在第一心跳周期中向至少两个第二节点发送第一网络状态和第一区块高度,接收处于所述第一心跳周期中的所述至少两个第二节点所发送的第二网络状态和第二区块高度;
若所述第一网络状态为异常状态,则停止进入共识业务流程;
若所述第一网络状态为正常状态,则确定所述至少两个第二节点中所述第二网络状态为所述正常状态的第二节点的数量,作为网络正常节点数;
若所述网络正常节点数等于或小于所述数量阈值,则停止进入共识业务流程;
则所述若所述第一节点在同步检测状态下检测到所述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理,包括:
若所述第一节点在同步检测状态下检测到所述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,且所述网络正常节点数大于所述数量阈值,则进行区块同步处理。
11.一种基于区块链的数据处理装置,其特征在于,包括:
第一区块高度交互模块,用于第一节点在第一心跳周期中向至少两个第二节点发送第一区块高度,接收处于所述第一心跳周期中的所述至少两个第二节点所发送的第二区块高度;
区块同步模块,用于若所述第一节点在同步检测状态下检测到所述第一区块高度和最大的第二区块高度之间的差异不满足共识条件,则进行区块同步处理;
第二区块高度交互模块,用于所述第一节点在第二心跳周期中向所述第二节点发送区块同步后的第一区块高度,接收处于所述第二心跳周期中的所述至少两个第二节点发送的第三区块高度;
第一目标数量确定模块,用于若所述第一节点在所述同步检测状态下检测到所述区块同步后的第一区块高度和所述最大的第二区块高度之间的差异满足共识条件,则根据所述第三区块高度确定满足所述共识条件的第二节点的数量,作为第一目标数量;
共识业务进入模块,用于若所述第一目标数量大于数量阈值,则所述第一节点将所述同步检测状态切换为同步完成状态,在所述同步完成状态下进入共识业务流程。
12.一种计算机设备,其特征在于,包括:处理器和存储器;
所述存储器存储有计算机程序,所述计算机程序被所述处理器执行时,使得所述处理器执行如权利要求1至10中任一项所述方法的步骤。
13.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序包括程序指令,所述程序指令当被处理器执行时,执行如权利要求1至10中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010192945.3A CN111368005B (zh) | 2020-03-18 | 2020-03-18 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010192945.3A CN111368005B (zh) | 2020-03-18 | 2020-03-18 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111368005A CN111368005A (zh) | 2020-07-03 |
CN111368005B true CN111368005B (zh) | 2024-06-11 |
Family
ID=71208922
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010192945.3A Active CN111368005B (zh) | 2020-03-18 | 2020-03-18 | 基于区块链的数据处理方法、装置、设备及可读存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111368005B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112396423B (zh) * | 2021-01-20 | 2021-04-13 | 腾讯科技(深圳)有限公司 | 一种交易数据处理方法、装置、设备及存储介质 |
CN114338676B (zh) * | 2021-12-31 | 2024-05-28 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
CN114422527B (zh) * | 2021-12-31 | 2024-05-28 | 支付宝(杭州)信息技术有限公司 | 一种区块同步方法、装置、电子设备和存储介质 |
GB2629362A (en) * | 2023-04-25 | 2024-10-30 | Nchain Licensing Ag | Blockchain synchronisation protocol |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597922A (zh) * | 2019-09-27 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
CN110597839A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 交易数据处理方法、装置、设备以及存储介质 |
Family Cites Families (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US9280396B2 (en) * | 2012-11-01 | 2016-03-08 | Netapp, Inc. | Lock state synchronization for non-disruptive persistent operation |
US10382196B2 (en) * | 2016-04-29 | 2019-08-13 | Olympus Sky Technologies, S.A. | System and method for secure communications based on locally stored values |
-
2020
- 2020-03-18 CN CN202010192945.3A patent/CN111368005B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110597839A (zh) * | 2019-09-20 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 交易数据处理方法、装置、设备以及存储介质 |
CN110597922A (zh) * | 2019-09-27 | 2019-12-20 | 腾讯科技(深圳)有限公司 | 数据处理方法、装置、终端及存储介质 |
Non-Patent Citations (2)
Title |
---|
区块链技术共识算法综述;王晓光;信息与电脑(理论版);20170531;72-74 * |
区块链的安全检测模型;叶聪聪;软件学报;20180531;1348-1359 * |
Also Published As
Publication number | Publication date |
---|---|
CN111368005A (zh) | 2020-07-03 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111368005B (zh) | 基于区块链的数据处理方法、装置、设备及可读存储介质 | |
TWI751402B (zh) | 一種資料同步方法、分散式系統、電腦可讀取儲取媒體、電腦設備及分散式設備 | |
CN110493116B (zh) | 一种车联网数据传输方法及装置 | |
CN100461708C (zh) | 告警同步方法 | |
CN101511042B (zh) | 一种同步数据的方法及其装置 | |
TWI746516B (zh) | 資料的同步方法和裝置 | |
CN108228397A (zh) | 一种集群间跨机房同步的方法和装置 | |
CN105095008B (zh) | 一种适用于集群系统的分布式任务故障冗余方法 | |
CN113051110A (zh) | 集群切换方法、装置及设备 | |
CN102714607A (zh) | 连通性故障管理超时周期控制 | |
CN105407146A (zh) | 一种从手环到app再到服务器的数据同步方法 | |
CN103188064A (zh) | 时钟同步方法及装置 | |
US8463945B2 (en) | Method for synchronizing local clocks in a distributed computer network | |
CN114500554B (zh) | 一种物联网系统管理方法 | |
CN103532753A (zh) | 一种基于内存换页同步的双机热备方法 | |
CN113206757B (zh) | 流式同步网管配置全量数据和增量数据的方法及电子设备 | |
JP5331585B2 (ja) | フォールトトレラントコンピュータシステムおよびフォールトトレラントコンピュータシステムにおける方法 | |
JP6434021B2 (ja) | データフィードの管理 | |
CN104954101A (zh) | 基于同步ack的多终端数据同步方法 | |
CN112486707A (zh) | 基于Redis的消息异步消费方法及装置 | |
CN115240850A (zh) | 信息处理方法、装置、可穿戴设备和电子设备 | |
US20210096962A1 (en) | Data backup method, device and system | |
CN116233148A (zh) | 云边数据同步方法、系统、装置及计算机存储介质 | |
CN111078463B (zh) | 数据备份的方法、装置和系统 | |
CN105373549B (zh) | 数据迁移方法、设备及数据节点服务器 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40026387 Country of ref document: HK |
|
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant | ||
TG01 | Patent term adjustment |