区块链的数据处理方法、节点设备以及系统与流程

    专利2022-07-08  96


    本申请实施例涉金融科技(fintech)及区块链技术领域,尤其涉及一种区块链的数据处理方法、节点设备以及系统。



    背景技术:

    区块链(blockchain)是一种去中心化的分布式账本系统,利用密码学的方式保证数据传输和访问的安全,并利用链式结构保证链上数据不可被篡改。

    在区块链运转过程中,存在同一组区块链成员上运行多个账本的情况。通常是每个区块链成员拥有多个服务器,一个服务器作为一个区块链系统的节点,则每个区块链成员可以参与多个区块链群组,进而实现在同一组区块链成员上运行多个账本。然而,上述方式需要使用更多资源。为了减少资源占用,每个区块链成员仅使用一个服务器,该服务器作为多个区块链系统的节点,也就是该服务器上运行多个区块链群组。

    然而,同一个服务器上运行多个区块链群组方式,容易出现区块链群组之间相互争抢资源的问题,进而造成部分区块链无法正常运行。



    技术实现要素:

    本申请实施例提供一种区块链的数据处理方法、节点设备以及系统,旨在提供一种可以均衡各个区块链群组之间资源的方案。

    第一方面,本申请提供一种区块链的数据处理方法,方法应用于共识节点,方法包括:

    接收其他共识节点发送的多个报文数据;其中,报文数据包括区块链群组标识;

    根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据;

    根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据,并对二级报文数据进行处理。

    可选地,根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据,具体包括:

    若第一数据量不超过节点最大通信流量时,初级报文数据为所接收到的所有报文数据;

    若第一数据量超过节点最大通信流量,且所有关键报文数据的第二数据量不超过节点最大通信流量时,所述初级报文数据为其他节点发送的关键报文数据和部分非关键报文数据;

    若第二数据量超过节点最大通信流量时,所述初级报文数据为其他共识节点发送的关键报文数据。

    可选地,关键报文包括节点检测报文、共识报文或者交易报文;非关键报文包括点对点消息报文、同步报文或者指令报文。

    可选地,根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据,具体包括:

    根据初级报文数据的区块链群组标识统计获得每个区块链群组对应的初级报文数据的第三数据量;

    针对每个区块链群组,若第三数据量超过对应群组最大通信流量时,随机从区块链群组对应的初级报文数据中选择部分初级报文数据作为二级报文数据;

    针对每个区块链群组,若第三数据量不超过对应群组最大通信流量时,二级报文数据为区块链群组对应的初级报文数据。

    可选地,群组最大通信流量为:

    其中,表示第i个区块链群组接收到的节点检测报文的数据量,表示第i个区块链群组接收到的共识报文的数据量,表示第i个区块链群组接收到的交易报文的数据量,第i个区块链群组接收到的最大数据量,1≤i≤n,n表示区块链群组的总数,bmax表示节点最大通信流量。

    可选地,并对二级报文数据进行处理,具体包括:

    针对每个二级报文数据,根据二级报文数据的区块链群组标识确定用于处理二级报文数据的虚拟处理单元;

    控制虚拟处理单元对二级报文数据进行处理。

    可选地,在根据二级报文数据的区块链群组标识确定用于处理二级报文数据的虚拟处理单元之后,方法还包括:

    根据二级报文数据的报文类型确定二级报文数据的传输顺序;

    根据传输顺序将二级报文数据使用虚拟处理单元对应的链路传输至虚拟处理单元。

    可选地,共识节点为主共识节点,在并控制虚拟处理单元对二级报文数据进行处理之后,方法还包括:

    统计获得所有虚拟处理单元对硬件资源的使用率;

    当使用率到达预设阈值时,向其他节点发送放弃请求;其中,放弃请求包括请求放弃的主共识节点对应的区块链群组的标识。

    第二方面,本申请提供一种节点设备,包括:

    存储器,用于存储程序;

    处理器,用于执行存储器存储的程序,当程序被执行时,处理器用于执行如第一方面及可选方案所涉及的数据处理方法。

    第三方面,本申请提供一种区块链系统,包括多个如第二方面所涉及的节点设备。

    第四方面,本申请提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令;

    其中,计算机执行指令被处理器执行时用于实现如第一方面及可选方案所涉及的数据处理方法。

    第五方面,本申请提供一种计算机程序产品,包括指令,指令被处理器执行时实现第一方面及可选方案所涉及的数据处理方法。

    本申请实施例提供一种区块链的数据处理方法、节点设备以及系统,共识节点根据接收到的报文数据的总数据量和节点最大通信流量对报文数据进行初级筛选,再根据每个区块链群组的最大通信流量和每个区块链群组对应报文数据的数据量进行二级筛选,实现共识节点的流量控制,有效避免各个区块链群组之间流量占用,在流量控制上实现多个区块链群组在同一个共识节点上正常运行。按照报文数据的传输重要性进行筛选过滤以及传输,保证了区块链网络运行服务质量。经过两次筛选后,根据报文数据的区块链群组标识确定处理该报文数据的虚拟处理单元,每个虚拟处理单元在资源上独立,不存在资源竞争情况,进而可以从硬件资源上保证各个区块链群组在同一个共识节点上正常共识和交易。另外,主共识节点监控节点内硬件资源使用率,在主共识节点的资源使用率达到预设阈值时,主共识节点生成放弃主共识节点的请求,以使区块链系统中的各个共识节点的负载均衡,提升了区块链多群组之间的处理性能。

    附图说明

    图1为现有技术中同一个共识节点中运行多个区块链的架构图;

    图2为图1所示现有技术中账本模块的结构示意图;

    图3为本申请实施例提供的区块链系统的结构示意图;

    图4为本申请实施例提供的共识节点中运行多个区块链的架构图;

    图5为本申请实施例提供的共识节点的链路的结构示意图;

    图6为本申请实施例提供的数据处理方法的流程示意图;

    图7为本申请实施例提供的筛选获得初级报文数据的流程示意图;

    图8为本申请实施例提供的数据处理装置的结构示意图;

    图9为本申请实施例提供的节点设备的结构示意图。

    具体实施方式

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

    技术术语解释:

    报文,是指用于区块链网络节点之间进行传输、同步的数据包。

    服务质量(qualityofservice,简称:qos),指一个网络能够利用各种基础技术,为指定的网络通信提供更好的服务能力,是网络的一种安全机制,是用来解决网络延迟和阻塞等问题的一种技术。

    区块链是一种由多个共识节点共同维护的分布式存储系统。区块链底层是由一系列区块组成的一条链,每个块上除了记录本块的数据还会记录上一块的哈希值,通过这种方式组成链式的数据结构。一个区块由块头和块体组成,其中,块头定义包括该区块高度、上一个区块的哈希值等重要字段,而块体主要存储交易数据。区块链利用密码学的方式保证数据传输和访问的安全,并利用链式结构保证链上数据不可被篡改。

    在区块链运转过程中,存在同一组区块链成员上运行多个账本的情况。例如:机构a、机构b、机构c以及机构d作为同一组区块链成员。在机构a、机构b、机构c以及机构d之间存在多个账本。

    通常是每个区块链成员拥有多个服务器,一个服务器作为一个区块链系统的节点,则每个区块链成员可以参与多个区块链,进而实现在同一组区块链成员上运行多个账本。例如:机构a、机构b、机构c以及机构d之间有一个账本a,机构a、机构b和机构c之间有一个账本b。机构a、机构b以及机构c需要布置两个服务器,其中一个用于运行账本a,另一个用于运行账本b。

    然而,上述方式需要使用更多资源,也就是在区块链成员上运行账本数量越多,则需要更多用于运行账本的服务器资源,存在资源过剩、利用不合理的缺点。

    为了减少资源占用,每个区块链成员仅使用一个服务器,该服务器作为多个区块链系统的节点,也就是该服务器上运行多个区块链,实现服务器资源复用。继续以上述例子说明,机构a、机构b、机构c以及机构d均部署一个服务器,机构a、机构b以及机构c的服务器需要运行账本a和账本b,也就是机构a、机构b以及机构c的服务器作为两个区块链群组的节点。其中一个区块链群组用于运行账本a,另一个区块链群组用于运行账本b。

    如图1所示,同一个服务器上运行多个区块链群组架构中,区块链群组群组间共享网络,通过网络准入和账本白名单实现各账本间网络消息隔离。群组间数据处理过程也相互隔离。如图2所示,每个账本模块自底向上主要包括核心层、接口层和调度层三层,使得每个群组可以独立运行各自的共识算法,不同群组可使用不同的共识算法。通过三层结构相互协作,可保证单个群组独立健壮地运行。

    然而,同一个服务器上运行多个区块链容易出现区块链之间相互争抢资源的问题,同时也存在安全漏洞。由于区块链群组之间只能做到应用层面的隔离,无法做到操作系统内核层面的隔离,会出现资源挤占,资源空转等问题。尤其是恶意节点作为多个区块链群组的节点,向其中一个区块链群组的其他节点发送大数据交易报文,占用其他区块链群组的资源,使得该恶意节点的其他区块链群组无法正常进行共识和对外提供服务。

    另外,在同一个服务器上运行多个区块链方式,当大量非关键报文数据占用节点网络流量时,使得无法及时接收用于共识或者交易的报文,无法保证qos,拖累区块链网络的正常运行和效率。此外,存在同一个节点作为多个区块链群组的主共识节点的情况,使得该节点数据负载较大,造成区块链系统中各个节点负载不均衡,且该节点也容易成为整个区块链群组的瓶颈,拖慢整个区块链各群组处理交易的速度和吞吐量。

    为解决现有技术中的上述问题,本申请实施例提供一种区块链的数据处理方法、节点设备以及系统。在共识节点接收到多个报文数据后,根据报文数据的数据量和节点最大通信流量对报文数据进行初级筛选,在每个区块链群组的最大通信流量和每个区块链群组对应报文数据的数据量进行二级筛选,实现共识节点的流量控制,避免各个区块链群组之间流量占用。经过两次筛选后,根据报文数据的区块链群组标识确定处理该报文数据的虚拟处理单元,每个虚拟处理单元在资源上独立,不存在资源竞争情况,进而可以保证各个区块链群组正常共识和交易。

    如图3所示,本申请一实施例提供的区块链系统包括多个节点服务器102以及终端设备101。节点服务器102为区块链系统中的共识节点。共识节点具有一份完整的账本拷贝,具有参与区块链共识和维护账本的能力。终端设备101作为用户终端,可以为手机、平板电脑、笔记本电脑、掌上电脑、移动互联网设备(mobileinternetdevice,简称:mid)、可穿戴设等设备任意一种。

    在上述区块链系统中运行有多个区块链群组,每个区块链群组维护一个账本。也就是每个共识节点作为多个区块链群组的共识节点,共识节点可以收到多个区块链群组的报文数据,也可以向其他节点发送多个区块链群组的报文数据。

    在同一个服务器上运行多个区块链方式,运维管理员仅需维护一个区块链系统,在达到相同隐私保护需求基础上,具有更好的扩展性、可运维性和灵活性。在同一个区块链系统中,支持区块链节点启动多个区块链群组,区块链群组间交易处理、数据存储以及区块共识相互隔离,保障区块链系统隐私性的同时,降低了系统的运维复杂度。

    下面举例说明:区块链系统包括4个共识节点,分别标记为节点1021、节点1022、节点1023以及节点1024。节点1021、节点1022、节点1023以及节点1024之间维护区块链群组a,节点1021、节点1022以及节点1023之间维护区块链群组b。节点1021可以接收到节点1022发送的区块链群组b的报文数据,也可以接收到节点1022发送的区块链群组a的报文数据。同样的,节点1021可以向节点1022发送区块链群组b的报文数据,也可以向节点1022发送区块链群组a的报文数据。

    针对每个共识节点,构建多个虚拟处理单元,该虚拟处理单元所占用资源相互独立,也就是实现在操作系统内核级别的网络隔离。对于区块链群组而言,在不同虚拟处理单元中处理不同区块链群组的报文数据,实现各个群组的报文数据之间的隔离,近乎物理级别。

    更具体地,根据配置文件创建虚拟处理单元,在虚拟处理单元内系统资源相互隔离的,这些系统资源包括进程标识、主机名、用户标识、网络访问、进程间通讯和文件系统等。每一个进程都绑定在虚拟处理单元,且只能查看和操作绑定在此虚拟处理单元中的资源。

    如图4所示,针对每个共识节点,在共识节点的程序启动时,启动区块链群组程序,读取群组的配置,根据群组数量构建虚拟处理单元,并创建一个网桥和虚拟链路。虚拟链路两端分别连接网桥和虚拟处理单元。

    区块链群组可通过网桥对外连接外部的网络。设置链路的ip地址并开启网络端口。同一共识节点内部的不同区块链群组可通过ip地址和端口来进行寻址,并开启回环。区块链群组的所有交易报文将通过链路的内部地址和端口来进行接收和发送。区块链的节点之间的网络可做到操作系统内核层级的隔离,可实现不同群组之间的网络可以做到应用外部的隔离。

    如图5所示,假若在共识节点创建3个虚拟处理单元,则对应创建3个链路,3个链路均与网桥连接,网桥的ip地址为10.0.1.0/24,则3个链路的ip地址依次为10.0.1.1/24、10.0.1.2/24、10.0.1.3/24。

    共识节点中的接收单元接收其他共识节点发送的报文数据,并将报文数据传输至流量控制单元,流量控制单元对报文数据进行两次筛选获得二级报文数据,并根据二级报文数据的区块链群组标识确定传输链路和虚拟处理单元。虚拟处理单元中的进程监听对应链路的ip地址和端口,在确定有报文数据传输时,读取报文数据,并对报文数据进行处理。

    如图6所示,本申请实施例提供一种区块链的数据处理方法,该数据处理方法应用于图3至图5所示的区块链系统,方法包括如下步骤:

    s201、共识节点接收其他共识节点发送的多个报文数据。

    其中,共识节点参与多个区块链群组,也就是共识节点接收到其他共识节点发送的多个区块链群组的报文数据,每个报文数据包括区块链群组标识,该区块链群组标识用于标识该报文数据所操作的区块链群组。

    在共识节点启动后,接收单元接收其他共识节点发送的报文数据,并将接收到报文数据传输至流量控制模块。

    s202、共识节点根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据。

    其中,共识节点的节点最大通信流量由节点的配置参数等限制。共识节点中流量控制模块统计当前时刻接收到的报文数据的第一数据量,并将该第一数据量和节点最大通信流量进行比较,并根据比较结果对多个报文数据筛选获得初级报文数据。

    若第一数据量不超过节点最大通信流量,无需丢弃报文数据,也就是初级报文数据为接收到的所有报文数据。若第一数据量超过节点最大通信流量,则需要丢弃部分报文数据。

    s203、根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据,并对二级报文数据进行处理。

    其中,共识节点中流量控制模块获得初级报文数据后,根据初级报文数据的区块链群组标识统计每个区块链群组对应的初级报文数据的数据量,若该数据量超过群组最大通信流量,则随机从初级报文数据选择部分初级报文数据作为二级报文数据,以使二级报文数据的数据量不超过群组最大通信流量。若该数据量不超过群组最大通信流量,保留该区块链群组的所有初级报文数据。

    在获得二级报文数据后,对报文头进行初步解析,根据报文头读取报文的大小、所属群组和报文的类型,在根据报文类型和报文内容在区块链群组进行操作。

    在本申请实施例提供区块链的数据处理方法中,根据节点接收到的报文数据量和节点最大通信流量对报文数据进行筛选,从节点层面实现流量控制,再根据初级报文数据的区块链群组标识确定每个区块链群组的报文数据量,再根据群组最大通信流量对报文数据进行二次筛选,从区块链群组层面实现流量控制,通过两个层次的流量控制,使每个区块链群组可以进行共识和交易,可以有效避免由于避免各个区块链群组之间流量占用导致区块链无法正常共识和交易。

    本申请另一实施例提供一种区块链的数据处理方法,该数据处理方法应用于图4至图5所示的区块链系统,方法包括如下步骤:

    s301、共识节点接收其他共识节点发送的多个报文数据。

    其中,该步骤已经在上述实施例中详细说明,此处不再赘述。

    s302、共识节点根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据。

    其中,如图7所示,共识节点的流量控制器具体采用如下方式对报文数据进行初次筛选获得初级报文数据:

    s3001、共识节点的流量控制器统计接收到的报文数据的第一数据量。

    s3002、共识节点的流量控制器判断第一数据量是否超过节点最大通信流量,若是,进入s3003,若否,则进入s3004。

    s3003、共识节点的流量控制器统计关键报文的第二数据量。

    其中,关键报文包括节点检测报文、共识报文或者交易报文。节点检测报文是指区块链节点之间的服务状态和节点认证的报文,例如心跳报文、协议握手报文等。共识报文是指区块链节点之间共识算法的报文。交易报文是指区块链节点接收和执行交易的报文,例如交易广播报文。

    非关键报文包括点对点消息报文、同步报文或者指令报文。指令报文是指区块链节点接收控制指令的报文,例如节点的参数调整报文。同步报文是指区块链节点之间同步最新的区块的报文,例如节点区块同步报文。点对点消息报文是指区块链节点之间的消息点对点传输的报文,例如节点之间的消息队列信息报文等。

    s3004、共识节点的流量控制器判断第二数据量是否超过节点最大通信流量,若是,s3005,否则,进入s3006。

    s3005、初级报文为其他共识节点发送的关键报文数据。

    其中,对初级报文数据进行报文类型识别,将节点检测报文、共识报文以及交易报文作为二级报文数据。

    s3006、初级报文为其他节点发送的关键报文数据和部分非关键报文数据。

    其中,对初级报文数据进行报文类型识别,将节点检测报文、共识报文以及交易报文作为二级报文数据。并从点对点消息报文、同步报文或者指令报文中选择一部分作为二级报文数据。

    s3007、初级报文数据为所接收到的所有报文数据。

    针对s3006,可以进一步区分非关键报文数据优先级,根据报文数据点优先级保留报文数据。

    设置非关键该报文优先级排序为:指令报文的优先级>同步报文的优先级>点对点消息报文的报文,并采用如下方式保留部分非关键报文数据:

    s001、首先保留点对点消息报文、同步报文以及指令报文,丢弃以共识角色为观察者的发送的报文数据。

    s002、判断点对点消息报文、同步报文、指令报文以及关键报文的数据量总和是否大于节点最大通信流量,若是,则进入s003,否则进入s007。

    s003,保留同步报文以及指令报文,丢弃以共识角色为观察者的发送的报文数据和点对点消息报文。

    s004、判断同步报文、指令报文以及关键报文的数据量总和是否大于节点最大通信流量,若是,则进入s005,否则,进入s008。

    s005、保留指令报文,丢弃以共识角色为观察者的发送的报文数据、点对点消息报文以及同步报文。

    s006、保留指令报文以及关键报文数据作为二级报文数据。

    s007、保留点对点消息报文、同步报文、指令报文以及关键报文数据作为二级报文数据。

    s008、保留同步报文、指令报文以及关键报文数据作为二级报文数据。

    通过s001至s008,可以实现从非关键报文数据中筛选出二级报文数据。

    s303、根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据。

    其中,共识节点中的流量控制模块根据初级报文数据的区块链群组标识统计获得每个区块链群组对应的初级报文数据的第三数据量。针对每个区块链群组,若第三数据量超过对应群组最大通信流量时,随机从区块链群组对应的初级报文数据中选择部分初级报文数据作为二级报文数据。若第三数据量不超过对应群组最大通信流量时,二级报文数据为区块链群组对应的初级报文数据。

    例如:通过初级筛选保留3个初级报文数据,其中1个初级报文数据用于对区块群组a进行操作,该初级报文数据的数据量为100k,另外2个初级报文数据用于对区块群组b进行操作,2个初级报文数据的数据量为1m。两个区块链群组a和b的群组最大通信流量为500k,保留区块链群组a的初级报文数据,需要从区块链群组b的初级报文数据选择其中一个初级报文数据,以使区块链群组b的报文数据量小于群组最大通信流量。可以删除另一个初级报文数据。也可以将该初级报文数据缓存,待下次传输。

    在设置群组最大通信流量时,可以根据如下公式计算最大群组通信流量:

    其中,表示第i个区块链群组接收到的节点检测报文的数据量,表示第i个区块链群组接收到的共识报文的数据量,表示第i个区块链群组接收到的交易报文的数据量,第i个区块链群组接收到的最大数据量,1≤i≤n,n表示区块链群组的总数,bmax表示节点最大通信流量。

    此处需要说明的是,非关键报文的优先级是动态变化的,每个群组的群组最大通信流量。

    s304、根据二级报文数据的报文类型确定二级报文数据的传输顺序。

    其中,在共识节点的流量控制模块通过筛选得到二级报文数据后,识别二级报文数据的报文类型,并根据二级报文数据的报文类型对二级报文数据进行排序。

    优选地,二级报文数据的优先级排序为:节点检测报文>共识报文>交易报文>指令报文>同步报文>点对点消息报文。

    s305、针对每个二级报文数据,根据二级报文数据的区块链群组标识确定用于处理二级报文数据的虚拟处理单元。

    其中,一个虚拟处理单元用于处理一个区块链群组的报文数据。在共识节点中流量控制模块获得二级报文数据后,提取二级报文数据的区块链群组标识,根据区块链群组标识确定传输链路和虚拟处理单元,

    s306、根据传输顺序将二级报文数据使用虚拟处理单元对应的链路传输至虚拟处理单元。

    其中,对二级报文数据按照类型进行分类,并将同一类型的报文数据放入同一队列。在对二级报文数据进行存储时,使用先进先出的(firstinfirstout,简称:fifo)数据结构存储该二级报文数据。

    按照二级报文数据的优先级发送和接收报文。具体报文数据接收过程如下:操作系统内核可将配置文件写入到指定的磁盘位置中,其中,配置文件用于配置二级报文数据的优先级。报文数据包到达网卡后产生一个中断,中断服务程序将接收的数据拷贝到网络协议收发包的缓存中,然后将网络协议收发包的缓存挂入软中断队列上,同时将设备轮询表加入软中断的轮询表并标记,然后等待软中断处理。发生软中断的时候,操作系统内核将网络协议收发包的缓存中从软中断队列中取出,使用对应链路将二级报文数据传输至虚拟处理单元并控制虚拟处理单元对二级报文数据处理。报文数据对外发送的过程同理,此处不再赘述。

    s307、控制虚拟处理单元对二级报文数据进行处理。

    其中,制虚拟处理单元在获得二级报文数据后,对报文头进行初步解析,根据报文头读取报文的大小、所属群组和报文的类型,在根据报文类型和报文内容在区块链群组进行操作。

    在本申请实施例提供的数据处理方法中,根据报文数据的重要程度报文数据进行筛选,在共识节点接收到的报文数据量超过节点最大通信流量时,删除部分非关键报文或者删除全部非关键报文,不影响其他关键报文数据的接收和发送,保证区块链群组可以正常共识和交易。再使用群组最大通信流量对每个群组接收数据量进行限制,均衡分配各个群组之间的流量,尽可能地防止出现少数群组占据过多资源,影响其他群组的正常运行,实现了不同区块链群组的有效隔离和控制。另外,每个虚拟处理单元所占用资源是相互隔离的,可以避免区块链群组占用资源导致部分区块链群组无法共识和交易。此外,按照报文数据的传输重要性进行筛选过滤以及传输,保证了区块链网络运行服务质量。

    本申请另一实施例提供一种数据处理方法,该数据处理方法应用于图3至图5所示的区块链系统,该方法包括如下步骤:

    s401、主共识节点接收其他共识节点发送的多个报文数据。

    s402、主共识节点根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据。

    s403、主共识节点根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据。

    s404、主共识节点针对每个二级报文数据,根据二级报文数据的区块链群组标识确定用于处理二级报文数据的虚拟处理单元,并控制虚拟处理单元对二级报文数据进行处理。

    其中,s401至s404已经在上述实施例中详细说明,此处不再赘述。

    s405、主共识节点统计获得所有虚拟处理单元对硬件资源的使用率。

    其中,区块链系统中的不同区块链群组,可以配置不同的共识算法。共识过程都会将节点分为主共识节点和从共识节点,且主共识节点的负载总是大于从共识节点。

    当前主共识节点可以统计获得所有虚拟处理单元对硬件资源的使用率。例如:主共识节点统计cpu使用率、内存占用率以及网络占用率。该硬件资源的使用率用于判断主共识节点是否超负荷运行。

    s406、主共识节点判断使用率到达预设阈值时,主共识节点向其他节点发送放弃请求。

    其中,当主共识节点判断使用率达到预设阈值时,则确定主共识节点已经超负荷运行。例如:判断cpu使用率、内存占用率以及网络占用率任意一项是否超过80%,若任意一项超过80%,则可以确定主共识节点超负荷运行。主共识节点向其他节点发送放弃请求。放弃请求用于放弃成为主共识节点,放弃请求包括请求放弃的主共识节点对应的区块链群组的标识。

    s407、其他共识节点切换视图。

    其中,视图记录每个节点的共识状态,相同视图节点维护相同的主共识节点和从共识节点的节点列表。其他共识节点在收到该放弃请求后,重新发起区块链群组的主共识节点的选举流程,启动切换视图。

    以pbft算法为例,视图切换的算法为:

    li=(vi nb)%nn

    其中,li表示新主共识节点的标识,vi表示视图版本,nb表示区块数量,nn表示共识节点的数量。

    当leader出现故障,会发生视图切换,若视图切换成功,也就是至少2f 1个节点达到相同视图,则根据新的视图选出新主共识节点,且新共识节点未发出放弃请求,则由新共识节点开始出块,否则继续进行视图切换,直至大于等于2f 1的共识节点的视图相同。

    主共识节点收到其他共识节点发送的选举成功的报文后,负责从交易池取交易,并打包成新区块。其他从共识节点在收到共识报文后,从共识节点的线程执行共识流程,共识过程会执行区块,共识成功后,将区块以及区块执行结果提交到区块链,区块链统一将这些信息写入底层存储,并触发交易池删除上链区块中包含的所有交易,并将交易执行结果以回调的形式通知客户端。

    在上述实施例中,考虑到主共识节点的数据处理量较多,会占用较多资源,容易成为整个区块链系统的瓶颈,主共识节点实时监控自身硬件资源的使用率,当使用率超过预设阈值时,发送放弃请求,以使其他节点可以竞争区块链系统的主共识节点,均衡各个共识节点的数据负载,提高区块链的运行效率。

    如图8所示,本申请另一实施例提供一种区块链的数据处理装置500,数据处理装置500包括:

    接收模块501,用于接收其他共识节点发送的多个报文数据;其中,报文数据包括区块链群组标识;

    处理模块502,用于根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据;

    处理模块502还用于根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据,并对二级报文数据进行处理。

    可选地,处理模块502具体用于:

    若第一数据量不超过节点最大通信流量时,初级报文数据为所接收到的所有报文数据;

    若第一数据量超过节点最大通信流量,且所有关键报文数据的第二数据量不超过节点最大通信流量时,接收其他节点发送的关键报文数据和部分非关键报文数据;

    若第二数据量超过节点最大通信流量时,接收其他共识节点发送的关键报文数据。

    可选地,关键报文包括节点检测报文、共识报文或者交易报文;非关键报文包括点对点消息报文、同步报文或者指令报文。

    可选地,处理模块502具体用于:

    根据初级报文数据的区块链群组标识统计获得每个区块链群组对应的初级报文数据的第三数据量;

    针对每个区块链群组,若第三数据量超过对应群组最大通信流量时,随机从区块链群组对应的初级报文数据中选择部分初级报文数据作为二级报文数据;

    针对每个区块链群组,若第三数据量不超过对应群组最大通信流量时,二级报文数据为区块链群组对应的初级报文数据。

    可选地,群组最大通信流量为:

    其中,表示第i个区块链群组接收到的节点检测报文的数据量,表示第i个区块链群组接收到的共识报文的数据量,表示第i个区块链群组接收到的交易报文的数据量,第i个区块链群组接收到的最大数据量,1≤i≤n,n表示区块链群组的总数,bmax表示节点最大通信流量。

    可选地,处理模块502具体用于:

    针对每个二级报文数据,根据二级报文数据的区块链群组标识确定用于处理二级报文数据的虚拟处理单元;

    控制虚拟处理单元对二级报文数据进行处理。

    可选地,处理模块502还用于:

    根据二级报文数据的报文类型确定二级报文数据的传输顺序;

    根据传输顺序将二级报文数据使用虚拟处理单元对应的链路传输至虚拟处理单元。

    可选地,处理模块502还用于:

    统计获得所有虚拟处理单元对硬件资源的使用率;

    当使用率到达预设阈值时,向其他节点发送放弃请求;其中,放弃请求包括请求放弃的主共识节点对应的区块链群组的标识。

    如图9所示,本申请另一实施例提供的节点设备600包括:发送器601、接收器602、存储器603以及处理器604。

    发送器601,用于发送指令和数据;

    接收器602,用于接收指令和数据;

    存储器603,用于存储计算机执行指令;

    处理器604,用于执行存储器存储的计算机执行指令,以实现上述实施例中区块链的数据处理方法所执行的各个步骤。具体可以参见前述区块链的数据处理方法实施例中的相关描述。

    可选地,上述存储器603既可以是独立的,也可以跟处理器604集成在一起。当存储器603独立设置时,该节点设备还包括总线,用于连接存储器603和处理器604。

    本申请另一实施例提供一种区块链系统,包括多个共识节点,其中,每个共识节点包括存储器和服务器;

    存储器,用于存储程序;

    处理器,用于执行存储器存储的程序,当程序被执行时,处理器用于执行上述节点设备执行的区块链的数据处理方法。

    本申请另一实施例还提供一种计算机可读存储介质,计算机可读存储介质中存储有计算机执行指令,当处理器执行计算机执行指令时,实现如上节点设备所执行的上述节点设备执行的区块链的数据处理方法。

    本申请另一实施例还提供一种计算机程序产品,包括指令,指令被处理器执行时实现上述节点设备执行的区块链的数据处理方法。

    本领域普通技术人员可以理解:实现上述各方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成。前述的程序可以存储于一计算机可读取存储介质中。该程序在执行时,执行包括上述各方法实施例的步骤;而前述的存储介质包括:rom、ram、磁碟或者光盘等各种可以存储程序代码的介质。

    最后应说明的是:以上各实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述各实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分或者全部技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。


    技术特征:

    1.一种区块链的数据处理方法,其特征在于,所述方法应用于共识节点,所述方法包括:

    接收其他共识节点发送的多个报文数据;其中,所述报文数据包括区块链群组标识;

    根据所述多个报文数据的第一数据量和所述共识节点的节点最大通信流量对所述多个报文数据进行筛选获得初级报文数据;

    根据每个区块链群组的群组最大通信流量对所述初级报文数据进行筛选获得二级报文数据,并对所述二级报文数据进行处理。

    2.根据权利要求1所述的方法,其特征在于,根据所述多个报文数据的第一数据量和所述共识节点的节点最大通信流量对所述多个报文数据进行筛选获得初级报文数据,具体包括:

    若所述第一数据量不超过节点最大通信流量,所述初级报文数据为所接收到的所有报文数据;

    若所述第一数据量超过所述节点最大通信流量,且所有关键报文数据的第二数据量不超过所述节点最大通信流量时,所述初级报文数据为其他节点发送的所述关键报文数据和部分非关键报文数据;

    若所述第二数据量超过所述节点最大通信流量,所述初级报文数据为其他共识节点发送的所述关键报文数据。

    3.根据权利要求2所述的方法,其特征在于,所述关键报文数据包括节点检测报文、共识报文或者交易报文;所述非关键报文数据包括点对点消息报文、同步报文或者指令报文。

    4.根据权利要求1所述的方法,其特征在于,根据每个区块链群组的群组最大通信流量对所述初级报文数据进行筛选获得二级报文数据,具体包括:

    根据所述初级报文数据的区块链群组标识统计获得每个区块链群组对应的所述初级报文数据的第三数据量;

    针对每个区块链群组,若所述第三数据量超过对应群组最大通信流量时,随机从所述区块链群组对应的所述初级报文数据中选择部分初级报文数据作为所述二级报文数据;

    针对每个区块链群组,若所述第三数据量不超过对应群组最大通信流量时,所述二级报文数据为所述区块链群组对应的所述初级报文数据。

    5.根据权利要求4所述的方法,其特征在于,所述群组最大通信流量为:

    其中,表示第i个区块链群组接收到的节点检测报文的数据量,表示第i个区块链群组接收到的共识报文的数据量,表示第i个区块链群组接收到的交易报文的数据量,第i个区块链群组接收到的最大数据量,1≤i≤n,n表示区块链群组的总数。

    6.根据权利要求1至5中任意一项所述的方法,其特征在于,并对所述二级报文数据进行处理,具体包括:

    针对每个二级报文数据,根据所述二级报文数据的区块链群组标识确定用于处理所述二级报文数据的虚拟处理单元;

    控制所述虚拟处理单元对所述二级报文数据进行处理。

    7.根据权利要求6所述的方法,其特征在于,在根据所述二级报文数据的区块链群组标识确定用于处理所述二级报文数据的虚拟处理单元之后,所述方法还包括:

    根据所述二级报文数据的报文类型确定所述二级报文数据的传输顺序;

    根据所述传输顺序将所述二级报文数据使用所述虚拟处理单元对应的链路传输至所述虚拟处理单元。

    8.根据权利要求6所述的方法,其特征在于,所述共识节点为主共识节点,在控制所述虚拟处理单元对所述二级报文数据进行处理之后,所述方法还包括:

    统计获得所有虚拟处理单元对硬件资源的使用率;

    当所述使用率到达预设阈值时,向其他节点发送放弃请求;其中,所述放弃请求包括请求放弃的主共识节点对应的区块链群组的标识。

    9.一种节点设备,其特征在于,包括:

    存储器,用于存储程序;

    处理器,用于执行所述存储器存储的所述程序,当所述程序被执行时,所述处理器用于执行如权利要求1至8中任一项所述的数据处理方法。

    10.一种区块链系统,其特征在于,包括多个如权利要求9所述的节点设备。

    11.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质中存储有计算机执行指令;

    其中,所述计算机执行指令被处理器执行时用于实现如权利要求1至8中任一项所述数据处理方法。

    12.一种计算机程序产品,包括指令,其特征在于,所述指令被处理器执行时实现权利要求1至8中任一项所述数据处理方法。

    技术总结
    本申请实施例提供一种区块链的数据处理方法、节点设备以及系统,接收其他共识节点发送的多个报文数据;其中,报文数据包括区块链群组标识,根据多个报文数据的第一数据量和共识节点的节点最大通信流量对多个报文数据进行筛选获得初级报文数据,根据每个区块链群组的群组最大通信流量对初级报文数据进行筛选获得二级报文数据,并对二级报文数据进行处理,本申请中分别根据共识节点的最大通信流量和群组最大通信流量对报文数据进行两次筛选,实现节点层面和群组层面的筛选,可以保证在同一个共识节点上运行多个区块链群组时不会出现资源抢占,使得区块链群组可以正常共识和交易。

    技术研发人员:毛嘉宇;范瑞彬;张开翔;张龙;储雨知;王越
    受保护的技术使用者:深圳前海微众银行股份有限公司
    技术研发日:2020.12.15
    技术公布日:2021.03.12

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

    最新回复(0)