数据处理方法、装置、系统、存储介质及处理器与流程

专利2022-06-30  69


本申请涉及数据存储技术领域,具体而言,涉及一种数据处理方法、装置、系统、存储介质及处理器。



背景技术:

数据库的存储技术在计算机的各个领域都有广泛的应用。

相关技术中进行数据存储时,通常会将数据存储在某一方所拥有的服务器上,这种存储方式存在如下缺陷:服务器的所有者拥有对全部存储数据的篡改权和删除权,能够随时、以任意方式删改数据,因而当数据需要在多方之间使用时,很难确保数据是可信的;由于数据存储在某一方的服务器上,因此数据存在因服务器的损坏等不可意料原因而丢失的可能性;由于数据是存储在某一方的服务器上,该服务器拥有者拥有了该数据,数据原本的所有者的隐私存在被侵犯的风险,尤其对于云计算而言,这是一个巨大的风险。

为了克服上述问题,相关技术会出现了采用区块链对数据进行存储的方式,但该存储方式存在如下问题:由于区块链的链状结构导致区块链无法存储大数据和多媒体数据,否则其区块大小会难以控制,会影响区块链全链可扩展性;由于区块链的链状结构,导致区块链的数据存取效率差,具体地,由于打包过程的存在,区块链数据存储难以用于高速的写入和快速读取;在实际应用过程中,由于数据量过大,通常将数据存在线下,仅将数据的校验存储在区块链中,区块链中区块存在不确定性,区块链无法保证数据本身不会丢失,存在线下的数据有丢失的风险。

针对相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题,目前尚未提出有效的解决方案。



技术实现要素:

本申请提供一种数据处理方法、装置、系统、存储介质及处理器,以解决相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题。

根据本申请的一个方面,提供了一种数据处理方法。该方法包括:通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件。

可选地,该方法还包括:通过服务节点将读请求消息发送至多个存储节点,其中,读请求消息用于请求读取写入的目标键值对应的目标键值项;获取多个存储节点基于目标键值查询得到的多个目标键值项;对多个目标键值项进行比较,并根据比较结果确定可信的目标键值项。

可选地,存储节点将查询得到的目标键值项封装为读请求响应消息,对多个目标键值项进行比较,确定可信的目标键值项包括:在服务节点验证读请求响应消息的签名正确的情况下,根据简单多数原则,从多个读请求响应消息中的目标键值项确定出确定可信的目标键值项。

可选地,判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息包括:在写请求消息中包含的目标写入节点的公钥为合法节点公钥,且验证写请求消息中的签名正确的情况下,判断存储节点中是否存在请求写入的目标键值;在存在目标键值的情况下,确定第一写请求确认消息,其中,第一写请求确认消息的写入状态为:目标键值已被占用;在不存在目标键值的情况下,确定第二写请求确认消息,其中,第二写请求确认消息的写入状态为:写入成功。

可选地,由监管节点监听并判断消息队列中的消息是否满足预设节点条件包括:判断写请求消息中的目标写入节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断写请求确认消息中的存储节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断区块消息中的打包节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;和/或,判断目标写入节点发送写请求消息的频率是否超过第一预设频率,在超过第一预设频率的情况下,断开该节点与消息队列的连接;判断存储节点发送写请求确认消息的频率是否超过第二预设频率,在超过第二预设频率的情况下,断开该节点与消息队列的连接;判断打包节点发送区块消息的频率是否超过第三预设频率,在超过第三预设频率的情况下,断开该节点与消息队列的连接。

可选地,该方法还包括:在服务节点将写请求消息发送至消息队列后,确定进入写请求已提交的状态;和/或,在服务节点监听到消息队列中的写请求确认消息后,确定进入写请求已确认的状态;和/或,在服务节点监听到消息队列中包含写请求确认消息的区块消息后,确定进入写请求已最终确认的状态。

可选地,在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:将打包节点的注册信息发送至消息队列;在验证注册信息有效的情况下通过监管节点更新集群配置信息,并将集群配置信息发送至消息队列,集群配置信息至少包括打包顺序和打包时间间隔;在集群配置信息中包含的公钥属于监管节点,且集群配置信息的签名验证通过的情况下,执行通过打包节点将写请求消息和写请求确认消息打包成区块消息的步骤。

可选地,在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:判断写请求消息对应的目标写入节点和/或写请求确认消息对应的存储节点是否为有效节点;在目标写入节点和/或存储节点为有效节点的情况下,验证写请求消息中的签名是否正确,和/或验证写请求确认消息中的签名是否正确;在写请求消息中的签名正确的情况下,将写请求消息添加到打包节点的消息池中,和/或,在写请求确认消息中的签名正确的情况下,将写请求确认消息添加到打包节点的消息池中。

可选地,通过打包节点将写请求消息和写请求确认消息打包成区块消息包括:基于打包顺序和打包时间间隔确定预设时间段内每个打包节点对应的时隙;每个打包节点在对应的时隙中从消息池中选取预设数量的消息进行打包,得到多个区块消息。

可选地,该方法还包括:在打包节点在对应的时隙中未完成打包的情况下,确定该打包节点打包失败;在打包节点打包失败的次数超过预设次数的情况下,通过监管节点剔除该打包节点,并更新集群配置信息。

可选地,该方法还包括:在监听到消息队列中的目标区块消息后,目标打包节点验证目标区块消息的有效性,并在有效的情况下解析目标区块消息得到目标写请求消息和目标写请求确认消息;检测目标打包节点的消息池中是否存在目标写请求消息和目标写请求确认消息;在存在的情况下,将目标写请求消息和目标写请求确认消息从目标打包节点的消息池中移除。

根据本申请的另一方面,提供了一种数据处理系统。该系统包括:服务层,服务层中包含多个服务节点,用于发起写入请求和读取请求,其中,写入请求用于请求将目标事务写入存储节点,读取请求用于为从存储节点中读取目标事务;存储层,存储层中包含多个打包节点,用于将写请求消息、写请求确认消息打包成区块消息,其中,写请求消息表征写入节点请求将目标事务写入存储节点,写请求确认消息表征存储节点中是否已存储目标事务;存储节点,用于存储区块消息;监管节点,用于监督存储层中的节点的准入和节点的退出,并监督将数据写入存储节点的情况以及从存储节点中读取数据的情况。

可选地,存储层还包括:消息队列,用于缓存数据写入过程中产生的关联消息,其中,关联消息至少包括:写请求消息、写请求确认消息和区块消息;通信网络,用于为服务节点和存储节点在读取数据时提供通信。

根据本申请的另一方面,提供了一种数据处理装置。该装置包括:第一发送单元,用于通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断单元,用于判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;打包单元,用于在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;存储单元,用于在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件。

为了实现上述目的,根据本申请的另一方面,提供了一种存储介质,存储介质包括存储的程序,其中,程序执行上述任意一种数据处理方法。

为了实现上述目的,根据本申请的另一方面,提供了一种处理器,处理器用于运行程序,其中,程序运行时执行上述任意一种数据处理方法。

通过本申请,采用以下步骤:通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件,解决了相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题。通过将区块消息存储在存储节点,并在存储中采用监管节点进行监管,进而达到了提高数据读写的安全性和读写效率的效果。

附图说明

构成本申请的一部分的附图用来提供对本申请的进一步理解,本申请的示意性实施例及其说明用于解释本申请,并不构成对本申请的不当限定。在附图中:

图1是根据本申请实施例提供的数据处理方法的流程图;

图2是根据本申请实施例提供的数据处理系统的示意图;以及

图3是根据本申请实施例提供的数据处理装置的示意图。

具体实施方式

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。下面将参考附图并结合实施例来详细说明本申请。

为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分的实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。

需要说明的是,本申请的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。应该理解这样使用的数据在适当情况下可以互换,以便这里描述的本申请的实施例。此外,术语“包括”和“具有”以及他们的任何变形,意图在于覆盖不排他的包含,例如,包含了一系列步骤或单元的过程、方法、系统、产品或设备不必限于清楚地列出的那些步骤或单元,而是可包括没有清楚地列出的或对于这些过程、方法、产品或设备固有的其它步骤或单元。

根据本申请的实施例,提供了一种数据处理方法。

图1是根据本申请实施例的数据处理方法的流程图。如图1所示,该方法包括以下步骤:

步骤s101,通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点。

需要说明的是,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点,写请求消息中包含要写入的目标键值(k的值),目标键值项(v的值),写入节点的id,写入节点的公钥,以及写入节点对该消息的签名。

步骤s102,判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列。

具体地,在存储节点已存储请求写入的内容的情况下,说明的存储节点已被相同的数据占用,得到相应的请求确认消息,在存储节点未存储请求写入的内容的情况下,说明的存储节点可以存储该数据,得到相应的请求确认消息。

可选地,在本申请实施例提供的数据处理方法中,判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息包括:在写请求消息中包含的目标写入节点的公钥为合法节点公钥,且验证写请求消息中的签名正确的情况下,判断存储节点中是否存在请求写入的目标键值;在存在目标键值的情况下,确定第一写请求确认消息,其中,第一写请求确认消息的写入状态为:目标键值已被占用;在不存在目标键值的情况下,确定第二写请求确认消息,其中,第二写请求确认消息的写入状态为:写入成功。

具体地,存储节点收到写请求消息之后,先把其中的公钥与本地存储的合法节点公钥进行比对,判断是否是有效节点,如果不是,则不处理这条消息;如果是有效节点,则利用该公钥验证写请求消息中的签名是否正确,如果不正确,则不处理这条消息。

如果签名正确,则判断写请求消息中的k值在本地是否已经存在,如果存在则发送写请求确认消息到消息队列,该写请求确认消息包括写请求消息以及该存储节点的公钥、该存储节点对写请求确认消息的签名和写入状态,即“k已被占用”。

如果写请求消息中的k值在本地存储中不存在,则发送写请求确认消息到消息队列,写请求确认消息包括写请求消息以及该存储节点的公钥、该存储节点对写请求确认消息的签名和写入状态,即“写入成功”。

步骤s103,在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列。

具体地,打包节点通过监听消息队列来获取写请求消息和写请求确认消息,在确定写请求消息和写请求确认消息满足监管节点设置的预设节点条件之后,将写请求消息和写请求确认消息放入打包节点的消息池,打包节点在规定的时间内,按照由监管节点规定好的顺序对消息进行打包,具体地,从消息池中选取消息,加入到区块之中,完成创建区块,并发布创建好的区块。

步骤s104,在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件。

具体地,存储节点通过监听消息队列获取区块消息,在确定区块消息满足监管节点设置的预设节点条件之后,先对消息验证消息签名,在消息签名验证通过的情况下,对区块消息中的区块进行本地存储。

本申请实施例提供的数据处理方法,通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件,解决了相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题。通过将区块消息存储在存储节点,并在存储中采用监管节点进行监管,进而达到了提高数据读写的安全性和读写效率的效果。

在写入数据后,可以对存储节点中的数据进行读取,可选地,在本申请实施例提供的数据处理方法中,该方法还包括:通过服务节点将读请求消息发送至多个存储节点,其中,读请求消息用于请求读取写入的目标键值对应的目标键值项;获取多个存储节点基于目标键值查询得到的多个目标键值项;对多个目标键值项进行比较,并根据比较结果确定可信的目标键值项。

需要说明的是,服务节点把读请求消息通过点对点网络直接发送给每一个存储节点,每个存储节点基于读请求消息执行数据查询工作,其中,读请求消息中包含要读取的k的值,写入节点的id,写入节点的公钥,以及写入节点对该消息的签名。

为了读取到可信的数据,可选地,在本申请实施例提供的数据处理方法中,存储节点将查询得到的目标键值项封装为读请求响应消息,对多个目标键值项进行比较,确定可信的目标键值项包括:在服务节点验证读请求响应消息的签名正确的情况下,根据简单多数原则,从多个读请求响应消息中的目标键值项确定出确定可信的目标键值项。

需要说明的是,每一个存储节点收到读请求消息之后,先进行消息签名的验证,再根据消息之中的k值查询本地的存储中k所对应的v的值,并将查询到的v值组成读请求响应消息,对其进行签名之后,回复给服务节点。

服务节点收到存储节点回复的读请求响应消息之后,依次对读请求响应消息验证消息签名,验签通过后对所有读请求响应消息中的v值进行比较,通过简单多数原则,获取到可信的v值。

通过本实施例,将数据采用多副本存储的方式存储在多个存储节点中,并对获取的多个数据进行比较,避免了只存于一个存储节点,数据出现异常导致读取不准确的问题。

为了维护节点集群中的节点的合法性和稳定性,可选地,在本申请实施例提供的数据处理方法中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件包括:判断写请求消息中的目标写入节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断写请求确认消息中的存储节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断区块消息中的打包节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;和/或,判断目标写入节点发送写请求消息的频率是否超过第一预设频率,在超过第一预设频率的情况下,断开该节点与消息队列的连接;判断存储节点发送写请求确认消息的频率是否超过第二预设频率,在超过第二预设频率的情况下,断开该节点与消息队列的连接;判断打包节点发送区块消息的频率是否超过第三预设频率,在超过第三预设频率的情况下,断开该节点与消息队列的连接。

需要说明的是,监管节点通过监听消息队列来获取写请求消息、写请求确认消息以及区块消息,并对消息进行监听,具体地,在消息中的公钥是否属于已经注册的节点的情况下,以及发起频率超过了监管节点的限制的情况下,监管节点强制断开相应的节点与消息队列的连接。

在读写数据的过程中写入请求的状态随之变化,可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在服务节点将写请求消息发送至消息队列后,确定进入写请求已提交的状态;和/或,在服务节点监听到消息队列中的写请求确认消息后,确定进入写请求已确认的状态;和/或,在服务节点监听到消息队列中包含写请求确认消息的区块消息后,确定进入写请求已最终确认的状态。

需要说明的是,服务节点是写流程的发起者,服务节点根据消息队列中的消息的变化,可以不断更新写入请求的状态的变化。

在打包前,需要确定相应的打包节点和打包规则,可选地,在本申请实施例提供的数据处理方法中,在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:将打包节点的注册信息发送至消息队列;在验证注册信息有效的情况下通过监管节点更新集群配置信息,并将集群配置信息发送至消息队列,集群配置信息至少包括打包顺序和打包时间间隔;在集群配置信息中包含的公钥属于监管节点,且集群配置信息的签名验证通过的情况下,执行通过打包节点将写请求消息和写请求确认消息打包成区块消息的步骤。

具体地,打包节点向消息队列中发送注册消息,注册消息包括打包节点自身的公钥、id和可使用的资源,如硬盘,cpu,内存等的状况。

监管节点通过订阅消息队列获取打包节点的注册消息,先验证消息的有效性,再根据集群中已有的打包节点状态和资源情况重新分配打包节点的打包顺序,形成新的集群配置信息,发送到消息队列,集群配置信息中除了节点打包顺序,打包时间间隔,还包括当前区块高度,集群中打包节点信息等。

在打包前,需要确定消息对应的节点的有效性以及消息的签名的正确性,可选地,在本申请实施例提供的数据处理方法中,在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:判断写请求消息对应的目标写入节点和/或写请求确认消息对应的存储节点是否为有效节点;在目标写入节点和/或存储节点为有效节点的情况下,验证写请求消息中的签名是否正确,和/或验证写请求确认消息中的签名是否正确;在写请求消息中的签名正确的情况下,将写请求消息添加到打包节点的消息池中,和/或,在写请求确认消息中的签名正确的情况下,将写请求确认消息添加到打包节点的消息池中。

具体地,打包节点先对消息的公钥进行验证,再对签名进行验证,如果验证成功,打包节点开始监听消息队列,来获取写请求消息、写请求确认消息和区块消息,并将消息添加到打包节点的消息池中,等待打包。

其中,对消息的公钥进行验证包括,将写请求消息中包含的目标写入节点的公钥,以及写请求确认节点中包含的存储节点的公钥与打包节点中存储的合法节点公钥进行对比,并基于对比结果判断目标写入节点和存储节点是否为有效节点,在为有效节点的情况下,基于目标写入节点的公钥验证写请求消息中的签名是否正确,基于存储节点的公钥验证写请求确认消息中的签名是否正确。

可选地,在本申请实施例提供的数据处理方法中,通过打包节点将写请求消息和写请求确认消息打包成区块消息包括:基于打包顺序和打包时间间隔确定预设时间段内每个打包节点对应的时隙;每个打包节点在对应的时隙中从消息池中选取预设数量的消息进行打包,得到多个区块消息。

需要说明的是,监管节点把预设时间切分成等长的时隙,根据打包节点的资源状况,如硬盘,cpu,内存状况,把这些时隙分配给每一个打包节点来进行打包区块。

此外,每个区块还包含上一个时隙产生区块的hash,本区块的hash,区块产生的时间戳,以及打包节点的公钥以及用公钥对应私钥的对本区块hash的签名。

为了提高打包效率,可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在打包节点在对应的时隙中未完成打包的情况下,确定该打包节点打包失败;在打包节点打包失败的次数超过预设次数的情况下,通过监管节点剔除该打包节点,并更新集群配置信息。

需要说明的是,每个打包节点必须在监管节点规定的时隙内完成区块的打包,并把打包完成的区块构建成区块消息发送到消息队列之中。如果一个打包节点没能在规定时隙内完成打包,下一个打包节点则开始进行区块打包,监管节点会将没能完成打包任务的节点记录为打包失败,如果一个打包节点在一段连续的时间内出现规定次数的打包失败,则被认为是不合格的打包节点,监管节点会把不合格的打包节点踢出,重新对集群配置信息中的打包顺序和打包时隙进行配置。

为了避免多个打包节点对相同的消息进行打包,可选地,在本申请实施例提供的数据处理方法中,该方法还包括:在监听到消息队列中的目标区块消息后,目标打包节点验证目标区块消息的有效性,并在有效的情况下解析目标区块消息得到目标写请求消息和目标写请求确认消息;检测目标打包节点的消息池中是否存在目标写请求消息和目标写请求确认消息;在存在的情况下,将目标写请求消息和目标写请求确认消息从目标打包节点的消息池中移除。

需要说明的是,其他打包节点通过监听消息队列来获得打包好的区块。收到区块之后,首先通过区块高度、区块hash等、签名等信息验证区块的有效性,如果区块有效,则把区块内包含的消息写请求消息以及写请求确认消息从本地的“写请求消息池”中移除。通过本实施例,避免多个打包节点重复打包占用资源。

图2是根据本申请实施例的数据处理系统的示意图。如图2所示,该系统包括:

服务层,服务层中包含多个服务节点,用于发起写入请求和读取请求,其中,写入请求用于请求将目标事务写入存储节点,读取请求用于为从存储节点中读取目标事务。

具体地,服务节点通过发送写请求消息来发起写入请求,写请求消息包括写入的键值对信息、键值对信息的签名、写入节点的公钥、写入节点的签名。服务节点通过发送读请求消息来发起读取请求,读取请求对应一条读请求消息,包括要读取的k的值,写入节点的id,写入节点的公钥,以及写入节点对该消息的签名。

此外,需要说明的是,服务层一方面可以与存储节点进行交互,另一方面还可以与外界的接入层进行交互,具体地,通过服务节点与接入层中的多个接入设备进行交互。

存储层,存储层中包含多个打包节点,用于将写请求消息、写请求确认消息打包成区块消息,其中,写请求消息表征写入节点请求将目标事务写入存储节点,写请求确认消息表征存储节点中是否已存储目标事务。

具体地,在打包的过程中,打包节点按照自身实体相关优先的原则选取需要打包的事务消息,并将选取的事务消息打包成区块消息。需要说明的是,区块内的事务数量不超过上线,例如1000条,每一个区块内包含上一个区块的hash、区块的创建时间、戳事务信息、区块创建节点(打包节点)的公钥、区块创建节点(打包节点)的签名。

存储节点,用于存储区块消息。

具体地,存储节点的底层可以采用rockdb支持,每个存储节点提供多种范围查询的功能。

在存储数据时,存储节点可以获取打包节点打包好的区块,对区块的有效性进行验证并对有效区块进行存储,还可以与服务层的服务节点进行交互,此外,在存储节点加入或退出存储层时,对其中存储的区块进行重新分配。

监管节点,用于监督存储层中的节点的准入和节点的退出,并监督将数据写入存储节点的情况以及从存储节点中读取数据的情况。

具体地,在节点准入方面,监管节点负责合法节点的授信、非法节点的剔除,在节点退出方面,监管节点负责节点正常退出处理、节点异常退出处理。

数据写入方面,监管节点负责异常写入行为的监督(具体包括写入请求异常、写入确认异常)、正常写入行为的监督、区块有效性校验,具体地,在对区块有效性校验时,发现错误的区块之后对创建区块的打包节点进行评估,在评估为失败节点或者恶意节点后,把该节点剔除出块序列并调整打包顺序。

在数据读取方面,监管节点负责异常读取行为的监督(具体包括读取请求异常、读取响应异常)、正常读取行为的监督。

可选地,在本申请实施例提供的数据处理系统中,存储层还包括:消息队列,用于缓存数据写入过程中产生的关联消息,其中,关联消息至少包括:写请求消息、写请求确认消息和区块消息;通信网络,用于为服务节点和存储节点在读取数据时提供通信。

需要说明的是,节点间通过通信网络和独立于业务方的消息队列建立通信机制,具体地,消息队列作为向存储节点写入数据时的通信媒介,提高了写入的安全性,通信网络作为从存储节点读取数据时的通信媒介,例如,可以为p2p网络,提高了读取的效率。

在向存储节点写入数据时,各个节点将数据写入过程中产生的关联消息发送至消息队列,各个节点还通过订阅消息队列来获取事务信息。

例如,打包节点在创建区块后,对创建好的区块进行序列化,把序列化之后的区块发布到消息队列之中,存储节点通过订阅消息队列来获得序列化之后的区块,获得区块之后进行反序列化,之后对区块的有效性进行验证,在验证通过的情况下进行区块的存储。

本申请实施例提供的数据处理系统,通过服务层,服务层中包含多个服务节点,用于发起写入请求和读取请求,其中,写入请求用于请求将目标事务写入存储节点,读取请求用于为从存储节点中读取目标事务;存储层,存储层中包含多个打包节点,用于将写请求消息、写请求确认消息打包成区块消息,其中,写请求消息表征写入节点请求将目标事务写入存储节点,写请求确认消息表征存储节点中是否已存储目标事务;存储节点,用于存储区块消息;监管节点,用于监督存储层中的节点的准入和节点的退出,并监督将数据写入存储节点的情况以及从存储节点中读取数据的情况,解决了相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题,通过将区块消息存储在存储节点,并在存储中采用监管节点进行监管,进而达到了提高数据读写的安全性和读写效率的效果。

需要说明的是,在附图的流程图示出的步骤可以在诸如一组计算机可执行指令的计算机系统中执行,并且,虽然在流程图中示出了逻辑顺序,但是在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤。

本申请实施例还提供了一种数据处理装置,需要说明的是,本申请实施例的数据处理装置可以用于执行本申请实施例所提供的用于数据处理方法。以下对本申请实施例提供的数据处理装置进行介绍。

图3是根据本申请实施例的数据处理装置的示意图。如图3所示,该装置包括:第一发送单元10、判断单元20、打包单元30和存储单元40。

具体地,第一发送单元10,用于通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点。

判断单元20,用于判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列。

打包单元30,用于在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列。

存储单元40,用于在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件。

本申请实施例提供的数据处理装置,通过第一发送单元10,用于通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断单元20,用于判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;打包单元30,用于在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;存储单元40,用于在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件,解决了相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题,通过将区块消息存储在存储节点,并在存储中采用监管节点进行监管,进而达到了提高数据读写的安全性和读写效率的效果。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括:第二发送单元,用于通过服务节点将读请求消息发送至多个存储节点,其中,读请求消息用于请求读取写入的目标键值对应的目标键值项;获取单元,用于获取多个存储节点基于目标键值查询得到的多个目标键值项;比较单元,用于对多个目标键值项进行比较,并根据比较结果确定可信的目标键值项。

可选地,在本申请实施例提供的数据处理装置中,存储节点将查询得到的目标键值项封装为读请求响应消息,比较单元包括:第一确定模块,用于在服务节点验证读请求响应消息的签名正确的情况下,根据简单多数原则,从多个读请求响应消息中的目标键值项确定出确定可信的目标键值项。

可选地,在本申请实施例提供的数据处理装置中,判断单元20包括:第一判断模块,用于在写请求消息中包含的目标写入节点的公钥为合法节点公钥,且验证写请求消息中的签名正确的情况下,判断存储节点中是否存在请求写入的目标键值;第二确定模块,用于在存在目标键值的情况下,确定第一写请求确认消息,其中,第一写请求确认消息的写入状态为:目标键值已被占用;第三确定模块,用于在不存在目标键值的情况下,确定第二写请求确认消息,其中,第二写请求确认消息的写入状态为:写入成功。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括监管单元,用于通过监管节点监听并判断消息队列中的消息是否满足预设节点条件,监管单元包括:第二判断模块,用于判断写请求消息中的目标写入节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;第三判断模块,用于判断写请求确认消息中的存储节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;第四判断模块,用于判断区块消息中的打包节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;和/或,第五判断模块,用于判断目标写入节点发送写请求消息的频率是否超过第一预设频率,在超过第一预设频率的情况下,断开该节点与消息队列的连接;第六判断模块,用于判断存储节点发送写请求确认消息的频率是否超过第二预设频率,在超过第二预设频率的情况下,断开该节点与消息队列的连接;第七判断模块,用于判断打包节点发送区块消息的频率是否超过第三预设频率,在超过第三预设频率的情况下,断开该节点与消息队列的连接。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括:第一确定单元,用于在服务节点将写请求消息发送至消息队列后,确定进入写请求已提交的状态;和/或,第二确定单元,用于在服务节点监听到消息队列中的写请求确认消息后,确定进入写请求已确认的状态;和/或,第三确定单元,用于在服务节点监听到消息队列中包含写请求确认消息的区块消息后,确定进入写请求已最终确认的状态。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括:第三发送单元,用于在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,将打包节点的注册信息发送至消息队列;更新单元,用于在验证注册信息有效的情况下通过监管节点更新集群配置信息,并将集群配置信息发送至消息队列,集群配置信息至少包括打包顺序和打包时间间隔;执行单元,用于在集群配置信息中包含的公钥属于监管节点,且集群配置信息的签名验证通过的情况下,执行通过打包节点将写请求消息和写请求确认消息打包成区块消息的步骤。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括:有效节点判断单元,用于判断写请求消息对应的目标写入节点和/或写请求确认消息对应的存储节点是否为有效节点;第一验证单元,用于在目标写入节点和/或存储节点为有效节点的情况下,验证写请求消息中的签名是否正确,和/或验证写请求确认消息中的签名是否正确;添加单元,用于在写请求消息中的签名正确的情况下,将写请求消息添加到打包节点的消息池中,和/或,在写请求确认消息中的签名正确的情况下,将写请求确认消息添加到打包节点的消息池中。

可选地,在本申请实施例提供的数据处理装置中,打包单元包括:第四确定模块,用于基于打包顺序和打包时间间隔确定预设时间段内每个打包节点对应的时隙;选取模块,用于通过每个打包节点在对应的时隙中从消息池中选取预设数量的消息进行打包,得到多个区块消息。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括:第五确定模块,用于在打包节点在对应的时隙中未完成打包的情况下,确定该打包节点打包失败;更新模块,用于在打包节点打包失败的次数超过预设次数的情况下,通过监管节点剔除该打包节点,并更新集群配置信息。

可选地,在本申请实施例提供的数据处理装置中,该装置还包括:第二验证单元,用于在监听到消息队列中的目标区块消息后,通过目标打包节点验证目标区块消息的有效性,并在有效的情况下解析目标区块消息得到目标写请求消息和目标写请求确认消息;检测单元,用于检测目标打包节点的消息池中是否存在目标写请求消息和目标写请求确认消息;移除单元,用于在存在的情况下,将目标写请求消息和目标写请求确认消息从目标打包节点的消息池中移除。

数据处理装置包括处理器和存储器,上述第一发送单元10、判断单元20、打包单元30和存储单元40等均作为程序单元存储在存储器中,由处理器执行存储在存储器中的上述程序单元来实现相应的功能。

处理器中包含内核,由内核去存储器中调取相应的程序单元。内核可以设置一个或以上,通过调整内核参数来解决相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram),存储器包括至少一个存储芯片。

本发明实施例提供了一种存储介质,其上存储有程序,该程序被处理器执行时实现数据处理方法。

本发明实施例提供了一种处理器,处理器用于运行程序,其中,程序运行时执行数据处理方法。

本发明实施例提供了一种设备,设备包括处理器、存储器及存储在存储器上并可在处理器上运行的程序,处理器执行程序时实现以下步骤:通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件。

该方法还包括:通过服务节点将读请求消息发送至多个存储节点,其中,读请求消息用于请求读取写入的目标键值对应的目标键值项;获取多个存储节点基于目标键值查询得到的多个目标键值项;对多个目标键值项进行比较,并根据比较结果确定可信的目标键值项。

存储节点将查询得到的目标键值项封装为读请求响应消息,对多个目标键值项进行比较,确定可信的目标键值项包括:在服务节点验证读请求响应消息的签名正确的情况下,根据简单多数原则,从多个读请求响应消息中的目标键值项确定出确定可信的目标键值项。

判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息包括:在写请求消息中包含的目标写入节点的公钥为合法节点公钥,且验证写请求消息中的签名正确的情况下,判断存储节点中是否存在请求写入的目标键值;在存在目标键值的情况下,确定第一写请求确认消息,其中,第一写请求确认消息的写入状态为:目标键值已被占用;在不存在目标键值的情况下,确定第二写请求确认消息,其中,第二写请求确认消息的写入状态为:写入成功。

由监管节点监听并判断消息队列中的消息是否满足预设节点条件包括:判断写请求消息中的目标写入节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断写请求确认消息中的存储节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断区块消息中的打包节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;和/或,判断目标写入节点发送写请求消息的频率是否超过第一预设频率,在超过第一预设频率的情况下,断开该节点与消息队列的连接;判断存储节点发送写请求确认消息的频率是否超过第二预设频率,在超过第二预设频率的情况下,断开该节点与消息队列的连接;判断打包节点发送区块消息的频率是否超过第三预设频率,在超过第三预设频率的情况下,断开该节点与消息队列的连接。

该方法还包括:在服务节点将写请求消息发送至消息队列后,确定进入写请求已提交的状态;和/或,在服务节点监听到消息队列中的写请求确认消息后,确定进入写请求已确认的状态;和/或,在服务节点监听到消息队列中包含写请求确认消息的区块消息后,确定进入写请求已最终确认的状态。

在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:将打包节点的注册信息发送至消息队列;在验证注册信息有效的情况下通过监管节点更新集群配置信息,并将集群配置信息发送至消息队列,集群配置信息至少包括打包顺序和打包时间间隔;在集群配置信息中包含的公钥属于监管节点,且集群配置信息的签名验证通过的情况下,执行通过打包节点将写请求消息和写请求确认消息打包成区块消息的步骤。

在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:判断写请求消息对应的目标写入节点和/或写请求确认消息对应的存储节点是否为有效节点;在目标写入节点和/或存储节点为有效节点的情况下,验证写请求消息中的签名是否正确,和/或验证写请求确认消息中的签名是否正确;在写请求消息中的签名正确的情况下,将写请求消息添加到打包节点的消息池中,和/或,在写请求确认消息中的签名正确的情况下,将写请求确认消息添加到打包节点的消息池中。

通过打包节点将写请求消息和写请求确认消息打包成区块消息包括:基于打包顺序和打包时间间隔确定预设时间段内每个打包节点对应的时隙;每个打包节点在对应的时隙中从消息池中选取预设数量的消息进行打包,得到多个区块消息。

该方法还包括:在打包节点在对应的时隙中未完成打包的情况下,确定该打包节点打包失败;在打包节点打包失败的次数超过预设次数的情况下,通过监管节点剔除该打包节点,并更新集群配置信息。

该方法还包括:在监听到消息队列中的目标区块消息后,目标打包节点验证目标区块消息的有效性,并在有效的情况下解析目标区块消息得到目标写请求消息和目标写请求确认消息;检测目标打包节点的消息池中是否存在目标写请求消息和目标写请求确认消息;在存在的情况下,将目标写请求消息和目标写请求确认消息从目标打包节点的消息池中移除。本文中的设备可以是服务器、pc、pad、手机等。

本申请还提供了一种计算机程序产品,当在数据处理设备上执行时,适于执行初始化有如下方法步骤的程序:通过服务节点将写请求消息发送至消息队列,其中,写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点,其中,由监管节点监听并判断消息队列中的消息是否满足预设节点条件。

该方法还包括:通过服务节点将读请求消息发送至多个存储节点,其中,读请求消息用于请求读取写入的目标键值对应的目标键值项;获取多个存储节点基于目标键值查询得到的多个目标键值项;对多个目标键值项进行比较,并根据比较结果确定可信的目标键值项。

存储节点将查询得到的目标键值项封装为读请求响应消息,对多个目标键值项进行比较,确定可信的目标键值项包括:在服务节点验证读请求响应消息的签名正确的情况下,根据简单多数原则,从多个读请求响应消息中的目标键值项确定出确定可信的目标键值项。

判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息包括:在写请求消息中包含的目标写入节点的公钥为合法节点公钥,且验证写请求消息中的签名正确的情况下,判断存储节点中是否存在请求写入的目标键值;在存在目标键值的情况下,确定第一写请求确认消息,其中,第一写请求确认消息的写入状态为:目标键值已被占用;在不存在目标键值的情况下,确定第二写请求确认消息,其中,第二写请求确认消息的写入状态为:写入成功。

由监管节点监听并判断消息队列中的消息是否满足预设节点条件包括:判断写请求消息中的目标写入节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断写请求确认消息中的存储节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;判断区块消息中的打包节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与消息队列的连接;和/或,判断目标写入节点发送写请求消息的频率是否超过第一预设频率,在超过第一预设频率的情况下,断开该节点与消息队列的连接;判断存储节点发送写请求确认消息的频率是否超过第二预设频率,在超过第二预设频率的情况下,断开该节点与消息队列的连接;判断打包节点发送区块消息的频率是否超过第三预设频率,在超过第三预设频率的情况下,断开该节点与消息队列的连接。

该方法还包括:在服务节点将写请求消息发送至消息队列后,确定进入写请求已提交的状态;和/或,在服务节点监听到消息队列中的写请求确认消息后,确定进入写请求已确认的状态;和/或,在服务节点监听到消息队列中包含写请求确认消息的区块消息后,确定进入写请求已最终确认的状态。

在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:将打包节点的注册信息发送至消息队列;在验证注册信息有效的情况下通过监管节点更新集群配置信息,并将集群配置信息发送至消息队列,集群配置信息至少包括打包顺序和打包时间间隔;在集群配置信息中包含的公钥属于监管节点,且集群配置信息的签名验证通过的情况下,执行通过打包节点将写请求消息和写请求确认消息打包成区块消息的步骤。

在通过打包节点将写请求消息和写请求确认消息打包成区块消息之前,该方法还包括:判断写请求消息对应的目标写入节点和/或写请求确认消息对应的存储节点是否为有效节点;在目标写入节点和/或存储节点为有效节点的情况下,验证写请求消息中的签名是否正确,和/或验证写请求确认消息中的签名是否正确;在写请求消息中的签名正确的情况下,将写请求消息添加到打包节点的消息池中,和/或,在写请求确认消息中的签名正确的情况下,将写请求确认消息添加到打包节点的消息池中。

通过打包节点将写请求消息和写请求确认消息打包成区块消息包括:基于打包顺序和打包时间间隔确定预设时间段内每个打包节点对应的时隙;每个打包节点在对应的时隙中从消息池中选取预设数量的消息进行打包,得到多个区块消息。

该方法还包括:在打包节点在对应的时隙中未完成打包的情况下,确定该打包节点打包失败;在打包节点打包失败的次数超过预设次数的情况下,通过监管节点剔除该打包节点,并更新集群配置信息。

该方法还包括:在监听到消息队列中的目标区块消息后,目标打包节点验证目标区块消息的有效性,并在有效的情况下解析目标区块消息得到目标写请求消息和目标写请求确认消息;检测目标打包节点的消息池中是否存在目标写请求消息和目标写请求确认消息;在存在的情况下,将目标写请求消息和目标写请求确认消息从目标打包节点的消息池中移除。

本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。

这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。

这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。

在一个典型的配置中,计算设备包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。

存储器可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flashram)。存储器是计算机可读介质的示例。

计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。

还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括要素的过程、方法、商品或者设备中还存在另外的相同要素。

本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、cd-rom、光学存储器等)上实施的计算机程序产品的形式。

以上仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。


技术特征:

1.一种数据处理方法,其特征在于,包括:

通过服务节点将写请求消息发送至消息队列,其中,所述写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;

判断所述存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将所述写请求确认消息发送至所述消息队列;

在所述写请求消息和所述写请求确认消息满足预设节点条件的情况下,通过打包节点将所述写请求消息和所述写请求确认消息打包成区块消息,并将所述区块消息发送至所述消息队列;

在所述区块消息满足所述预设节点条件的情况下,将所述区块消息存储至多个所述存储节点,其中,由监管节点监听并判断所述消息队列中的消息是否满足所述预设节点条件。

2.根据权利要求1的方法,其特征在于,该方法还包括:

通过所述服务节点将读请求消息发送至多个所述存储节点,其中,所述读请求消息用于请求读取写入的所述目标键值对应的所述目标键值项;

获取多个所述存储节点基于所述目标键值查询得到的多个所述目标键值项;

对多个所述目标键值项进行比较,并根据比较结果确定可信的目标键值项。

3.根据权利要求2的方法,其特征在于,所述存储节点将查询得到的所述目标键值项封装为读请求响应消息,对多个所述目标键值项进行比较,并根据比较结果确定可信的目标键值项包括:

在所述服务节点验证所述读请求响应消息的签名正确的情况下,根据简单多数原则,从多个所述读请求响应消息中的所述目标键值项确定出确定可信的目标键值项。

4.根据权利要求1的方法,其特征在于,判断所述存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息包括:

在所述写请求消息中包含的所述目标写入节点的公钥为合法节点公钥,且验证所述写请求消息中的签名正确的情况下,判断所述存储节点中是否存在请求写入的所述目标键值;

在存在所述目标键值的情况下,确定第一写请求确认消息,其中,所述第一写请求确认消息的写入状态为:所述目标键值已被占用;

在不存在所述目标键值的情况下,确定第二写请求确认消息,其中,所述第二写请求确认消息的写入状态为:写入成功。

5.根据权利要求1的方法,其特征在于,由所述监管节点监听并判断所述消息队列中的消息是否满足所述预设节点条件包括:

判断所述写请求消息中的所述目标写入节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与所述消息队列的连接;

判断所述写请求确认消息中的所述存储节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与所述消息队列的连接;

判断所述区块消息中的所述打包节点是否为已注册节点,在不是已注册节点的情况下,断开该节点与所述消息队列的连接;

和/或,判断所述目标写入节点发送所述写请求消息的频率是否超过第一预设频率,在超过所述第一预设频率的情况下,断开该节点与所述消息队列的连接;

判断所述存储节点发送所述写请求确认消息的频率是否超过第二预设频率,在超过所述第二预设频率的情况下,断开该节点与所述消息队列的连接;

判断所述打包节点发送所述区块消息的频率是否超过第三预设频率,在超过所述第三预设频率的情况下,断开该节点与所述消息队列的连接。

6.根据权利要求1的方法,其特征在于,该方法还包括:

在所述服务节点将所述写请求消息发送所述至消息队列后,确定进入写请求已提交的状态;

和/或,在所述服务节点监听到所述消息队列中的所述写请求确认消息后,确定进入写请求已确认的状态;

和/或,在所述服务节点监听到所述消息队列中包含所述写请求确认消息的所述区块消息后,确定进入写请求已最终确认的状态。

7.根据权利要求1的方法,其特征在于,在通过打包节点将所述写请求消息和所述写请求确认消息打包成区块消息之前,该方法还包括:

将所述打包节点的注册信息发送至所述消息队列;

在验证所述注册信息有效的情况下通过所述监管节点更新集群配置信息,并将所述集群配置信息发送至所述消息队列,所述集群配置信息至少包括打包顺序和打包时间间隔;

在所述集群配置信息中包含的公钥属于所述监管节点,且所述集群配置信息的签名验证通过的情况下,执行通过打包节点将所述写请求消息和所述写请求确认消息打包成区块消息的步骤。

8.根据权利要求7的方法,其特征在于,在通过打包节点将所述写请求消息和所述写请求确认消息打包成区块消息之前,该方法还包括:

判断所述写请求消息对应的所述目标写入节点和/或所述写请求确认节点对应的所述存储节点是否为有效节点;

在所述目标写入节点和/或所述存储节点为有效节点的情况下,验证所述写请求消息中的签名是否正确,和/或验证所述写请求确认消息中的签名是否正确;

在所述写请求消息中的签名正确的情况下,将所述写请求消息添加到所述打包节点的消息池中,和/或,在所述写请求确认消息中的签名正确的情况下,将所述写请求确认消息添加到所述打包节点的所述消息池中。

9.根据权利要求8的方法,其特征在于,通过打包节点将所述写请求消息和所述写请求确认消息打包成区块消息包括:

基于所述打包顺序和所述打包时间间隔确定预设时间段内每个所述打包节点对应的时隙;

每个所述打包节点在对应的时隙中从所述消息池中选取预设数量的消息进行打包,得到多个所述区块消息。

10.根据权利要求9的方法,其特征在于,该方法还包括:

在所述打包节点在对应的时隙中未完成打包的情况下,确定该打包节点打包失败;

在打包节点打包失败的次数超过预设次数的情况下,通过所述监管节点剔除该打包节点,并更新所述集群配置信息。

11.根据权利要求8的方法,其特征在于,该方法还包括:

在监听到所述消息队列中的目标区块消息后,目标打包节点验证目标区块消息的有效性,并在有效的情况下解析所述目标区块消息,得到目标写请求消息和目标写请求确认消息;

检测所述目标打包节点的所述消息池中是否存在所述目标写请求消息和所述目标写请求确认消息;

在存在的情况下,将所述目标写请求消息和所述目标写请求确认消息从所述目标打包节点的所述消息池中移除。

12.一种数据处理系统,其特征在于,包括:

服务层,服务层中包含多个服务节点,用于发起写入请求和读取请求,其中,所述写入请求用于请求将目标事务写入存储节点,所述读取请求用于为从所述存储节点中读取所述目标事务;

存储层,存储层中包含多个打包节点,用于将写请求消息、写请求确认消息打包成区块消息,其中,所述写请求消息表征写入节点请求将所述目标事务写入所述存储节点,所述写请求确认消息表征所述存储节点中是否已存储所述目标事务;

存储节点,用于存储所述区块消息;

监管节点,用于监督节点的准入和节点的退出,并监督将数据写入所述存储节点的情况以及从所述存储节点中读取数据的情况。

13.根据权利要求12的系统,其特征在于,存储层还包括:

消息队列,用于缓存数据写入过程中产生的关联消息,其中,所述关联消息至少包括:所述写请求消息、所述写请求确认消息和所述区块消息;

通信网络,用于为所述服务节点和所述存储节点在读取数据时提供通信。

14.一种数据处理装置,其特征在于,包括:

第一发送单元,用于通过服务节点将写请求消息发送至消息队列,其中,所述写请求消息表征目标写入节点请求将目标键值和目标键值项写入存储节点;

判断单元,用于判断所述存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将所述写请求确认消息发送至所述消息队列;

打包单元,用于在所述写请求消息和所述写请求确认消息满足预设节点条件的情况下,通过打包节点将所述写请求消息和所述写请求确认消息打包成区块消息,并将所述区块消息发送至所述消息队列;

存储单元,用于在所述区块消息满足所述预设节点条件的情况下,将所述区块消息存储至多个所述存储节点,其中,由监管节点监听并判断所述消息队列中的消息是否满足所述预设节点条件。

15.一种存储介质,其特征在于,存储介质包括存储的程序,其中,程序执行权利要求1至11中任意一项的数据处理方法。

16.一种处理器,其特征在于,处理器用于运行程序,其中,程序运行时执行权利要求1至11中任意一项的数据处理方法。

技术总结
本申请公开了一种数据处理方法、装置、系统、存储介质及处理器。该方法包括:通过服务节点将写请求消息发送至消息队列;判断存储节点是否已存储请求写入的内容,基于判断结果确定写请求确认消息,并将写请求确认消息发送至消息队列;在写请求消息和写请求确认消息满足预设节点条件的情况下,通过打包节点将写请求消息和写请求确认消息打包成区块消息,并将区块消息发送至消息队列;在区块消息满足预设节点条件的情况下,将区块消息存储至多个存储节点。通过本申请,解决了相关技术中的在数据存储系统中进行数据读写时,难以兼顾数据读写的安全性和数据读写效率的问题。

技术研发人员:尚德重;焦臻桢
受保护的技术使用者:深圳物缘科技有限公司
技术研发日:2019.12.30
技术公布日:2020.06.05

转载请注明原文地址: https://bbs.8miu.com/read-55407.html

最新回复(0)