消息分发方法、装置、存储介质及电子设备
技术领域
本公开涉及计算机技术领域,具体地,涉及一种消息分发方法、装置、存储介质及电子设备。
背景技术
随着计算机技术和网络技术的不断发展,产生了海量数据,网络系统的规模也越来越大,一个网络系统可能包括成千上万的电子设备。因此,如果将数据分发给不同的电子设备变得愈发重要。
相关技术中,通常采用单一的消息发布节点进行消息分发,以实现将数据分发给不同电子设备的目的。比如,单个服务器与多个终端设备连接,然后通过该单个服务器进行消息分发。但是,由于带宽的限制,当终端设备的数量较多时,该单个服务器的分发压力较大,从而导致数据分发效率较低。
发明内容
本公开的目的是提供一种消息分发方法、装置、存储介质及电子设备,以提高消息分发效率。
为了实现上述目的,第一方面,本公开提供一种消息分发方法,应用于区块链中的消息接收节点,所述方法包括:
接收消息发布节点发送的目标消息;
对接收到的所述目标消息进行完整性校验;
响应于所述目标消息通过完整性校验,将所述消息接收节点确定为消息发布节点进行消息分发。
可选地,所述将所述消息接收节点确定为消息发布节点进行消息分发,包括:
在所述区块链中发布对所述目标消息接收成功的状态消息,以使所述区块链中的其他消息接收节点响应于所述状态消息获取所述消息接收节点发布的消息。
可选地,所述状态消息还包括所述消息接收节点的访问路径,以使所述区块链中的其他消息接收节点通过所述访问路径与所述消息接收节点建立连接。
可选地,所述方法还包括:
通过所述区块链的共识机制对所述其他消息接收节点进行验证;
响应于所述其他消息接收节点验证通过,允许所述其他消息接收节点获取所述消息接收节点发布的消息。
可选地,所述对接收到的所述目标消息进行完整性校验,包括:
确定所述目标消息中携带的第一消息验证码;
根据所述目标消息中除所述第一消息验证码以外的其他数据,生成第二消息验证码;
通过比对所述第一消息验证码和第二消息验证码,对所述目标消息进行完整性校验。
可选地,所述区块链为私有区块链。
第二方面,本公开提供一种消息分发装置,应用于区块链中的消息接收节点,所述装置包括:
接收模块,用于接收消息发布节点发送的目标消息;
校验模块,用于对接收到的所述目标消息进行完整性校验;
确定模块,用于响应于所述目标消息通过完整性校验,将所述消息接收节点确定为消息发布节点进行消息分发。
可选地,所述确定模块用于在所述区块链中发布对所述目标消息接收成功的状态消息,以使所述区块链中的其他消息接收节点响应于所述状态消息获取所述消息接收节点发布的消息。
第三方面,本公开提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现第一方面中任一项所述方法的步骤。
第四方面,本公开提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。
通过上述技术方案,区块链中的消息接收节点可以对接收到的目标消息进行完整性校验,并响应于目标消息通过完整性校验,将该消息接收节点确定为消息发布节点进行消息分发。因此随着消息分发的过程,区块链中消息发布节点的数量可以快速增长,而不仅仅是通过初始消息分发节点进行消息分发,从而可以提高消息分发的效率,适用于超大规模的消息分发场景。并且,消息接收节点可以对接收到的目标消息进行完整性校验,从而保证消息接收接收作为消息发布节点时,发布的消息的完整性,进而保证整个区块链中每个节点之间的数据一致性和数据安全性。
本公开的其他特征和优点将在随后的具体实施方式部分予以详细说明。
附图说明
附图是用来提供对本公开的进一步理解,并且构成说明书的一部分,与下面的具体实施方式一起用于解释本公开,但并不构成对本公开的限制。在附图中:
图1是根据本公开一示例性实施例示出的一种消息分发方法的流程图;
图2是根据本公开一示例性实施例示出的一种消息分发方法中的消息接收接收节点和消息发布节点的示意图;
图3是根据本公开一示例性实施例示出的一种消息分发方法中的消息接收接收节点和消息发布节点的示意图;
图4是根据本公开一示例性实施例示出的一种消息分发装置的框图;
图5是根据本公开一示例性实施例示出的一种电子设备的框图。
具体实施方式
以下结合附图对本公开的具体实施方式进行详细说明。应当理解的是,此处所描述的具体实施方式仅用于说明和解释本公开,并不用于限制本公开。
正如背景技术所言,相关技术通常采用单一的消息发布节点进行消息分发,以实现将数据分发给不同电子设备的目的。比如,单个服务器与多个终端设备连接,然后通过该单个服务器进行消息分发。
但是,申请人研究发现,在超大规模的消息分发场景下,比如终端设备数量达到100万以上时,负责消息分发的单一服务器可能按照预设的设备数量依次进行消息分发,比如先对第1个至第100个终端设备进行消息分发,分发完之后再对第101个至第200个终端设备进行消息分发,以此类推,直到完成对所有终端设备的消息分发。此种依次分发消息的方式,需要耗费大量的时间,并且可能由于带宽的限制,导致无法把消息完整地分发给所有终端设备,分发效率较低。
有鉴于此,本公开实施例提供一种消息分发方法,以解决相关技术中的问题,提供消息分发效率,适用于超大规模的消息分发场景。
图1是根据本公开一示例性实施例示出的一种消息分发方法的流程图.参照图1,该消息分发方法可以应用于区块链中的消息接收节点,包括:
步骤101,接收消息发布节点发送的目标消息。
步骤102,对接收到的目标消息进行完整性校验。
步骤103,响应于目标消息通过完整性校验,将消息接收节点确定为消息发布节点进行消息分发。
示例地,消息接收节点可以是例如手机、电脑、云端智能机器人等不同类型的电子设备,本公开实施例对此不作限定。应当理解的是,初始的消息发布节点可以是服务器,随着消息分发的进行,可以将消息接收节点作为消息发布节点,在此种情况下,除初始消息发布节点外的其他消息发布节点可以是例如手机、电脑、云端智能机器人等不同类型的电子设备。
也即是说,在初始消息分发的过程中,可以确定一个服务器作为初始消息发布节点,除了该初始消息发布节点外,区块链中的其余设备节点可以作为消息接收节点。随着消息分发的进行,已通过完整性校验的消息接收节点可以作为消息发布节点进行消息发布,而未完成完整性校验或未接收到消息的节点则可以作为消息接收节点从该已通过完整性校验的消息接收节点获取消息。
例如,参照图2,可以将一台服务器作为初始消息发布节点Node S,区块链中的其余电脑设备节点(Node 1、Node 2、……、Node N)则可以作为消息接收节点。其中,每个节点可以包括有数据(图2中通过Message进行示意)。参照图3,实线节点表示可作为消息发布节点的节点,虚线节点表示当前未接收到消息的节点,节点之间的实线表示当前节点之间存在消息发送过程,节点之间的虚线表示当前节点之间不存在消息发送过程。当该服务器(Node S)进行消息分发后,接收到该消息的设备节点(Node 1)可以作为消息发布节点继续进行消息分发,设备节点(Node 3)可以从设备节点(Node1)获取发布的消息,而不是从初始消息发布节点(Node S)获取发布的消息。按照此种方式,后续其他的消息接收节点(比如设备节点Node 2和Node3)均可以作为消息发布节点进行消息发布。
因此随着消息分发的过程,区块链中的消息发布节点可以进行指数型增长,而不仅仅是通过初始消息分发节点进行消息分发,从而可以极大程度上提高消息分发的效率。并且,按照本公开的消息分发方式,可以通过一台服务器实现超大规模下的消息分发,而无需增加分发服务器以提高消息分发,可以降低运营成本。
进一步,在本公开实施例中,消息接收节点可以对接收到的目标消息进行完整性校验,即确定消息接收节点是否完整接收了目标消息。若消息接收节点通过完整性校验,即消息接收节点完整接收了目标消息,则将该消息接收节点作为消息发布节点进行消息分发,从而该消息接收节点发布的消息的完整性,进而保证整个区块链中每个节点之间的数据一致性和数据安全性。
在可能的方式中,对接收到的目标消息进行完整性校验,可以是:确定目标消息中携带的第一消息验证码,然后根据目标消息中除第一消息验证码以外的其他数据,生成第二消息验证码,最后通过比对第一消息验证码和第二消息验证码,对目标消息进行完整性校验。
示例地,消息验证码可以是例如哈希值等不同的验证信息,本公开实施例对此不作限定。其中,第一消息验证码可以是发送该目标消息的消息发布节点根据完整的目标消息而生成的,可以携带在目标消息中发送给消息接收节点。第二消息验证码可以是消息接收节点根据目标消息中除第一消息验证码以外的其他数据而生成的。因此,通过比对第一消息验证码和第二消息验证码可以确定消息接收节点接收到的目标消息的完整性。
例如,消息验证码为哈希值,在此种情况下,发送目标消息的消息发布节点可以根据待发送的完整的目标消息生成第一哈希值,并携带在目标消息中发送给消息接收节点。相应地,消息接收节点可以接收到目标消息,并且可以获取到目标消息中携带的第一哈希值。然后,消息接收节点可以根据该目标消息中除第一哈希值以外的其他数据,生成第二哈希值,从而通过比对第一哈希值与第二哈希值,实现对目标消息的完整性校验。
其中,若第一哈希值与第二哈希值一致,则可以确定目标消息通过完整性校验,从而可以将该消息接收节点作为消息发布节点进行消息分发,以提高消息分发效率。在其他可能的情况下,若第一哈希值与第二哈希值不一致,则可以确定目标消息未通过完整性校验,因此为了避免区块链中节点之间的数据不一致,则不将该消息接收节点作为消息发布节点进行消息分发。
或者,考虑到消息接收节点未通过完整性校验可能并不是由于消息接收节点出现故障,而是由于暂时的网络连接较差,在预设时长后,可以对该消息接收节点再进行完整性校验。若该消息接收节点通过完整性校验,则可以将该消息接收节点作为消息发布节点进行消息分发,以提高消息分发效率。
在可能的方式中,将消息接收节点确定为消息发布节点进行消息分发,可以是:在区块链中发布对目标消息接收成功的状态消息,以使区块链中的其他消息接收节点响应于该状态消息获取消息接收节点发布的消息。
当消息接收节点的完整性校验通过后,该消息接收节点可以在区块链中发布对目标消息接收成功的状态消息,从而区块链中的其他消息接收节点可以获知该消息接收节点对目标消息已经接收完成。也即是说,区块链中的其他消息接收节点可以确定该消息接收节点已经可以作为消息接收节点进行消息分发,从而其他消息接收节点可以与该消息接收节点建立连接,获取该消息接收节点发布的消息。
示例地,其他消息接收节点可以在接收到状态信息后,向该消息接收节点发送连接请求,然后根据该消息接收节点发送的用于响应该连接请求的消息,与该消息接收节点建立连接,从而获取该消息接收节点发布的消息。
在可能的方式中,为了简化其他消息接收节点与该消息接收节点的连接过程,进一步提高消息分发效率,消息接收节点接收到的状态消息还可以包括该消息接收节点的访问路径,以使区块链中的其他消息接收节点通过该访问路径与消息接收节点建立连接。
示例地,访问路径可以是消息接收节点的IP地址、端口号等网络连接信息,本公开实施例对此不作限定。
通过在状态信息中携带消息接收节点的访问路径,可以使得区块链中的其他消息接收节点通过该访问路径快速与该消息接收节点建立连接,而无需按照先向消息接收节点发送连接请求,再根据该消息接收节点用于响应该连接请求的消息,与该消息接收节点建立连接的方式进行通信,简化了其他消息接收节点与该消息接收节点的连接过程,因此在超大规模的消息分发场景下,可以进一步提高消息分发效率。
在可能的方式中,还可以通过区块链的共识机制对其他消息接收节点进行验证,然后响应于其他消息接收节点验证通过,允许其他消息接收节点获取消息接收节点发布的消息。
应当理解的是,通过区块链的共识机制对其他消息接收节点进行验证,可以保证其他消息接收节点在获取该消息接收节点发布的消息之前的数据一致性,从而保证消息分发后的数据安全性。
例如,消息分发前,区块链中的所有节点的数据均为“账户余额50元”,消息接收节点接收到目标消息(内容为“余额减5元”)后,根据目标消息的内容执行操作,该消息接收节点的数据变为“账户余额45元”。然后,该消息接收节点可以作为消息发布节点进行消息分发。按照上述方式,该消息接收节点可以通过区块链的共识机制对区块链中的其他消息接收节点进行验证,即确定其他消息接收节点的数据是否为“账户余额50元”。若其他消息接收节点的数据为“账户余额50元”,即其他消息接收节点验证通过,则可以允许其他消息接收节点获取该消息接收节点发布的消息(内容为“余额减5元”)。在其他可能的情况下,若其他消息接收节点出现故障,其存储的数据为“账户余额40元”,即其他消息接收节点验证未通过,那么为了保证数据一致性和安全性,则不允许其他消息接收节点获取该消息接收节点发布的消息(内容为“余额减5元”)。
通过上述方式,在本公开实施例中,消息接收节点可以对其他消息接收节点进行验证,然后在验证通过后,允许其他消息接收节点获取该消息接收点发布的消息,以保证区块链中各节点数据的一致性和安全性。
在可能的方式中,本公开实施例中的区块链可以是私有区块链。也即是说,在该区块链中只有初始消息发布节点具有写入数据的权限,后续作为消息发布节点进行消息分发的节点不具有写入数据的权限,从而进一步保证区块链各节点间的数据安全性。
下面以OTA(Over the Air,空中下载)推送升级场景为例对本公开中的消息分发方法进行说明。
如图2所示,可以将服务器作为初始消息分发节点,发起OTA升级的推送消息,区块链上的所有其他设备节点中第一个获得共识应答的目标设备节点可以与该服务器建立连接,即该目标设备节点可以作为消息接收节点接收该服务器发送的目标消息。在此种情况下,目标消息为OTA文件。
目标设备节点接收完OTA文件,并执行完对应的操作后,即目标设备节点通过完整性校验后,可以作为消息发布节点进行OTA升级的消息分发,在此过程中,该目标设备节点的具体行为与初始消息分发节点(服务器)一致。通过此种方式,随着消息分发次数的增加,区块链中的消息发布节点的数量可以快速增长,而不仅仅是通过初始消息分发节点进行消息分发,从而可以极大程度上提高消息分发的效率。并且,通过区块链的安全性、去中心化、分布式特性,无需通过增加分发服务器的数量来提高消息分发效率,可以在超大规模的消息分发场景下实现快速、安全、低成本的消息分发。
基于同一发明构思,本公开实施例还提供一种消息分发装置,该装置可以通过软件、硬件或者两者结合的方式成为电子设备的部分或全部。参照图4,该装置包括:
接收模块401,用于接收消息发布节点发送的目标消息;
校验模块402,用于对接收到的所述目标消息进行完整性校验;
确定模块403,用于响应于所述目标消息通过完整性校验,将所述消息接收节点确定为消息发布节点进行消息分发。
可选地,所述确定模块403用于在所述区块链中发布对所述目标消息接收成功的状态消息,以使所述区块链中的其他消息接收节点响应于所述状态消息获取所述消息接收节点发布的消息。
可选地,所述状态消息还包括所述消息接收节点的访问路径,以使所述区块链中的其他消息接收节点通过所述访问路径与所述消息接收节点建立连接。
可选地,所述装置400还包括:
验证模块,用于通过所述区块链的共识机制对所述其他消息接收节点进行验证;
控制模块,用于响应于所述其他消息接收节点验证通过,允许所述其他消息接收节点获取所述消息接收节点发布的消息。
可选地,所述校验模块用于:
确定所述目标消息中携带的第一消息验证码;
根据所述目标消息中除所述第一消息验证码以外的其他数据,生成第二消息验证码;
通过比对所述第一消息验证码和第二消息验证码,对所述目标消息进行完整性校验。
可选地,所述区块链为私有区块链。
关于上述实施例中的装置,其中各个模块执行操作的具体方式已经在有关该方法的实施例中进行了详细描述,此处将不做详细阐述说明。
通过上述任一装置,随着消息分发次数的增加,区块链中的消息发布节点的数量可以快速增长,而不仅仅是通过初始消息分发节点进行消息分发,从而可以极大程度上提高消息分发的效率。并且,通过区块链的安全性、去中心化、分布式特性,无需通过增加分发服务器的数量来提高消息分发效率,可以在超大规模的消息分发场景下实现快速、安全、低成本的消息分发。
基于同一发明构思,本公开实施例还提供一种电子设备,包括:
存储器,其上存储有计算机程序;
处理器,用于执行所述存储器中的所述计算机程序,以实现第一方面中任一项所述方法的步骤。
在可能的方式中,该电子设备的框图可以如图5所示。参照图5,该电子设备500可以包括:处理器501,存储器502。该电子设备500还可以包括多媒体组件503,输入/输出(I/O)接口504,以及通信组件505中的一者或多者。
其中,处理器501用于控制该电子设备500的整体操作,以完成上述的消息分发方法中的全部或部分步骤。存储器502用于存储各种类型的数据以支持在该电子设备500的操作,这些数据例如可以包括用于在该电子设备500上操作的任何应用程序或方法的指令,以及应用程序相关的数据,例如消息发布节点发送的目标消息等等。
该存储器502可以由任何类型的易失性或非易失性存储设备或者它们的组合实现,例如静态随机存取存储器(Static Random Access Memory,简称SRAM),电可擦除可编程只读存储器(Electrically Erasable Programmable Read-Only Memory,简称EEPROM),可擦除可编程只读存储器(Erasable Programmable Read-Only Memory,简称EPROM),可编程只读存储器(Programmable Read-Only Memory,简称PROM),只读存储器(Read-OnlyMemory,简称ROM),磁存储器,快闪存储器,磁盘或光盘。
多媒体组件503可以包括屏幕和音频组件。其中屏幕例如可以是触摸屏,音频组件用于输出和/或输入音频信号。例如,音频组件可以包括一个麦克风,麦克风用于接收外部音频信号。所接收的音频信号可以被进一步存储在存储器502或通过通信组件505发送。音频组件还包括至少一个扬声器,用于输出音频信号。I/O接口504为处理器501和其他接口模块之间提供接口,上述其他接口模块可以是键盘,鼠标,按钮等。这些按钮可以是虚拟按钮或者实体按钮。
通信组件505用于该电子设备500与其他设备之间进行有线或无线通信。无线通信,例如Wi-Fi,蓝牙,近场通信(Near Field Communication,简称NFC),2G、3G、4G、NB-IOT、eMTC、或其他5G等等,或它们中的一种或几种的组合,在此不做限定。因此相应的该通信组件505可以包括:Wi-Fi模块,蓝牙模块,NFC模块等等。
在一示例性实施例中,电子设备500可以被一个或多个应用专用集成电路(Application Specific Integrated Circuit,简称ASIC)、数字信号处理器(DigitalSignal Processor,简称DSP)、数字信号处理设备(Digital Signal Processing Device,简称DSPD)、可编程逻辑器件(Programmable Logic Device,简称PLD)、现场可编程门阵列(Field Programmable Gate Array,简称FPGA)、控制器、微控制器、微处理器或其他电子元件实现,用于执行上述的消息分发方法。
在另一示例性实施例中,还提供了一种包括程序指令的计算机可读存储介质,该程序指令被处理器执行时实现上述的消息分发方法的步骤。例如,该计算机可读存储介质可以为上述包括程序指令的存储器502,上述程序指令可由电子设备500的处理器501执行以完成上述的消息分发方法。
在另一示例性实施例中,还提供一种计算机程序产品,该计算机程序产品包含能够由可编程的装置执行的计算机程序,该计算机程序具有当由该可编程的装置执行时用于执行上述的消息分发方法的代码部分。
以上结合附图详细描述了本公开的优选实施方式,但是,本公开并不限于上述实施方式中的具体细节,在本公开的技术构思范围内,可以对本公开的技术方案进行多种简单变型,这些简单变型均属于本公开的保护范围。
另外需要说明的是,在上述具体实施方式中所描述的各个具体技术特征,在不矛盾的情况下,可以通过任何合适的方式进行组合,为了避免不必要的重复,本公开对各种可能的组合方式不再另行说明。
此外,本公开的各种不同的实施方式之间也可以进行任意组合,只要其不违背本公开的思想,其同样应当视为本公开所公开的内容。