基于区块链的数据分发系统和方法
文献发布时间:2024-04-18 20:01:23
技术领域
本发明涉及电力能源技术领域,尤其涉及一种基于区块链的数据分发系统和方法。
背景技术
随着新型电力系统不断发展,电力数据分发的安全性和效率正成为提高电网运行效率和可靠性的重要部分。
相关技术中,基于传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)和命名数据网络NDN的数据分发平台存在数据分发效率较低的问题。因此如何进行改进以实现高效准确地进行电力数据的分发是本领域技术人员亟需解决的技术问题。
发明内容
针对现有技术中的问题,本发明实施例提供一种基于区块链的数据分发系统和方法。
具体地,本发明实施例提供了以下技术方案:
第一方面,本发明实施例提供了一种基于区块链的数据分发系统,包括:
NDN网络子系统和区块链子系统;
其中,NDN网络子系统和区块链子系统连接;
区块链子系统用于存储电力数据发布者的公钥信息;
NDN网络子系统用于存储电力数据发布者提交的数据包并向电力数据请求者发布所请求的数据包;数据包中携带区块链信息;区块链信息用于指示公钥信息在区块链子系统中的存储位置。
进一步地,区块链子系统具体用于:
接收电力数据发布者的注册请求;注册请求中携带公钥信息;
响应于注册请求,存储公钥信息并将公钥信息在区块链子系统中的存储位置发送至电力数据发布者。
进一步地,NDN网络子系统还用于:
确定多个缓存数据的价值;缓存数据的价值是基于历史时段中缓存数据的查询次数、缓存数据与数据源的距离确定的;数据源包括NDN网络子系统的数据缓存节点或数据发布节点;
根据各个缓存数据的价值,确定各个缓存数据的抽样概率;
根据各个缓存数据的抽样概率,确定抽样的缓存数据,对抽样的缓存数据进行校验。
进一步地,历史时段中缓存数据的查询次数基于如下方式确定:
其中,
进一步地,根据各个缓存数据的价值,确定各个缓存数据的抽样概率,包括:
将所有缓存数据的价值相加,得到目标价值;
将各个缓存数据的价值分别除以目标价值,得到各个缓存数据的抽样概率。
进一步地,NDN网络子系统还用于:
基于马尔科夫链模型,确定是否将接收到的数据包与缓存中的数据包进行替换;马尔科夫链模型基于如下方式建立:
{S,A,M(s
其中,S表示缓存中的数据包状态;A表示对缓存中的数据包执行替换的动作;M(s
第二方面,本发明实施例还提供了一种基于区块链的数据分发方法,包括:
存储电力数据发布者提交的数据包并向电力数据请求者发布所请求的数据包;数据包中携带区块链信息;区块链信息用于指示电力数据发布者的公钥信息在区块链子系统中的存储位置。
第三方面,本发明实施例还提供了一种电子设备,包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述程序时实现如第二方面所述基于区块链的数据分发方法。
第四方面,本发明实施例还提供了一种非暂态计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现如第二方面所述基于区块链的数据分发方法。
第五方面,本发明实施例还提供了一种计算机程序产品,包括计算机程序,所述计算机程序被处理器执行时实现如第二方面所述基于区块链的数据分发方法。
本发明实施例提供的基于区块链的数据分发系统和方法中,NDN子系统存储和分发的数据包中携带的区块链信息指示了电力数据发布者的公钥信息在区块链子系统中的存储位置,使得电力数据请求者获得NDN网络分发的数据包之后,就可以根据数据包中携带的区块链信息从区块链子系统中获取到公钥信息,进而根据公钥也就可以对获取到的数据包进行验证。本申请实施例通过改造原有的数据包,基于区块链进行数据校验,提高了数据校验的效率,实现了基于NDN子系统和区块链子系统的电力数据的高效、准确、安全的分发,有效地提升了电力数据分发和校验的效率。
附图说明
为了更清楚地说明本发明或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例提供的基于区块链的数据分发系统的结构示意图;
图2是本发明实施例提供的基于区块链的数据分发系统进行数据分发的示意图;
图3是本发明实施例提供的改造后的数据包的结构示意图;
图4是本发明实施例提供的基于区块链进行数据验证的流程示意图;
图5是本发明实施例提供的缓存更替方法的示意图;
图6是本发明实施例提供的数据包平均往返时延随缓存大小变化的示意图;
图7是本发明实施例提供的缓存命中率随往返时延变化的示意图;
图8是本发明实施例提供的网络最大吞吐率随缓存空间变化的示意图;
图9是本发明实施例提供的电子设备的结构示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚,下面将结合本发明中的附图,对本发明中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例的方法可以应用于电力数据的分发场景中,通过改造原有的数据包,基于区块链进行数据校验,提高了数据校验的效率,实现了基于NDN子系统和区块链子系统的电力数据的高效、准确、安全的分发,有效地提升了电力数据分发和校验的效率。
相关技术中,基于传输控制协议/网际协议(Transmission Control Protocol/Internet Protocol,TCP/IP)和命名数据网络NDN的数据分发平台存在数据分发效率较低的问题。因此如何进行改进以实现高效准确地进行电力数据的分发是本领域技术人员亟需解决的技术问题。
本发明实施例的基于区块链的数据分发系统中,NDN子系统存储和分发的数据包中携带的区块链信息指示了电力数据发布者的公钥信息在区块链子系统中的存储位置,使得电力数据请求者获得NDN网络分发的数据包之后,就可以根据数据包中携带的区块链信息从区块链子系统中获取到公钥信息,进而根据公钥也就可以对获取到的数据包进行验证。本申请实施例通过改造原有的数据包,基于区块链进行数据校验,提高了数据校验的效率,实现了基于NDN子系统和区块链子系统的电力数据的高效、准确、安全的分发,有效地提升了电力数据分发和校验的效率。
下面结合图1-图9以具体的实施例对本发明的技术方案进行详细说明。下面这几个具体的实施例可以相互结合,对于相同或相似的概念或过程可能在某些实施例不再赘述。
图1是本发明实施例提供的基于区块链的数据分发系统的结构示意图。如图1所示,本实施例提供的方法,包括:
NDN子系统和区块链子系统;
其中,NDN子系统和区块链子系统连接;
区块链子系统用于存储电力数据发布者的公钥信息;
NDN子系统用于存储电力数据发布者提交的数据包并向电力数据请求者发布所请求的数据包;数据包中携带区块链信息;区块链信息用于指示公钥信息在区块链子系统中的存储位置。
具体地,现有技术中基于TCP/IP协议的数据分发平台存在数据分发效率较低的问题。为了解决上述问题,本申请提供了一种基于区块链的数据分发系统,包括相互连接的NDN子系统和区块链子系统。其中,NDN是一种新型的网络架构,它将数据的名称作为网络的核心以替代现有的基于IP地址的互联网架构。区块链使用去中心化的分布式数据库存储数据的哈希值和签名信息,可以提高数据的安全性和可靠性。可选地,在电力数据请求者请求电力数据时,区块链子系统就可以向电力数据请求者发送改造后的数据包;其中,NDN数据包的改造是整个数据处理过程的准备步骤,是整个NDN数据分发平台的基础改造;数据包中携带的区块链信息指示了电力数据发布者的公钥信息在区块链子系统中的存储位置,使得电力数据请求者根据改造后的数据包也就可以从区块链子系统中获取到公钥信息,进而根据公钥也就可以对获取到的数据包进行验证,基于NDN子系统和区块链子系统也就实现了电力数据的高效、准确、安全的分发,有效地提升了电力数据分发的效率。
示例性的,图1为本申请实施例提供的基于区块链的数据分发系统的结构示意图,包括:
区块链子系统和NDN子系统;其中,区块链子系统作为去中心化的数据账本,具有不可篡改的特性,利用区块链技术来取代NDN关于密钥数据包的证书链迭代验证,其不可篡改性和智能合约能够在保障可信的同时提高验证效率。区块链中存储着数据发布者的公钥,数据验证时根据数据包新增加的区块链信息BlockchainInfo字段找到对应的区块,公钥区块中包含信任域唯一标识、公钥哈希值、包括生成时间戳和版本在内的群公钥元数据以及验证说明。
NDN子系统是系统的网络传输平台,负责进行数据包的获取、分发、以及验证,电力数据发布者/电力数据请求者接入NDN网络,并在NDN网络之间进行数据传输,NDN网络会根据指定的转发规则进行路由,命中缓存或命中数据发布者后通过相反路径返回至数据请求者,途经的节点根据缓存策略决定是否进行数据包的缓存,同时,NDN节点将定期的检查缓存中的数据包的完整性,防止数据包的篡改。
电力数据发布者/电力数据请求者是NDN网络的真正使用者,电力数据请求者将接入最近的NDN节点请求数据。电力数据发布者/电力数据请求者接入后,能够被其余请求者路由到。电力数据请求者收到回传的数据包后,通过数据包中的区块链信息BlockchainInfo字段从区块链获取数据发布者的公钥,进而能够通过公钥进行数据校验。电力数据的合法发布者具有一个或多个名称以及一个或更多个公钥和私钥对。同时,电力数据发布者在发布数据前,需要进行上链注册,返回生成区块的深度,同时在数据包内附上区块深度以便检索。示例性的,基于区块链的数据分发系统进行电力数据分发的具体流程如图2所示。
可选地,在NDN网络中,所有数据都是以数据包的形式进行传递的,现有技术中的传统的数据包的结构包括:
Name:Name字段是NDN数据包的名称,是数据包全局唯一的标签,也是NDN网络中进行路由寻址的关键。
MetaInfo:MetaInfo字段包括ContentType、FreshnessPeriod、FinalBlockId字段。ContentType表明了数据包的内容种类:Blob,普通数据包。Key,密钥包。Nack,应用层Nack包。FreshnessPeriod:数据包的过期时间。
FinalBlockId:数据包分段标识。
Content:数据包的内容部分。
DataSignature:包括了发送方对数据包的签名。
SignatureType保存了签名的种类。
KeyLocator则指向了另一个包含了密钥数据的数据包,一般情况下需要进一步发送兴趣包进行获得。
传统NDN的验证流程依赖于预设的信任锚,NDN数据包中key locator字段指向了上一层密钥,用户可以通过迭代发送数据兴趣包进行密钥数据包的获取,直到到达信任锚。密钥数据包与普通数据包一样能够被中间节点缓存,因此,对密钥数据包的获取不需要走到源发布者。但是,公钥数据包将挤占内容数据包的空间,带来通信效率的折损,同时迭代获取密钥数据包花销时间和通信成本较高,若想验证某数据对象来源真实性与内容完整性,需要不断遍历证书链中不同实体的公钥信息直至到达信任锚点。数据请求者接收到数据后,首先验证数据的签名以确保数据的完整性和真实性。如果签名验证失败,则数据被视为不可信,不被进一步处理。如果签名验证成功,则数据被认为是可信的,可以进一步处理和使用。
可选地,本申请实施例中改造后的数据包的结构如图3所示,包括:
Name:数据包的唯一标识符;
MetaInfo:数据包的内容类,此时将不再需要密钥数据包。
Content:密数据包的内容,即数据发布者公钥。
区块链信息Blockchaininfo:指向了数据发布者注册时的唯一区块,区块中存储了数据发布者公钥哈希以及其余的身份信息。改造后的数据包由于引入了区块链,密钥数据包不再需要迭代查询证书链。因此key locator字段不再需要指向上一层证书链,取而代之的是指向了数据发布者注册时的区块。
DataSignature:数据摘要。
HopCount:用于记录数据源(数据缓存者以及数据发布者)距当前节点的距离,HopCount较大的数据包表明距离上一缓存地点距离较大,可以降低网络缓存的冗余,使缓存空间的利用更加充分。如此,数据包的大小得到了改善,降低了网络的负载,同时减少了数据交互的次数,提高了网络传输的效率。
可选地,本申请实施例中NDN子系统存储和分发的数据包为改造后的数据包,改造后的数据包中携带的区块链信息指示了电力数据发布者的公钥信息在区块链子系统中的存储位置,使得电力数据请求者根据区块链信息也就可以从区块链子系统中获取到公钥信息,进而根据公钥也就可以对获取到的数据包进行验证,基于NDN子系统和区块链子系统也就实现了电力数据的高效、准确、安全的分发,有效地提升了电力数据分发的效率。
例如,如图4所示,在基于区块链的数据验证中,用户不再迭代的遍历证书链以验证公钥,而是根据数据发布者提供的区块链信息(块深度)找到相对应的公钥进行验证。数据请求者收到数据包后将根据发布者给出的区块信息查找区块链,并获得相对应的公钥。用此公钥再进行数据包完整性的验证,验证合格后转交应用。
上述实施例的系统,NDN子系统存储和分发的数据包中携带的区块链信息指示了电力数据发布者的公钥信息在区块链子系统中的存储位置,使得电力数据请求者获得NDN网络分发的数据包之后,就可以根据数据包中携带的区块链信息从区块链子系统中获取到公钥信息,进而根据公钥也就可以对获取到的数据包进行验证。本申请实施例通过改造原有的数据包,基于区块链进行数据校验,提高了数据校验的效率,实现了基于NDN子系统和区块链子系统的电力数据的高效、准确、安全的分发,有效地提升了电力数据分发和校验的效率。
在一实施例中,区块链子系统具体用于:
接收电力数据发布者的注册请求;注册请求中携带公钥信息;
响应于注册请求,存储公钥信息并将公钥信息在区块链子系统中的存储位置发送至电力数据发布者。
具体地,本申请实施例中区块链子系统用于存储电力数据发布者的公钥信息;可选地,电力数据发布者上链注册的过程中,可以将电力数据发布者的公钥信息上链至区块链子系统;也就是区块链子系统首先接收电力数据发布者发送的携带公钥信息的注册请求,然后响应于电力数据发布者的注册请求,在区块链子系统中存储电力数据发布者的公钥信息,从而实现了电力数据发布者将公钥数据固化上链,并对外提供其发布的数据名与公钥信息,将电力数据发布者的公钥信息在区块链子系统中的存储位置发送至电力数据发布者;电力数据请求者得到兴趣包对应的数据包后,不再发送密钥兴趣包来获得对应的密钥数据包,而是访问区块链获取公钥进行数据的验证,节省了遍历证书链带来的公钥验证流程,提升了公钥验证的效率。
例如,假定数据发布者有了上层设备认可的密钥,数据发布者想要发布对应的数据需要身份认证,即保证数据来源可靠,为了证明用户公钥的真实性,不使用网站对用户公钥进行签名的方式,而是使用区块链来存储用户的公钥。数据发布者将自身信息(包含公钥)注册至区块链,新生成的公钥区块中包含信任域唯一标识、用户公钥哈希值、包括生成时间戳等,数据上链之后即完成了身份的注册,成为电力数据的合法发布者,同时注册成功将返回区块的哈希以及区块深度,以便快速检索区块。也就是借助区块链存储数据发布者的公钥信息,从而节省遍历证书链带来的公钥验证流程,电力数据发布者将公钥数据固化上链,并对外提供其发布的数据名与公钥信息;电力数据请求者得到兴趣包对应的数据包后,不再发送密钥兴趣包来获得对应的密钥数据包,而是访问区块链。
上述实施例的系统,区块链子系统通过接收携带公钥信息的注册请求,并在区块链子系统中存储电力数据发布者的公钥信息,从而实现了电力数据发布者将公钥数据固化上链,并对外提供其发布的数据名与公钥信息;电力数据请求者得到兴趣包对应的数据包后,不再发送密钥兴趣包来获得对应的密钥数据包,而是访问区块链获取公钥进行数据的验证,节省了遍历证书链带来的公钥验证流程,提升了公钥验证的效率。
在一实施例中,NDN子系统还用于:
确定多个缓存数据的价值;缓存数据的价值是基于历史时段中缓存数据的查询次数、缓存数据与数据源的距离确定的;数据源包括NDN子系统的数据缓存节点或数据发布节点;
根据各个缓存数据的价值,确定各个缓存数据的抽样概率;
根据各个缓存数据的抽样概率,确定抽样的缓存数据,对抽样的缓存数据进行校验。
具体地,由于数据的校验需要消耗NDN网络节点的算力资源,在网络负载过高时,不能对所有的数据进行校验,但是为了防止网络中可能存在的数据安全问题,本申请在NDN网络中使用抽样校验的方法,对适当比例的数据内容进行数据校验。
目前RSA算法是NDN中常用的内容签名与验证算法,这种非对称的加密算法对内容的保护能力依赖密钥长度,密钥越长则安全性越强,但带来的负面效应就是签名验证时需要消耗大量的计算资源。由于路由节点的计算资源有限,当接收数据流量较大时,节点无法完成所有接收数据包的校验。同时,加入缓存的数据不应该存在被篡改或是虚假的内容,否则将极大影响网络效率。
因此,本申请实施例中结合数据校验与缓存的要求,只对加入缓存的数据进行校验。本申请实施例中缓存的替换是由数据价值决定,价值大的数据将有更高概率入缓存,同理也会有更高概率进行数据校验。尽管数据的存入校验保证了数据的本地可靠,但是本地的数据依然会被篡改,因此,需要定期的进行本地数据的校验。对于价值高的数据,其被篡改的影响也更大,因此,对于价值高的数据,需要有更高的概率被抽取检测,同时,节点算力资源有限,需要进行间隔抽样。
可选地,本申请实施例中基于历史时段中缓存数据的查询次数、缓存数据与数据源的距离确定缓存数据的价值。可选地,缓存数据在历史时段中缓存数据的查询次数越大,缓存数据与数据源的距离越大,则该缓存数据的价值也就越大,该缓存数据存在安全问题时对网络的影响也就越大。
可选地,本申请实施例中,数据包的时间特性,历史的请求次数在当前决策中被考虑进来,定义历史记录中请求次数的平均值(历史时段中缓存数据的查询次数)
同时,对于节点本身与数据源之间的位置,则希望节点尽可能的远离数据源,以便远端能够通过该节点获得数据。因此,定义缓存D的价值:
B
也就是本申请在数据抽样过程中定义了数据的价值,反映了数据时间上的特征,同时,在数据包中多加了hop_count字段,记录了该数据条目与上一个数据源的位置信息,hop_count字段越大,则表示距离上一跳的越远,表明这条数据远离了上一个数据源,也更加值得被抽样。也就是缓存数据的价值需要根据数据的历史请求以及地理位置综合对数据项进行判断。在任意时刻,缓存价值越高,代表缓存项在时间/空间方面具有良好的价值。因此在本申请实施的高效的抽检策略中,抽检更高价值的缓存数据,不仅实现了对高价值的缓存数据的抽样校验,提升了网络安全,而且解决了对所有的数据进行校验导致的网络负载过高的问题,有效的降低了NDN网络节点的算力资源的消耗。
可选地,在确定各个缓存数据的价值V
例如,设t时刻进行一次数据抽样,其缓存数据为:
D={d
对应的缓存价值为:
V={v
设抽样总数为N
则未被抽样数为
当前的抽样总数
N
每轮抽样过程将以抽样概率P
其中V
同时,为了防止抽样数目过小,需要设定抽样数目的最小值为预设的抽样最小值N
示例性的,基于如下脚本确定抽样的缓存数据,以实现对缓存数据的校验。
输入:样本数N
simple select//选择样本;
1、初始化curr_simple_list为样本数组,unsimpled_list=data_list;
2、while(curr_simple_list.size()<N
3、for data in unsimpled_list;
4、计算加入样本的概率P
5、if选择加入样本序列;
6、curr_simple_list.push_back(data);
7、unsimpled_list.remove(data);
8、if curr_simple_list.size()>=N
9、break;
上述实施例的系统,通过确定各个缓存数据的价值,并根据各个缓存数据的价值,确定各个缓存数据的抽样概率,从而不仅实现了对高价值的缓存数据的抽样校验,提升了网络安全,而且解决了对所有的数据进行校验导致的网络负载过高的问题,有效的降低了NDN网络节点的算力资源的消耗。
在一实施例中,历史时段中缓存数据的查询次数基于如下方式确定:
其中,
具体地,本申请实施例中基于历史时段中缓存数据的查询次数、缓存数据与数据源的距离确定缓存数据的价值。可选地,历史时段中缓存数据的查询次数越大,则该缓存数据的价值也就越大,该缓存数据存在安全问题时对网络的影响也就越大。可选地,本申请实施例中基于如下方式确定缓存数据在历史时段中缓存数据的查询次数:
其中,
上述实施例的系统,缓存数据的查询次数不仅可以反映出缓存数据在历史时段的查询频繁程度,而且近期频繁访问的缓存数据的价值高于较远的历史时期频繁访问的缓存数据的价值,从而就使得确定出的高价值的缓存数据更加的合理、准确,使得抽检的缓存数据更加的合理,有效地提升了网络安全。
在一实施例中,NDN子系统还用于:
基于马尔科夫链模型,确定是否将接收到的数据包与缓存中的数据包进行替换;马尔科夫链模型基于如下方式建立:
{S,A,M(s
其中,S表示缓存中的数据包状态;A表示对缓存中的数据包执行替换的动作;M(s
具体地,传统的缓存策略(LRU与基于概率的缓存策略)在时间效率以及空间效率方面不能够平衡,LRU策略替换最久没有被请求的数据项,但是存在两个问题:1.该数据项是否一定要被缓存。2.替换最久没有被请求的数据项是否是最优选择。同时,LRU策略中并没有考虑进缓存的位置信息,即沿路的节点都将留下该缓存。在这种情况下,网络中的数据冗余将大大降低缓存的效率。
本申请在数据抽样过程中定义了数据的价值,反映了数据时间上的特征,同时,在数据包中多加了hop_count字段,记录了该数据条目与上一个数据源的位置信息,hop_count字段越大,则表示距离上一跳的越远,表明这条数据远离了上一个数据源,也更加值得被缓存。也就是缓存数据的价值根据数据的历史请求以及地理位置综合对数据项进行判断。在任意时刻,缓存价值越高,代表缓存项在时间/空间方面具有良好的价值,在本申请的高效的缓存策略中,缓存更替操作需要能最大化缓存的价值,希望未来更热门的数据项能够被缓存,并对价值小的缓存数据进行替换。
可选地,虑缓存整体价值
其中,R
α
缓存空间的大小满足:
S
本申请实施例中使用MDP马尔可夫过程对此问题进行建模,从而确定是否将接收到的数据包与缓存中的数据包进行替换;可选地,用如下四元组进行表示:
{S,A,M(s
设在t时刻,节点收到了数据包C
其中,
为缓存项i在过去k个时隙里的请求次数,反映了数据的时间特性,/>
缓存的动作A包含两种:不替换,以及替换哪一项缓存,缓存动作的建模如下:设此时给出的缓存动作空间A={a
M(s
R(s
可选地,数据缓存问题中,由于用户请求数据具有不可预知性,因此无法通过动态编程的方法求解该问题。但是边缘缓存靠近用户的特点使其可能对所服务的用户群体的请求规律进行潜在的挖掘,服务于缓存策略。高效的缓存策略能够挖掘到边缘节点所服务的用户群体的偏好和数据内容的热度信息,通过缓存更新鲜、更热门的、将来更大概率被请求的数据项,提高缓存区数据的复用率,最大化缓存效率。
示例性的,如图5为基于深度强化学习的缓存更替方法,环境为缓存更替的场景,当前值网络每N轮次将更新到目标值网络,记忆回放池将记录生成的四元组,当回放池大小达到一定数量后激活缓存更替学习过程。神经网络根据状态输入,选择Q值最大的缓存更替动作,同时计算缓存更替前后的差值作为奖励。
系统的输入输出以及动作奖励设计如下:
状态输入:考虑系统的状态输入与MDP建模时保持一致,输入为缓存内项目的请求序列以及数据的地理信息(数据包的HopCount字段)。
策略:系统得到输入的状态S后,根据greedy策略进行选择执行当前Q值最大的动作或者是随机探索。
奖励:系统的奖励定义为执行动作后,缓存整体价值V
本申请实施例中的基于区块链的数据分发架构,电力数据通过NDN网络进行数据分发,与传统TCP/IP网络相比,NDN网络在数据分发效率以及移动性的支持上更有效率。电力数据由电力数据发布者提供,并通过区块链注册身份,电力数据请求者通过NDN网络请求电力数据,并通过区块链进行数据验证,NDN网络的缓存功能能有效的降低数据的传输时延。另外,需要说明的是,本申请实施例中改造了现有的NDN协议栈,主要针对以下内容:(1)基于区块链,构建了一种可信数据共享机制,数据发布者将自身的公钥固化上链,同时在数据包中添加块深度信息替换传统NDN数据包中的key_locate字段,减少传统NDN数据校验中的验证开销。(2)对传统的NDN网络缓存机制做出改进,以最大化缓存命中率和数据流行度为目标,考虑数据包的时间特性以及空间特性,基于深度强化学习进行缓存的更替操作。(3)提出了NDN缓存抽样校验机制。在保证节点通信的同时对缓存内数据进行抽样检测。
上述实施例的系统,提出了一种基于区块链的数据分发平台,电力数据底层通过NDN网络进行传输,同时通过改造NDN协议栈,解决了传统NDN网络中数据校验效率低的问题;并通过综合考虑缓存的地理特性以及时间特性,以最大化缓存价值为目标进行缓存更替,避免其他缓存方案节点缓存重复度高的问题,提高了电力数据分发的效率,解决了传统NDN中LRU等缓存策略效率低下的问题,通过提高缓存命中率,降低了电力数据的传输时延。
示例性的,结合仿真实例说明本申请实施例中缓存策略效果,将本申请实施例中的缓存策略与传统NDN缓存策略进行比较,测量其缓存命中率,往返时延,以及吞吐率指标。兴趣包服从ZIPF分布,本申请缓存策略的设计中,学习率LR设为0.005,贪婪系数初始0.3,每100轮训练将系数乘以0.95,折扣系数GAMMA设为0.95,采样大小BANCH_SIZE为32,缓存池容量1000,网络更新频率为1000。历史记录条目K为4,即记录前4个时隙中的历史请求次数。
数据包平均往返时延随缓存大小变化如图6所示,可以看出,在同一缓存大小下,数据的请求往返时延有所下降,LRU缓存对所有请求的数据包都将进行缓存,导致缓存的效率降低,同时,LRU缓存策略中未考虑数据的空间特性,导致网络中数据副本大量冗余,挤占数据缓存空间。基于概率的缓存方式在缓存项未满时直接加入缓存,否则以一定的概率通过LRU策略加入缓存。这种缓存策略能够略微减少网络中的副本数,但对缓存项本身并未加以考虑。基于本申请的缓存策略综合考虑了数据的空间性以及时间性,往返时延更低,并且能够有效降低缓存的冗余。
缓存命中率随往返时延变化如图7所示,LRU缓存策略对于所有的数据包都进行缓存,因此对于某些不流行的数据包将挤占流行数据包的空间,带来缓存命中率的折损,基于概率的缓存策略于LRU相似,由于基于概率的缓存策略主要在于减少冗余数据,提高空间的利用率,因此缓存命中率较LRU提升较小。基于本申请的缓存策略能够较好的反映出数据包的时间特性,能够较好的利用空间,缓存命中率较其余策略更高,同时,随着缓存空间的增大,缓存命中率趋近于1。
网络最大吞吐率随缓存空间变化如图8所示,实验中网络吞吐率主要受数据传输时延影响,展示了网络最大吞吐率随着缓存空间的变化。传统LRU算法以及基于概率的缓存算法在相同缓存大小的情况下吞吐率较本申请的算法差,同时,吞吐率由数据请求速率以及系统性能同时决定,此处的数据请求速率较大,因此达到了系统的吞吐率上限。
上述实施例的系统,通过NDN网络进行电力数据分发,相比传统TCP网络,能够有更低的数据传输时延和较好的移动性,并针对传统的NDN协议栈进行一定的改造,通过区块链降低了数据校验的时延,同时提出了抽样校验机制,在节点算力有限的情况下对数据进行抽样校验,改造了原有NDN缓存策略,提高了缓存的命中率。
示例性的,本申请实施例还提供一种基于区块链的数据分发方法,应用于基于区块链的数据分发系统中的NDN子系统,包括:
存储和分发电力数据发布者提交的数据包;数据包中携带区块链信息;区块链信息用于指示电力数据发布者的公钥信息在区块链子系统中的存储位置。
具体地,NDN子系统存储和分发的数据包中携带的区块链信息指示了电力数据发布者的公钥信息在区块链子系统中的存储位置,使得电力数据请求者获得NDN网络分发的数据包之后,就可以根据数据包中携带的区块链信息从区块链子系统中获取到公钥信息,进而根据公钥也就可以对获取到的数据包进行验证。本申请实施例通过改造原有的数据包,基于区块链进行数据校验,提高了数据校验的效率,实现了基于NDN子系统和区块链子系统的电力数据的高效、准确、安全的分发,有效地提升了电力数据分发和校验的效率。
本发明实施例的基于区块链的数据分发,其用于执行前述任一方法实施例中的基于区块链的数据分发系统,其实现原理和技术效果类似,此次不再赘述。
图9示例了一种电子设备的实体结构示意图,该电子设备可以包括:处理器(processor)910、通信接口(Communications Interface)920、存储器(memory)930和通信总线940,其中,处理器910,通信接口920,存储器930通过通信总线940完成相互间的通信。处理器910可以调用存储器930中的逻辑指令,以执行基于区块链的数据分发方法,该方法包括:存储和分发电力数据发布者提交的数据包;数据包中携带区块链信息;区块链信息用于指示电力数据发布者的公钥信息在区块链子系统中的存储位置。
此外,上述的存储器930中的逻辑指令可以通过软件功能单元的形式实现并作为独立的产品销售或使用时,可以存储在一个计算机可读取存储介质中。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分或者该技术方案的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质中,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行本发明各个实施例所述方法的全部或部分步骤。而前述的存储介质包括:U盘、移动硬盘、只读存储器(ROM,Read-Only Memory)、随机存取存储器(RAM,Random Access Memory)、磁碟或者光盘等各种可以存储程序代码的介质。
另一方面,本发明还提供一种计算机程序产品,所述计算机程序产品包括存储在非暂态计算机可读存储介质上的计算机程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,计算机能够执行上述各方法所提供的基于区块链的数据分发方法,该方法包括:存储和分发电力数据发布者提交的数据包;数据包中携带区块链信息;区块链信息用于指示电力数据发布者的公钥信息在区块链子系统中的存储位置。
又一方面,本发明还提供一种非暂态计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以执行上述各提供的基于区块链的数据分发方法,该方法包括:存储和分发电力数据发布者提交的数据包;数据包中携带区块链信息;区块链信息用于指示电力数据发布者的公钥信息在区块链子系统中的存储位置。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。
- 一种服务器集群通讯方法及终端设备及通讯服务器
- 一种数据处理方法、MEC服务器、终端设备及装置
- 一种基于融合通信的信息处理方法、服务器及终端
- 一种页面动态配置方法、装置、服务器及用户终端
- 一种终端防模拟登录方法、装置、服务器及存储介质
- 一种有害短信的封堵方法、终端和服务器
- 一种对短信进行分类的方法、装置、通信终端及服务器