CN111241115B - 数据同步方法、装置、设备及存储介质 - Google Patents
数据同步方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111241115B CN111241115B CN202010015144.XA CN202010015144A CN111241115B CN 111241115 B CN111241115 B CN 111241115B CN 202010015144 A CN202010015144 A CN 202010015144A CN 111241115 B CN111241115 B CN 111241115B
- Authority
- CN
- China
- Prior art keywords
- data
- synchronized
- target
- node device
- node
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
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/23—Updating
- G06F16/2365—Ensuring data consistency and integrity
-
- 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
- G06Q—INFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
- G06Q40/00—Finance; Insurance; Tax strategies; Processing of corporate or income taxes
- G06Q40/04—Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Business, Economics & Management (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Finance (AREA)
- General Engineering & Computer Science (AREA)
- Data Mining & Analysis (AREA)
- Accounting & Taxation (AREA)
- Development Economics (AREA)
- Computing Systems (AREA)
- Economics (AREA)
- Marketing (AREA)
- Strategic Management (AREA)
- Technology Law (AREA)
- General Business, Economics & Management (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请公开了一种数据同步方法、装置、设备及存储介质,属于区块链技术领域。本申请通过从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系,基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量,将该至少一个待同步数据发送给该目标节点设备。节点设备之间通过点对点的方式批量同步数据,无需将数据广播给区块链网络中的各个节点设备,可以降低数据同步过程中的网络资源占用。
Description
技术领域
本申请涉及区块链技术领域,特别涉及一种数据同步方法、装置、设备及存储介质。
背景技术
在区块链技术中,通常应用广播的方式进行数据同步,即一个节点设备对获取到的数据校验通过后,将数据加入本地的内存池中,并将数据分别发送给区块链网络中的其他节点设备,以完成数据广播。
但是,在上述数据同步方法中,被广播的数据在区块链网络中大量复制、传输,会占用大量的网络带宽,导致网络性能下降,影响网络中其他业务的正常运行。
发明内容
本申请实施例提供了一种数据同步方法、装置、设备及存储介质,可以节约数据同步过程中所占用的网络资源。该技术方案如下:
一方面,提供了一种数据同步方法,该方法包括:
从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系;
基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量;
将该至少一个待同步数据发送给该目标节点设备。
一方面,提供了一种数据同步装置,该装置包括:
目标数据确定模块,用于从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系;
待同步数据确定模块,用于基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量;
发送模块,用于将该至少一个待同步数据发送给该目标节点设备。
在一种可能实现方式中,该装置还包括:
存储模块,用于基于该任一数据的数据标识的数值大小,将该任一数据以及该任一数据的数据标识,存储至该交易池的数据列表中。
一方面,提供了一种计算机设备,该计算机设备包括一个或多个处理器和一个或多个存储器,该一个或多个存储器中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器加载并执行以实现该数据同步方法所执行的操作。
一方面,提供了一种计算机可读存储介质,该计算机可读存储介质中存储有至少一条程序代码,该至少一条程序代码由处理器加载并执行以实现该数据同步方法所执行的操作。
本申请实施例提供的技术方案,通过从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系,基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量,将该至少一个待同步数据发送给该目标节点设备。节点设备之间通过点对点的方式批量同步数据,无需将数据广播给区块链网络中的各个节点设备,可以降低数据同步过程中的网络资源占用。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请实施例提供的一种区块链***100的示意图;
图2是本申请实施例提供的一种节点设备的功能架构图;
图3是本申请实施例提供的一种数据同步方法的流程图;
图4是本申请实施例提供的一种待同步数据确定方法的示意图;
图5是本申请实施例提供的一种数据同步过程的示意图;
图6是本申请实施例提供的一种数据列表的示意图;
图7是本申请实施例提供的一种数据同步装置的结构示意图;
图8是本申请实施例提供的一种终端的结构示意图;
图9是本申请实施例提供的一种服务器的结构示意图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
以下,对本申请涉及的术语进行解释。
区块链(blockchain):是分布式数据存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。区块链本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了一批次网络交易的信息,用于验证其信息的有效性(防伪)和生成下一个区块。区块链可以包括区块链底层平台、平台产品服务层以及应用服务层。
区块链底层平台可以包括用户管理、基础服务、智能合约以及运营监控等处理模块。其中,用户管理模块负责所有区块链参与者的身份信息管理,包括维护公私钥生成(账户管理)、密钥管理以及用户真实身份和区块链地址对应关系维护(权限管理)等,并且在授权的情况下,监管和审计某些真实身份的交易情况,提供风险控制的规则配置(风控审计);基础服务模块部署在所有区块链节点设备上,用来验证业务请求的有效性,并对有效请求完成共识后,记录到存储上,对于一个新的业务请求,基础服务先对接口适配解析和鉴权处理(接口适配),然后通过共识算法将业务信息加密(共识管理),在加密之后完整一致的传输至共享账本上(网络通信),并进行记录存储;智能合约模块负责合约的注册发行以及合约触发和合约执行,开发人员可以通过某种编程语言定义合约逻辑,发布到区块链上(合约注册),根据合约条款的逻辑,调用密钥或者其它的事件触发执行,完成合约逻辑,同时还提供对合约升级注销的功能;运营监控模块主要负责产品发布过程中的部署、配置的修改、合约设置、云适配以及产品运行中的实时状态的可视化输出,例如:告警、监控网络情况、监控节点设备健康状态等。
平台产品服务层提供典型应用的基本能力和实现框架,开发人员可以基于这些基本能力,叠加业务的特性,完成业务逻辑的区块链实现。应用服务层提供基于区块链方案的应用服务给业务参与方进行使用。
本申请实施例提供了一种基于区块链技术实现的区块链***100,以下对该区块链***的***架构进行介绍。
图1是本申请实施例提供的一种区块链***100的示意图,参见图1,该区块链***100可以包括多个节点设备101,此外,该区块链***100还可以包括至少一个客户端。
节点设备101可以是网络中的任意形式的计算设备,如服务器、主机、用户终端等。节点设备101与节点设备101之间能够共享数据。其中,节点设备101之间可以基于点对点(Peer To Peer,P2P)协议,建立P2P网络。该P2P协议是一个运行在传输控制协议(Transmission Control Protocol,TCP)协议之上的应用层协议。
每个节点设备101在进行正常工作的过程中,可以接收到输入信息,并基于接收到的输入信息维护该区块链***内的共享数据。为了保证区块链***内的信息互通,区块链***中的每个节点设备之间可以存在信息连接,节点设备之间可以通过上述信息连接进行信息传输。例如,当区块链***中的任意节点设备接收到输入信息时,区块链***中的其他节点设备也可以获取该输入信息,将该输入信息作为共享数据中的数据进行存储,使得区块链***中全部节点设备上存储的数据均一致。
以下,对节点设备101的功能架构进行介绍。
参见图2,图2是本申请实施例提供的一种节点设备的功能架构图,节点设备101从功能上可以划分为硬件层、中间层、操作***层和应用层,涉及的具体功能可以如下:
1)路由,节点设备具有的基本功能,用于支持节点设备之间的通信。
节点设备除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链***中的其他节点设备,供其他节点设备在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链***中的其他节点设备,其他节点设备验证成功后,作为承认交易有效的响应,将交易的记录数据写入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链***中的其他节点设备,其他节点设备验证有效后,作为承认账目数据有效的响应,将记录数据写入临时区块中,还可以向发起操作的节点设备发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链***中节点设备提交的记录数据。
可以理解的是,本申请实施例提供的方法可以由节点设备执行,节点设备为计算机设备,包括但不限于服务器或终端。
图3是本申请实施例提供的一种数据同步方法的流程图,在本申请实施例中以该方法应用于区块链***中的节点设备为例进行说明。参见图3,该方法具体可以包括以下步骤:
301、节点设备对输入数据进行标记。
其中,该节点设备可以为该区块链***中的任一节点设备,该节点设备可以为终端、服务器等,本申请实施例对此不作限定。该输入数据可以为该节点设备创建的数据,也可以为其他节点设备或用户终端所发送的数据,本申请实施例对此不作具体限定。
区块链***中的各个节点设备均可以维护有一个交易池,该交易池可以用于存储已经产生,但还未存储到区块链的数据,该交易池可以为内存池等,本申请实施例对此不作限定。在本申请实施例中,该交易池可以维护有一个全局数据标识(orderIndex),该节点设备可以基于该全局数据标识对该输入数据进行标记。在一种可能实现方式中,该节点设备可以响应于任一数据的数据标记指令,从交易池中获取全局数据标识,该交易池可以用于存储该任一数据,该节点设备可以将该全局数据标识作为该任一数据的数据标识(transactionIndex)。其中,一个数据标识可以用于唯一地指示一个数据,在一种可能实现方式中,该全局数据标识可以表现为编号的形式,该全局数据编号可以是单调递增的。例如,该交易池每加入一个数据时,即可触发该数据标记指令,该节点设备可以应用该全局数据标识标记该数据,即为该数据添加数据标识,数据标记完成后,该全局数据标识的数字加一。
需要说明的是,本申请实施例对上述数据标记指令的触发方式以及全局数据标识的具体表现形式不作限定。
在一种可能实现方式中,该节点设备的交易池中可以维护有一个数据列表,该数据列表可以以各个数据的数据标识为关键字,以各个数据为内容。该节点设备可以基于该任一数据的数据标识的数值大小,将该任一数据以及该任一数据的数据标识,存储至该交易池的数据列表中。即该数据列表中的各个数据是按照数据标识的顺序来存储的,便于后续数据同步过程中数据查找和读取。当然,该数据列表中的数据也可以按照其他顺序进行存储,本申请实施例对此不作限定。
302、节点设备从各个已同步数据中,确定目标数据。
其中,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系。该区块链***中的各个节点设备之间可以通过建立关联关系,来确定数据同步过程中的数据传播路径,例如,一个节点设备可以仅将数据发送给与自己具有关联关系的其他节点设备,再由该其他节点设备基于节点间的关联关系对该数据进行传播,以将数据同步至区块链***中的各个节点设备,从而,在达到数据广播效果的同时,避免区块链***中出现大量相同数据被复制、传输,降低区块链***中网络资源的占用。
在一种可能实现方式中,该节点设备中可以存储有与其具备关联关系的各个节点设备的节点标识,以记录节点设备之间的关联关系,其中,一个节点标识可以用于唯一地指示一个节点设备。当然,该区块链***中也可以包括一个数据管理节点设备,该数据管理节点设备可以存储有各个节点设备之间的关联关系,各个节点设备在进行数据同步之前,可以通过该数据管理节点设备查询与自己具有关联关系的节点设备,再执行数据发送的步骤。需要说明的是,本申请实施例对该关联关系的记录方式不作限定。在本申请实施例中,以节点设备中存储有与其具备关联关系的各个节点设备的节点标识为例进行说明。
在一种可能实现方式中,区块链***中的两个节点设备之间可以通过发送目标信息来建立关联关系,其中,该目标信息可以由开发人员进行设置,本申请实施例对此不作限定。当然,两个节点设备之间也可以通过其他方式建立关联关系,本申请实施例对此不作限定。在一种可能实现方式中,该关联关系可以为邻接关系等,本申请实施例对两个节点之间具有哪种关联关系不作具体限定。
需要说明的是,该节点设备可以与该区块链***中的至少一个其他节点设备具有关联关系,本申请实施例仅以与该节点设备具有关联关系的目标节点设备为例进行说明。
在一种可能实现方式中,该节点设备可以按照目标周期遍历同步数据列表,该同步数据列表用于记录各次数据同步过程中的最新同步数据,该节点设备可以基于该同步数据列表,将距离当前时刻最近的一次数据同步过程所对应的该最新同步数据,作为该目标数据。其中,该目标周期可以由开发人员进行设置,本申请实施例对此不作限定。在一种可能实现方式中,该同步数据列表可以表现为哈希表的形式,可以将该目标节点设备的节点标识作为该哈希表的关键字,该节点设备可以获取每次数据同步过程中最新同步数据的数据标识,将该数据标识在数据列表中的存储位置作为该哈希表的内容,该节点设备可以通过该哈希表来记录每次数据同步过程中的最新同步数据。其中,当该数据标识表现为数据编号时,该节点设备获取每次数据同步过程中最新同步数据的数据标识,也即是获取每次数据同步过程中数值最大的数据标识。在一种可能实现方式中,该哈希表中的各项数据可以携带有时间戳,该时间戳可以用于指示各次数据同步过程的开始时间,该节点设备可以基于该各次数据同步过程对应的时间戳,确定距离当前时刻最近的一次数据同步过程,进而确定该目标数据。当然,该节点设备也可以通过其他方式确定该目标数据,本申请实施例对此不作限定。
需要说明的是,哈希表仅是一种同步数据列表的表现形式,本申请实施例对该同步数据列表的具体形式不作限定。
在本申请实施例中,该同步数据列表仅记录各次数据同步过程中的最新同步数据,可以便于该节点设备对目标节点设备当前的数据同步情况进行查询,提高查询效率。
303、节点设备基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据。
其中,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量,其具体数值可以由开发人员进行设置。在本申请实施例中,各次数据同步过程所对应的该目标数值可以相同也可以不同,各个节点设备所对应的该目标数值可以相同也可以不同,本申请实施例对此不作限定。
在一种可能实现方式中,该节点设备可以基于该目标数据以及该目标数值,从该数据列表中确定至少一个数据,执行后续的数据同步步骤。在本申请实施例中,该节点设备可以对该至少一个数据进行筛选、去重,进而确定待同步数据。在一种可能实现方式中,上述步骤303具体可以包括以下步骤:
步骤一、节点设备基于该目标数据与目标数值,从未同步数据中确定至少一个候选数据。
在一种可能实现方式中,该节点设备可以确定该目标数据在数据列表中的第一存储位置,该数据列表存储有至少一个该已同步数据以及至少一个该未同步数据,该节点设备可以基于该第一存储位置以及该目标数值,在该数据列表中确定至少一个第二存储位置,获取该至少一个第二存储位置所存储的数据,作为该至少一个候选数据。图4是本申请实施例提供的一种待同步数据确定方法的示意图,参见图4,当该数据同步列表401表现为哈希表时,该节点设备可以基于该哈希表,确定该目标数据的数据标识在数据列表中的存储位置,作为该第一存储位置402,以该目标数值设置为3为例,该节点设备可以从该第一存储位置402的下一个位置403起,确定3个第二存储位置,读取该3个第二存储位置所对应的数据,即区域404中的数据,作为该候选数据。
步骤二、节点设备将该至少一个候选数据与该目标节点设备的数据同步记录进行对比,对该至少一个候选数据进行数据去重。
在一种可能实现方式中,该节点设备的交易池中可以维护有数据同步记录,该数据同步记录用于记录各次数据同步过程所同步的数据以及数据接收节点设备的节点标识。在一种可能实现方式中,一个节点设备可以对应于一个数据同步记录,以该目标节点设备对应的数据同步记录为例,该数据同步记录中可以存储有目标节点设备的节点标识,该节点设备与该目标节点设备之间互相同步的各个数据的数据标识。当然,该数据同步记录中还可以存储有其他信息,例如,各次数据同步过程的起止时间等,本身申请实施例对该数据同步记录的具体内容不作限定。
在一种可能实现方式中,该节点设备可以将各个候选数据的数据标识与该目标节点设备所对应的数据同步记录中的各个数据标识进行对比,基于对比结果进行数据去重,即去除候选数据中已经同步过的数据。
步骤三、节点设备将去重后的该至少一个候选数据确定为该至少一个待同步数据。
需要说明的是,上述对待同步数据获取方式的说明仅是一种示例性说明,本申请实施例对具体采用哪种方式获取待同步数据不作限定。
304、节点设备将该至少一个待同步数据发送给该目标节点设备。
在一种可能实现方式中,该节点设备可以将该至少一个待同步数据打包成一个消息,基于该目标节点设备的节点标识,将该消息发送给该目标节点设备。当然,该节点设备也可以将该至少一个待同步数据打包成其他数据格式,执行数据发送的步骤,本申请实施例对此不作限定。
本申请实施例提供的技术方案,通过从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系,基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量,将该至少一个待同步数据发送给该目标节点设备。节点设备之间通过点对点的方式批量同步数据,无需将数据广播给区块链网络中的各个节点设备,可以降低数据同步过程中的网络资源占用。
图5是本申请实施例提供的一种数据同步过程的示意图,参见图5,该节点设备可以遍历数据同步列表,即哈希表501,读取发送给目标节点设备的最新同步数据的数据标识对应的位置信息502,基于该位置信息502,从数据列表503的位置504开始,读取m个数据,即区域505中的数据,其中,m为正整数,其具体数值可以由开发人员进行设置,该节点设备可以基于该目标节点设备对应的数据同步记录506,查询m个数据中是否存在已经同步过的数据,如果有,则将其从这m个数据中过滤掉,将经过过滤后的数据打包成一个消息507,基于目标节点设备的节点标识,发送给该目标节点设备。在上述数据同步过程中,可以针对不同的节点设备进行批量同步数据,提高交易池中数据同步的效率,有效地利用网络资源,降低网络风暴的概率。
上述实施例主要介绍了节点设备将数据同步给目标节点设备的过程,在本申请实施例中,该节点设备完成数据同步之后,可以对该同步数据列表和该数据同步记录进行更新。
在一种可能实现方式中,该节点设备可以将本次数据同步过程中的最新同步数据存储至该同步数据列表中。以该同步数据列表为哈希表为例,参见图6,图6是本申请实施例提供的一种数据列表的示意图,当本次数据同步过程所同步的数据为该数据列表中的数据601、数据602和数据603时,该节点设备可以将数值最大的数据标识所对应的数据,即数据603,作为本次数据同步过程中的最新同步数据,该节点设备可以将该数据603的数据标识所对应的存储位置,写入该哈希表中。
在一种可能实现方式中,该节点设备可以基于该目标节点设备的节点标识以及该至少一个待同步数据,更新该目标节点设备的该数据同步记录。也即是,该节点设备可以将本次数据同步过程中所同步数据的数据标识等信息,写入目标节点设备所对应的数据同步记录中。
当然,该节点设备接收到其他节点设备同步的数据时,也可以对该数据同步记录进行更新。以接收到该目标节点设备同步的数据为例,在一种可能实现方式中,该节点设备可以将接收数据的数据标识等信息,写入该目标节点设备所对应的数据同步记录中。
上述所有可选技术方案,可以采用任意结合形成本申请的可选实施例,在此不再一一赘述。
图7是本申请实施例提供的一种数据同步装置的结构示意图,该数据同步装置可以是运行于计算机设备中的一个计算机程序(包括程序代码),例如该数据同步装置为一个应用软件;该装置可以用于执行本申请实施例提供的方法中的相应步骤。参见图7,该装置包括:
目标数据确定模块701,用于从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系;
待同步数据确定模块702,用于基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量;
发送模块703,用于将该至少一个待同步数据发送给该目标节点设备。
在一种可能实现方式中,该目标数据确定模块701用于:
按照目标周期遍历同步数据列表,该同步数据列表用于记录各次数据同步过程中的最新同步数据;
基于该同步数据列表,将距离当前时刻最近的一次数据同步过程所对应的该最新同步数据,作为该目标数据。
在一种可能实现方式中,该待同步数据确定模块702用于:
基于该目标数据与目标数值,从未同步数据中确定至少一个候选数据;
将该至少一个候选数据与该目标节点设备的数据同步记录进行对比,对该至少一个候选数据进行数据去重,该数据同步记录用于记录各次数据同步过程所同步的数据以及数据接收节点设备的节点标识;
将去重后的该至少一个候选数据确定为该至少一个待同步数据。
在一种可能实现方式中,该待同步数据确定模块702用于:
确定该目标数据在数据列表中的第一存储位置,该数据列表存储有至少一个该已同步数据以及至少一个该未同步数据;
基于该第一存储位置以及该目标数值,在该数据列表中确定至少一个第二存储位置;
获取该至少一个第二存储位置所存储的数据,作为该至少一个候选数据。
在一种可能实现方式中,该装置还包括:
更新模块,用于基于该目标节点设备的节点标识以及该至少一个待同步数据,更新该目标节点设备的该数据同步记录。
在一种可能实现方式中,该装置还包括:
标识获取模块,用于响应于任一数据的数据标记指令,从交易池中获取全局数据标识,该交易池用于存储该任一数据;
标识确定模块,用于将该全局数据标识作为该任一数据的数据标识。
在一种可能实现方式中,该装置还包括:
存储模块,用于基于该任一数据的数据标识的数值大小,将该任一数据以及该任一数据的数据标识,存储至该交易池的数据列表中。
本申请实施例提供的装置,通过从各个已同步数据中,确定目标数据,该已同步数据为该节点设备同步给目标节点设备的数据,该目标节点设备与该节点设备之间具有关联关系,基于该目标数据与目标数值,从未同步数据中确定至少一个待同步数据,该目标数值用于指示一次数据同步过程中获取该待同步数据的数据量,将该至少一个待同步数据发送给该目标节点设备。节点设备之间通过点对点的方式批量同步数据,无需将数据广播给区块链网络中的各个节点设备,可以降低数据同步过程中的网络资源占用。
需要说明的是:上述实施例提供的数据同步装置在数据同步时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的数据同步装置与数据同步方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述技术方案所提供的节点设备可以实现为终端或服务器,例如,图8是本申请实施例提供的一种终端的结构示意图。该终端800可以是:智能手机、平板电脑、MP3播放器(Moving Picture Experts Group Audio Layer III,动态影像专家压缩标准音频层面3)、MP4(Moving Picture Experts Group Audio Layer IV,动态影像专家压缩标准音频层面4)播放器、笔记本电脑或台式电脑。终端800还可能被称为用户设备、便携式终端、膝上型终端、台式终端等其他名称。
通常,终端800包括有:一个或多个处理器801和一个或多个存储器802。
处理器801可以包括一个或多个处理核心,比如4核心处理器、8核心处理器等。处理器801可以采用DSP(Digital Signal Processing,数字信号处理)、FPGA(Field-Programmable Gate Array,现场可编程门阵列)、PLA(Programmable Logic Array,可编程逻辑阵列)中的至少一种硬件形式来实现。处理器801也可以包括主处理器和协处理器,主处理器是用于对在唤醒状态下的数据进行处理的处理器,也称CPU(Central ProcessingUnit,中央处理器);协处理器是用于对在待机状态下的数据进行处理的低功耗处理器。在一些实施例中,处理器801可以在集成有GPU(Graphics Processing Unit,图像处理器),GPU用于负责显示屏所需要显示的内容的渲染和绘制。一些实施例中,处理器801还可以包括AI(Artificial Intelligence,人工智能)处理器,该AI处理器用于处理有关机器学习的计算操作。
存储器802可以包括一个或多个计算机可读存储介质,该计算机可读存储介质可以是非暂态的。存储器802还可包括高速随机存取存储器,以及非易失性存储器,比如一个或多个磁盘存储设备、闪存存储设备。在一些实施例中,存储器802中的非暂态的计算机可读存储介质用于存储至少一条程序代码,该至少一条程序代码用于被处理器801所执行以实现本申请中方法实施例提供的数据同步方法。
在一些实施例中,终端800还可选包括有:***设备接口803和至少一个***设备。处理器801、存储器802和***设备接口803之间可以通过总线或信号线相连。各个***设备可以通过总线、信号线或电路板与***设备接口803相连。具体地,***设备包括:射频电路804、显示屏805、摄像头组件806、音频电路807、定位组件808和电源809中的至少一种。
***设备接口803可被用于将I/O(Input/Output,输入/输出)相关的至少一个***设备连接到处理器801和存储器802。在一些实施例中,处理器801、存储器802和***设备接口803被集成在同一芯片或电路板上;在一些其他实施例中,处理器801、存储器802和***设备接口803中的任意一个或两个可以在单独的芯片或电路板上实现,本实施例对此不加以限定。
射频电路804用于接收和发射RF(Radio Frequency,射频)信号,也称电磁信号。射频电路804通过电磁信号与通信网络以及其他通信设备进行通信。射频电路804将电信号转换为电磁信号进行发送,或者,将接收到的电磁信号转换为电信号。可选地,射频电路804包括:天线***、RF收发器、一个或多个放大器、调谐器、振荡器、数字信号处理器、编解码芯片组、用户身份模块卡等等。射频电路804可以通过至少一种无线通信协议来与其它终端进行通信。该无线通信协议包括但不限于:城域网、各代移动通信网络(2G、3G、4G及5G)、无线局域网和/或WiFi(Wireless Fidelity,无线保真)网络。在一些实施例中,射频电路804还可以包括NFC(Near Field Communication,近距离无线通信)有关的电路,本申请对此不加以限定。
显示屏805用于显示UI(User Interface,用户界面)。该UI可以包括图形、文本、图标、视频及其它们的任意组合。当显示屏805是触摸显示屏时,显示屏805还具有采集在显示屏805的表面或表面上方的触摸信号的能力。该触摸信号可以作为控制信号输入至处理器801进行处理。此时,显示屏805还可以用于提供虚拟按钮和/或虚拟键盘,也称软按钮和/或软键盘。在一些实施例中,显示屏805可以为一个,设置终端800的前面板;在另一些实施例中,显示屏805可以为至少两个,分别设置在终端800的不同表面或呈折叠设计;在一些实施例中,显示屏805可以是柔性显示屏,设置在终端800的弯曲表面上或折叠面上。甚至,显示屏805还可以设置成非矩形的不规则图形,也即异形屏。显示屏805可以采用LCD(LiquidCrystal Display,液晶显示屏)、OLED(Organic Light-Emitting Diode,有机发光二极管)等材质制备。
摄像头组件806用于采集图像或视频。可选地,摄像头组件806包括前置摄像头和后置摄像头。通常,前置摄像头设置在终端的前面板,后置摄像头设置在终端的背面。在一些实施例中,后置摄像头为至少两个,分别为主摄像头、景深摄像头、广角摄像头、长焦摄像头中的任意一种,以实现主摄像头和景深摄像头融合实现背景虚化功能、主摄像头和广角摄像头融合实现全景拍摄以及VR(Virtual Reality,虚拟现实)拍摄功能或者其它融合拍摄功能。在一些实施例中,摄像头组件806还可以包括闪光灯。闪光灯可以是单色温闪光灯,也可以是双色温闪光灯。双色温闪光灯是指暖光闪光灯和冷光闪光灯的组合,可以用于不同色温下的光线补偿。
音频电路807可以包括麦克风和扬声器。麦克风用于采集用户及环境的声波,并将声波转换为电信号输入至处理器801进行处理,或者输入至射频电路804以实现语音通信。出于立体声采集或降噪的目的,麦克风可以为多个,分别设置在终端800的不同部位。麦克风还可以是阵列麦克风或全向采集型麦克风。扬声器则用于将来自处理器801或射频电路804的电信号转换为声波。扬声器可以是传统的薄膜扬声器,也可以是压电陶瓷扬声器。当扬声器是压电陶瓷扬声器时,不仅可以将电信号转换为人类可听见的声波,也可以将电信号转换为人类听不见的声波以进行测距等用途。在一些实施例中,音频电路807还可以包括耳机插孔。
定位组件808用于定位终端800的当前地理位置,以实现导航或LBS(LocationBased Service,基于位置的服务)。定位组件808可以是基于美国的GPS(GlobalPositioning System,全球定位***)、中国的北斗***、俄罗斯的格雷纳斯***或欧盟的伽利略***的定位组件。
电源809用于为终端800中的各个组件进行供电。电源809可以是交流电、直流电、一次性电池或可充电电池。当电源809包括可充电电池时,该可充电电池可以支持有线充电或无线充电。该可充电电池还可以用于支持快充技术。
在一些实施例中,终端800还包括有一个或多个传感器810。该一个或多个传感器810包括但不限于:加速度传感器811、陀螺仪传感器812、压力传感器813、指纹传感器814、光学传感器815以及接近传感器816。
加速度传感器811可以检测以终端800建立的坐标系的三个坐标轴上的加速度大小。比如,加速度传感器811可以用于检测重力加速度在三个坐标轴上的分量。处理器801可以根据加速度传感器811采集的重力加速度信号,控制显示屏805以横向视图或纵向视图进行用户界面的显示。加速度传感器811还可以用于游戏或者用户的运动数据的采集。
陀螺仪传感器812可以检测终端800的机体方向及转动角度,陀螺仪传感器812可以与加速度传感器811协同采集用户对终端800的3D动作。处理器801根据陀螺仪传感器812采集的数据,可以实现如下功能:动作感应(比如根据用户的倾斜操作来改变UI)、拍摄时的图像稳定、游戏控制以及惯性导航。
压力传感器813可以设置在终端800的侧边框和/或显示屏805的下层。当压力传感器813设置在终端800的侧边框时,可以检测用户对终端800的握持信号,由处理器801根据压力传感器813采集的握持信号进行左右手识别或快捷操作。当压力传感器813设置在显示屏805的下层时,由处理器801根据用户对显示屏805的压力操作,实现对UI界面上的可操作性控件进行控制。可操作性控件包括按钮控件、滚动条控件、图标控件、菜单控件中的至少一种。
指纹传感器814用于采集用户的指纹,由处理器801根据指纹传感器814采集到的指纹识别用户的身份,或者,由指纹传感器814根据采集到的指纹识别用户的身份。在识别出用户的身份为可信身份时,由处理器801授权该用户执行相关的敏感操作,该敏感操作包括解锁屏幕、查看加密信息、下载软件、支付及更改设置等。指纹传感器814可以被设置终端800的正面、背面或侧面。当终端800上设置有物理按键或厂商Logo时,指纹传感器814可以与物理按键或厂商Logo集成在一起。
光学传感器815用于采集环境光强度。在一个实施例中,处理器801可以根据光学传感器815采集的环境光强度,控制显示屏805的显示亮度。具体地,当环境光强度较高时,调高显示屏805的显示亮度;当环境光强度较低时,调低显示屏805的显示亮度。在另一个实施例中,处理器801还可以根据光学传感器815采集的环境光强度,动态调整摄像头组件806的拍摄参数。
接近传感器816,也称距离传感器,通常设置在终端800的前面板。接近传感器816用于采集用户与终端800的正面之间的距离。在一个实施例中,当接近传感器816检测到用户与终端800的正面之间的距离逐渐变小时,由处理器801控制显示屏805从亮屏状态切换为息屏状态;当接近传感器816检测到用户与终端800的正面之间的距离逐渐变大时,由处理器801控制显示屏805从息屏状态切换为亮屏状态。
本领域技术人员可以理解,图8中示出的结构并不构成对终端800的限定,可以包括比图示更多或更少的组件,或者组合某些组件,或者采用不同的组件布置。
图9是本申请实施例提供的一种服务器的结构示意图,该服务器900可因配置或性能不同而产生比较大的差异,可以包括一个或多个处理器(Central Processing Units,CPU)901和一个或多个的存储器902,其中,该一个或多个存储器902中存储有至少一条程序代码,该至少一条程序代码由该一个或多个处理器901加载并执行以实现上述各个方法实施例提供的方法。当然,该服务器900还可以具有有线或无线网络接口、键盘以及输入输出接口等部件,以便进行输入输出,该服务器900还可以包括其他用于实现设备功能的部件,在此不做赘述。
在示例性实施例中,还提供了一种计算机可读存储介质,例如包括至少一条程序代码的存储器,上述至少一条程序代码可由处理器执行以完成上述实施例中的数据同步方法。例如,该计算机可读存储介质可以是只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、只读光盘(Compact Disc Read-Only Memory,CD-ROM)、磁带、软盘和光数据存储设备等。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来至少一条程序代码相关的硬件完成,该程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
上述仅为本申请的可选实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (11)
1.一种数据同步方法,其特征在于,应用于区块链***中的节点设备,所述方法包括:
从各个已同步数据中,确定目标数据,所述已同步数据为所述节点设备同步给目标节点设备的数据,所述目标节点设备与所述节点设备之间具有关联关系;
确定所述目标数据在数据列表中的第一存储位置,所述数据列表存储有至少一个所述已同步数据以及至少一个未同步数据;
基于所述第一存储位置以及目标数值,在所述数据列表中确定至少一个第二存储位置,所述目标数值用于指示一次数据同步过程中获取待同步数据的数据量;
获取所述至少一个第二存储位置所存储的数据,作为至少一个候选数据;
将所述至少一个候选数据与所述目标节点设备的数据同步记录进行对比,对所述至少一个候选数据进行数据去重,所述数据同步记录用于记录各次数据同步过程所同步的数据以及数据接收节点设备的节点标识;
将去重后的所述至少一个候选数据确定为至少一个待同步数据;
将所述至少一个待同步数据发送给所述目标节点设备。
2.根据权利要求1所述的方法,其特征在于,所述从各个已同步数据中,确定目标数据,包括:
按照目标周期遍历同步数据列表,所述同步数据列表用于记录各次数据同步过程中的最新同步数据;
基于所述同步数据列表,将距离当前时刻最近的一次数据同步过程所对应的所述最新同步数据,作为所述目标数据。
3.根据权利要求1所述的方法,其特征在于,所述将所述至少一个待同步数据发送给所述目标节点设备之后,所述方法还包括:
基于所述目标节点设备的节点标识以及所述至少一个待同步数据,更新所述目标节点设备的所述数据同步记录。
4.根据权利要求1所述的方法,其特征在于,所述从各个已同步数据中,确定目标数据之前,所述方法还包括:
响应于任一数据的数据标记指令,从交易池中获取全局数据标识,所述交易池用于存储所述任一数据;
将所述全局数据标识作为所述任一数据的数据标识。
5.根据权利要求4所述的方法,其特征在于,所述将所述全局数据标识作为所述任一数据的数据标识之后,所述方法还包括:
基于所述任一数据的数据标识的数值大小,将所述任一数据以及所述任一数据的数据标识,存储至所述交易池的数据列表中。
6.一种数据同步装置,其特征在于,应用于区块链***中的节点设备,所述装置包括:
目标数据确定模块,用于从各个已同步数据中,确定目标数据,所述已同步数据为所述节点设备同步给目标节点设备的数据,所述目标节点设备与所述节点设备之间具有关联关系;
待同步数据确定模块,用于确定所述目标数据在数据列表中的第一存储位置,所述数据列表存储有至少一个所述已同步数据以及至少一个未同步数据;基于所述第一存储位置以及目标数值,在所述数据列表中确定至少一个第二存储位置,所述目标数值用于指示一次数据同步过程中获取待同步数据的数据量;获取所述至少一个第二存储位置所存储的数据,作为至少一个候选数据;将所述至少一个候选数据与所述目标节点设备的数据同步记录进行对比,对所述至少一个候选数据进行数据去重,所述数据同步记录用于记录各次数据同步过程所同步的数据以及数据接收节点设备的节点标识;将去重后的所述至少一个候选数据确定为至少一个待同步数据;
发送模块,用于将所述至少一个待同步数据发送给所述目标节点设备。
7.根据权利要求6所述的装置,其特征在于,所述目标数据确定模块用于:
按照目标周期遍历同步数据列表,所述同步数据列表用于记录各次数据同步过程中的最新同步数据;
基于所述同步数据列表,将距离当前时刻最近的一次数据同步过程所对应的所述最新同步数据,作为所述目标数据。
8.根据权利要求6所述的装置,其特征在于,所述装置还包括:
更新模块,用于基于所述目标节点设备的节点标识以及所述至少一个待同步数据,更新所述目标节点设备的所述数据同步记录。
9.根据权利要求6所述的装置,其特征在于,所述装置还包括:
标识获取模块,用于响应于任一数据的数据标记指令,从交易池中获取全局数据标识,所述交易池用于存储所述任一数据;
标识确定模块,用于将所述全局数据标识作为所述任一数据的数据标识。
10.一种计算机设备,其特征在于,所述计算机设备包括一个或多个处理器和一个或多个存储器,所述一个或多个存储器中存储有至少一条程序代码,所述至少一条程序代码由所述一个或多个处理器加载并执行以实现如权利要求1至权利要求5任一项所述的数据同步方法所执行的操作。
11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有至少一条程序代码,所述至少一条程序代码由处理器加载并执行以实现如权利要求1至权利要求5任一项所述的数据同步方法所执行的操作。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010015144.XA CN111241115B (zh) | 2020-01-07 | 2020-01-07 | 数据同步方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010015144.XA CN111241115B (zh) | 2020-01-07 | 2020-01-07 | 数据同步方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111241115A CN111241115A (zh) | 2020-06-05 |
CN111241115B true CN111241115B (zh) | 2022-02-22 |
Family
ID=70873009
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010015144.XA Active CN111241115B (zh) | 2020-01-07 | 2020-01-07 | 数据同步方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111241115B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112291356B (zh) * | 2020-11-02 | 2022-01-04 | 大连理工大学 | 基于cnfs协议的自验证可变名称分布式存储方法 |
CN112231414B (zh) * | 2020-12-14 | 2022-02-25 | 腾讯科技(深圳)有限公司 | 区块链***的数据同步方法、装置、可读介质及电子设备 |
CN113282660B (zh) * | 2021-05-24 | 2023-05-23 | 挂号网(杭州)科技有限公司 | 集群内数据的同步方法及***、电子设备、存储介质 |
CN114900538B (zh) * | 2022-03-28 | 2024-01-26 | 青岛海尔科技有限公司 | 智能镜子的控制方法和装置、存储介质及电子装置 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110365768A (zh) * | 2019-07-15 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 分布式***的数据同步方法、装置、介质、电子设备 |
CN110543448A (zh) * | 2019-07-22 | 2019-12-06 | 深圳壹账通智能科技有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
Family Cites Families (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN105554135B (zh) * | 2015-12-23 | 2019-03-05 | 北京奇虎科技有限公司 | 数据节点间同步元信息的方法及装置 |
US10102265B1 (en) * | 2017-04-12 | 2018-10-16 | Vijay K. Madisetti | Method and system for tuning blockchain scalability for fast and low-cost payment and transaction processing |
CN109634970B (zh) * | 2018-10-19 | 2024-05-03 | 平安科技(深圳)有限公司 | 表数据同步方法、设备、存储介质及装置 |
-
2020
- 2020-01-07 CN CN202010015144.XA patent/CN111241115B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN110365768A (zh) * | 2019-07-15 | 2019-10-22 | 腾讯科技(深圳)有限公司 | 分布式***的数据同步方法、装置、介质、电子设备 |
CN110543448A (zh) * | 2019-07-22 | 2019-12-06 | 深圳壹账通智能科技有限公司 | 数据同步方法、装置、设备及计算机可读存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN111241115A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111245745B (zh) | 消息发送方法、装置、节点设备及存储介质 | |
CN111339086B (zh) | 区块处理方法、基于区块链的数据查询方法及装置 | |
CN110674022B (zh) | 行为数据获取方法、装置及存储介质 | |
CN111241115B (zh) | 数据同步方法、装置、设备及存储介质 | |
CN111340482B (zh) | 冲突检测方法、装置、节点设备及存储介质 | |
CN108805560B (zh) | 数值整合方法、装置、电子设备及计算机可读存储介质 | |
CN110602206A (zh) | 基于区块链的数据共享方法、装置及存储介质 | |
CN110689460A (zh) | 基于区块链的交通事故数据处理方法、装置、设备及介质 | |
CN111414598B (zh) | 基于区块链的监控方法、装置、设备及存储介质 | |
CN110569220B (zh) | 游戏资源文件的展示方法、装置、终端及存储介质 | |
CN110555780B (zh) | 基于区块链的保险数据处理方法、装置、设备及存储介质 | |
CN110597924B (zh) | 基于区块链的用户标识处理方法、装置、设备及存储介质 | |
CN111339181B (zh) | 区块存储方法、装置、节点设备及存储介质 | |
CN110598879A (zh) | 基于区块链的垃圾回收方法、装置、设备及存储介质 | |
CN110826103A (zh) | 基于区块链的文档权限处理方法、装置、设备及存储介质 | |
CN111667371B (zh) | 基于区块链的资源聚合方法、***、设备及存储介质 | |
CN110769050B (zh) | 数据处理方法、数据处理***、计算机设备及存储介质 | |
CN110677262A (zh) | 基于区块链的信息公证方法、装置及*** | |
CN111881423A (zh) | 限制功能使用授权方法、装置、*** | |
CN110597840A (zh) | 基于区块链的伴侣关系建立方法、装置、设备及存储介质 | |
CN112995587B (zh) | 电子设备监控方法、***、计算机设备及存储介质 | |
CN110971692B (zh) | 开通服务的方法、装置及计算机存储介质 | |
CN110570123B (zh) | 基于区块链的资源信息管理方法、***及装置 | |
CN111191254A (zh) | 访问校验方法、装置、计算机设备及存储介质 | |
CN112749583A (zh) | 人脸图像分组方法、装置、计算机设备和存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024836 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |