发明内容
本发明的目的在于提供一种服务器、区块链验签解密的方法及存储介质,旨在通过多线程对事务进行并行动态验签解密,消除事务提交的瓶颈,提升事务处理速度及服务器性能。
为实现上述目的,本发明提供一种服务器,所述服务器为区块链数据节点,所述服务器包括存储器及与所述存储器连接的处理器,所述存储器中存储有可在所述处理器上运行的验签解密系统,所述验签解密系统被所述处理器执行时实现如下步骤:
事务解析步骤,在接收到区块链排序节点打包的事务块后,对所述事务块进行解析,以获取该事务块中的各个事务;
多线程验签解密步骤,获取当前的事务请求秒流量、所述服务器的CPU当前的负载状况信息及预设的处理值,基于当前的事务请求秒流量、所述负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将所述事务分配给所述CPU进行动态并行验签解密;
事务收集处理步骤,在完成验签解密后,收集该多个线程中的进行验签解密后的事务,对验签解密后的事务执行多版本检查和事务持久化处理后,以进行提交。
优选地,所述负载状况信息包括CPU工作时间比例,预设的处理值包括预设的用于验签解密的CPU的最大数值、预设的验签解密时间,所述多线程验签解密步骤包括:
根据当前的事务请求秒流量及CPU工作时间比例实时分析当前验签解密所需的时间是否大于该预设的验签解密时间,且实时分析CPU的工作时间比例是否达到上限值,以及分析当前线程的数量是否小于预设的用于验签解密的CPU的最大数值;
若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量小于预设的用于验签解密的CPU的最大数值,则增加预设数量的线程,以对所述事务进行验签解密。
优选地,所述多线程验签解密步骤还包括:
若当前验签解密所需的时间小于等于该预设的验签解密时间,则返回实时分析当前验签解密所需的时间是否大于该预设的验签解密时间的步骤。
优选地,各个事务预先标识有处理顺序,所述事务收集处理步骤包括:
在完成验签解密后,收集该多个线程中的进行验签解密后的事务,按照所述处理顺序将进行验签解密后的事务进行排序,对排序后的事务执行多版本检查和事务持久化处理后,以进行提交。
为实现上述目的,本发明还提供一种区块链验签解密的方法,所述区块链验签解密的方法包括:
事务解析步骤,在接收到区块链排序节点打包的事务块后,对所述事务块进行解析,以获取该事务块中的各个事务;
多线程验签解密步骤,获取当前的事务请求秒流量、所述服务器的CPU当前的负载状况信息及预设的处理值,基于当前的事务请求秒流量、所述负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将所述事务分配给所述CPU进行动态并行验签解密;
事务收集处理步骤,在完成验签解密后,收集该多个线程中的进行验签解密后的事务,对验签解密后的事务执行多版本检查和事务持久化处理后,以进行提交。
优选地,所述负载状况信息包括CPU工作时间比例,预设的处理值包括预设的用于验签解密的CPU的最大数值、预设的验签解密时间,所述多线程验签解密步骤包括:
根据当前的事务请求秒流量及CPU工作时间比例实时分析当前验签解密所需的时间是否大于该预设的验签解密时间,且实时分析CPU的工作时间比例是否达到上限值,以及分析当前线程的数量是否小于预设的用于验签解密的CPU的最大数值;
若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量小于预设的用于验签解密的CPU的最大数值,则增加预设数量的线程,以对所述事务进行验签解密。
优选地,所述多线程验签解密步骤还包括:
若当前验签解密所需的时间小于等于该预设的验签解密时间,则返回实时分析当前验签解密所需的时间是否大于该预设的验签解密时间的步骤。
优选地,各个事务预先标识有处理顺序,所述事务收集处理步骤包括:
在完成验签解密后,收集该多个线程中的进行验签解密后的事务,按照所述处理顺序将进行验签解密后的事务进行排序,对排序后的事务执行多版本检查和事务持久化处理后,以进行提交。
优选地,所述事务包括对数据库中的数据进行编辑的操作。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有验签解密系统,所述验签解密系统被处理器执行时实现上述的区块链验签解密的方法的步骤。
本发明的有益效果是:本发明对接收到的事务块进行解析以获取事务,基于当前的事务请求秒流量、负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将事务分配给CPU进行验签解密,并在在完成验签解密后,按照处理顺序将进行验签解密后的事务进行排序以进行提交,本发明通过多线程对事务进行并行动态验签解密,使得事务提交的瓶颈得以消除,尤其在多核CPU的服务器上,性能提升更加显著,大大提高事务处理速度。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施例仅用以解释本发明,并不用于限定本发明。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
需要说明的是,在本发明中涉及“第一”、“第二”等的描述仅用于描述目的,而不能理解为指示或暗示其相对重要性或者隐含指明所指示的技术特征的数量。由此,限定有“第一”、“第二”的特征可以明示或者隐含地包括至少一个该特征。另外,各个实施例之间的技术方案可以相互结合,但是必须是以本领域普通技术人员能够实现为基础,当技术方案的结合出现相互矛盾或无法实现时应当认为这种技术方案的结合不存在,也不在本发明要求的保护范围之内。
参阅图1所示,是本发明区块链验签解密的方法的较佳实施例的应用环境示意图。该应用环境示意图包括服务器1、服务器2及终端设备3。服务器1与服务器2通过网络进行数据交互,服务器2可以通过网络、近场通信技术等适合的技术与终端设备3进行数据交互。服务器1为区块链数据节点,服务器2为区块链排序节点。
所述终端设备3包括,但不限于,任何一种可与用户通过键盘、鼠标、遥控器、触摸板或者声控设备等方式进行人机交互的电子产品,例如,个人计算机、平板电脑、智能手机、个人数字助理(Personal Digital Assistant,PDA)、游戏机、交互式网络电视(InternetProtocol Television,IPTV)、智能式穿戴式设备、导航装置等等的可移动设备,或者诸如数字TV、台式计算机、笔记本、服务器等等的固定终端。终端设备3用于向服务器2发出打包事务块的指令。
所述服务器2用于将事务打包为事务块然后发送给服务器1。
所述服务器1或服务器2是一种能够按照事先设定或者存储的指令,自动进行数值计算和/或信息处理的设备。所述服务器1可以是计算机、也可以是单个网络服务器、多个网络服务器组成的服务器组或者基于云计算的由大量主机或者网络服务器构成的云,其中云计算是分布式计算的一种,由一群松散耦合的计算机集组成的一个超级虚拟计算机。
在本实施例中,服务器1可包括,但不仅限于,可通过系统总线相互通信连接的存储器11、处理器12、网络接口13,存储器11存储有可在处理器12上运行的验签解密系统。需要指出的是,图1仅示出了具有组件11-13的服务器1,但是应理解的是,并不要求实施所有示出的组件,可以替代的实施更多或者更少的组件。
其中,存储器11包括内存及至少一种类型的可读存储介质。内存为服务器1的运行提供缓存;可读存储介质可为如闪存、硬盘、多媒体卡、卡型存储器(例如,SD或DX存储器等)、随机访问存储器(RAM)、静态随机访问存储器(SRAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、可编程只读存储器(PROM)、磁性存储器、磁盘、光盘等的非易失性存储介质。在一些实施例中,可读存储介质可以是服务器1的内部存储单元,例如该服务器1的硬盘;在另一些实施例中,该非易失性存储介质也可以是服务器1的外部存储设备,例如服务器1上配备的插接式硬盘,智能存储卡(Smart Media Card,SMC),安全数字(SecureDigital,SD)卡,闪存卡(Flash Card)等。本实施例中,存储器11的可读存储介质通常用于存储安装于服务器1的操作系统和各类应用软件,例如本发明一实施例中的验签解密系统的程序代码等。此外,存储器11还可以用于暂时地存储已经输出或者将要输出的各类数据。
所述处理器12在一些实施例中可以是中央处理器(Central Processing Unit,CPU)、控制器、微控制器、微处理器、或其他数据处理芯片。该处理器12通常用于控制所述服务器1的总体操作,例如执行与所述服务器2进行数据交互或者通信相关的控制和处理等。本实施例中,所述处理器12用于运行所述存储器11中存储的程序代码或者处理数据,例如运行验签解密系统等。
所述网络接口13可包括无线网络接口或有线网络接口,该网络接口13通常用于在所述服务器1与其他电子设备之间建立通信连接。本实施例中,网络接口13主要用于将服务器1与服务器2相连,在服务器1与服务器2之间建立数据传输通道和通信连接。
所述验签解密系统存储在存储器11中,包括至少一个存储在存储器11中的计算机可读指令,该至少一个计算机可读指令可被处理器器12执行,以实现本申请各实施例的方法;以及,该至少一个计算机可读指令依据其各部分所实现的功能不同,可被划为不同的逻辑模块。
在一实施例中,上述验签解密系统被所述处理器12执行时实现如下步骤:
事务解析步骤,在接收到区块链排序节点打包的事务块后,对所述事务块进行解析,以获取该事务块中的各个事务,其中,各个事务预先标识有处理顺序;
在区块链网络中,区块链排序节点将预先标识有处理顺序的各个事务打包成事务块的形式,然后将事务块发送给区块链数据节点。由区块链数据节点逐个事务块进行验签解密。
其中,事务例如为数据库中的数据相关的操作,包括数据的修改操作、数据的删除操作等,当然也可以是其他的操作。将各个事务标识对应的处理顺序,例如可以按照数字“1、2、3…”的顺序对事务进行标识,或者按照字母“a、b、c…”的顺序对事务进行标识,等等,对事务块解析后得到各个事务。
多线程验签解密步骤,获取当前的事务请求秒流量、所述服务器的CPU当前的负载状况信息及预设的处理值,基于当前的事务请求秒流量、所述负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将所述事务分配给所述CPU进行动态并行验签解密;
其中,本实施例的CPU与处理器12同为服务器1的中央处理器,处理器12主要用于运行验签解密系统,CPU有多个,主要用于对事务进行验签解密。
其中,CPU当前的负载状况信息包括CPU工作时间比例(当然也可以是CPU空闲时间比例),CPU工作时间比例越大则CPU的使用率越高;预设的处理值包括预设的用于验签解密的CPU的最大数值、预设的验签解密时间,预设的用于验签解密的CPU的最大数值例如为16个,预设的验签解密时间例如为10秒。
本实施例中,同时考虑当前的事务请求秒流量、负载状况信息及预设的处理值来建立线程:在当前的事务请求秒流量较大、当前的CPU工作时间比例较小时,为了使得验签解密时间达到预设的验签解密时间,可以建立数量相对多的线程;在当前的事务请求秒流量较小、当前的CPU工作时间比例较小时,可以建立数量相对少的线程,等等,实现事务的并行验签解密,提高验签解密的速度。
例如:当前的事务请求秒流量为10000/h(每小时10000条数据),当前的CPU工作时间比例为20%,预设的验签解密时间为10秒,经分析可以建立5个线程用于验签解密,基于该5个线程将事务分配给5个CPU进行并行验签解密。
此外,在CPU进行验签解密的实际过程中可能出现其他因素影响验签解密的时间,为了使得验签解密时间不大于预设的验签解密时间,本实施例还可以动态调整线程的数量,例如,在受其他因素的影响使得验签解密时间大于预设的验签解密时间的情况下,若当前的事务请求秒流量较大、当前的CPU工作时间比例较小,以及当前线程的数量不超过预设的用于验签解密的CPU的最大数值时,可以增加线程的数量。理想状态下,一个线程分配事务给一个CPU进行验签解密,因此线程数量的增加的同时,也相当于调整当前用于验签解密CPU的数量。
事务收集处理步骤,在完成验签解密后,收集该多个线程中的进行验签解密后的事务,对验签解密后的事务执行多版本检查和事务持久化处理后,以进行提交。
本实施例中,由于每个事务标识有处理顺序,在完成验签解密后,收集该多个线程中的进行验签解密后的事务,按照事务标识的处理顺序对其进行排序,基于数据库的标准处理方法对排序后的事务进行多版本检查,然后将检查后的事务进行事务持久化处理,即将其进行存储,最后提交。
与现有技术相比,本实施例对接收到的事务块进行解析以获取事务,基于当前的事务请求秒流量、负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将事务分配给CPU进行验签解密,并在在完成验签解密后,按照处理顺序将进行验签解密后的事务进行排序以进行提交,本实施例通过多线程对事务进行并行动态验签解密,使得事务提交的瓶颈得以消除,尤其在多核CPU的服务器上,性能提升更加显著,大大提高事务处理速度。
在一优选的实施例中,在上述的图1的实施例的基础上,上述多线程验签解密步骤包括:
根据当前的事务请求秒流量及CPU工作时间比例实时分析当前验签解密所需的时间是否大于该预设的验签解密时间,且实时分析CPU的工作时间比例是否达到上限值,以及分析当前线程的数量是否小于预设的用于验签解密的CPU的最大数值;
若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量小于预设的用于验签解密的CPU的最大数值,则增加预设数量的线程,以对所述事务进行验签解密,且返回上述的根据当前的事务请求秒流量及CPU工作时间比例实时分析当前验签解密所需的时间是否大于该预设的验签解密时间的步骤,以实时对验签解密过程进行监控。
本实施例中,CPU工作时间比例的上限值优选为50%或者为66%。在验签解密的过程中进行实时监控及动态调整:在实时分析得出当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量小于预设的用于验签解密的CPU的最大数值时,则增加预设数量的线程,例如增加5个线程,基于所有的线程将事务分配给CPU进行验签解密。
本实施例基于多线程对事务进行并行验签解密,并在验签解密的过程中进行实时监控及线程数量的动态调整,进一步提高事务处理速度,提升服务器的性能。
优选地,上述多线程验签解密步骤包括:若当前验签解密所需的时间小于等于该预设的验签解密时间,则返回实时分析当前验签解密所需的时间是否大于该预设的验签解密时间,且实时分析CPU的工作时间比例是否达到上限值,以及分析当前线程的数量是否小于预设的用于验签解密的CPU的最大数值的步骤,以实时对验签解密过程进行监控。
优选地,若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例达到上限值,则按照当前的线程的数量对事务进行验签解密,同时返回上述实时分析的步骤,以实时对验签解密过程进行监控;以及
若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量等于预设的用于验签解密的CPU的最大数值,则按照当前的线程的数量对事务进行验签解密,同时返回上述实时分析的步骤,以实时对验签解密过程进行监控。
如图2所示,图2为本发明区块链验签解密的方法一实施例的流程示意图,该区块链验签解密的方法包括以下步骤:
S1,事务解析步骤,在接收到区块链排序节点打包的事务块后,对所述事务块进行解析,以获取该事务块中的各个事务;
在区块链网络中,区块链排序节点将预先标识有处理顺序的各个事务打包成事务块的形式,然后将事务块发送给区块链数据节点。由区块链数据节点逐个事务块进行验签解密。
其中,事务例如为数据库中的数据相关的操作,包括数据的修改操作、数据的删除操作等,当然也可以是其他的操作。将各个事务标识对应的处理顺序,例如可以按照数字“1、2、3…”的顺序对事务进行标识,或者按照字母“a、b、c…”的顺序对事务进行标识,等等,对事务块解析后得到各个事务。
S2,多线程验签解密步骤,获取当前的事务请求秒流量、所述服务器的CPU当前的负载状况信息及预设的处理值,基于当前的事务请求秒流量、所述负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将所述事务分配给所述CPU进行动态并行验签解密;
其中,CPU当前的负载状况信息包括CPU工作时间比例(当然也可以是CPU空闲时间比例),CPU工作时间比例越大则CPU的使用率越高;预设的处理值包括预设的用于验签解密的CPU的最大数值、预设的验签解密时间,预设的用于验签解密的CPU的最大数值例如为16个,预设的验签解密时间例如为10秒。
本实施例中,同时考虑当前的事务请求秒流量、负载状况信息及预设的处理值来建立线程:在当前的事务请求秒流量较大、当前的CPU工作时间比例较小时,为了使得验签解密时间达到预设的验签解密时间,可以建立数量相对多的线程;在当前的事务请求秒流量较小、当前的CPU工作时间比例较小时,可以建立数量相对少的线程,等等,实现事务的并行验签解密,提高验签解密的速度。
例如:当前的事务请求秒流量为10000/h(每小时10000条数据),当前的CPU工作时间比例为20%,预设的验签解密时间为10秒,经分析可以建立5个线程用于验签解密,基于该5个线程将事务分配给5个CPU进行并行验签解密。
此外,在CPU进行验签解密的实际过程中可能出现其他因素影响验签解密的时间,为了使得验签解密时间不大于预设的验签解密时间,本实施例还可以动态调整线程的数量,例如,在受其他因素的影响使得验签解密时间大于预设的验签解密时间的情况下,若当前的事务请求秒流量较大、当前的CPU工作时间比例较小,以及当前线程的数量不超过预设的用于验签解密的CPU的最大数值时,可以增加线程的数量。理想状态下,一个线程分配事务给一个CPU进行验签解密,因此线程数量的增加的同时,也相当于调整当前用于验签解密CPU的数量。
S3,事务收集处理步骤,在完成验签解密后,收集该多个线程中的进行验签解密后的事务,对验签解密后的事务执行多版本检查和事务持久化处理后,以进行提交。
本实施例中,由于每个事务标识有处理顺序,在完成验签解密后,收集该多个线程中的进行验签解密后的事务,按照事务标识的处理顺序对其进行排序,基于数据库的标准处理方法对排序后的事务进行多版本检查,然后将检查后的事务进行事务持久化处理,即将其进行存储,最后提交。
与现有技术相比,本实施例对接收到的事务块进行解析以获取事务,基于当前的事务请求秒流量、负载状况信息及预设的处理值建立多个线程,基于建立的多个线程将事务分配给CPU进行验签解密,并在在完成验签解密后,按照处理顺序将进行验签解密后的事务进行排序以进行提交,本实施例通过多线程对事务进行并行动态验签解密,使得事务提交的瓶颈得以消除,尤其在多核CPU的服务器上,性能提升更加显著,大大提高事务处理速度。
在一优选的实施例中,在上述的图2的实施例的基础上,上述多线程验签解密步骤包括:
根据当前的事务请求秒流量及CPU工作时间比例实时分析当前验签解密所需的时间是否大于该预设的验签解密时间,且实时分析CPU的工作时间比例是否达到上限值,以及分析当前线程的数量是否小于预设的用于验签解密的CPU的最大数值;
若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量小于预设的用于验签解密的CPU的最大数值,则增加预设数量的线程,以对所述事务进行验签解密,且返回上述的根据当前的事务请求秒流量及CPU工作时间比例实时分析当前验签解密所需的时间是否大于该预设的验签解密时间的步骤,以实时对验签解密过程进行监控。
本实施例中,CPU工作时间比例的上限值优选为50%或者为66%。在验签解密的过程中进行实时监控及动态调整:在实时分析得出当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量小于预设的用于验签解密的CPU的最大数值时,则增加预设数量的线程,例如增加5个线程,基于所有的线程将事务分配给CPU进行验签解密。
本实施例基于多线程对事务进行并行验签解密,并在验签解密的过程中进行实时监控及线程数量的动态调整,进一步提高事务处理速度,提升服务器的性能。
优选地,上述多线程验签解密步骤包括:若当前验签解密所需的时间小于等于该预设的验签解密时间,则返回实时分析当前验签解密所需的时间是否大于该预设的验签解密时间,且实时分析CPU的工作时间比例是否达到上限值,以及分析当前线程的数量是否小于预设的用于验签解密的CPU的最大数值的步骤,以实时对验签解密过程进行监控。
优选地,若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例达到上限值,则按照当前的线程的数量对事务进行验签解密,同时返回上述实时分析的步骤,以实时对验签解密过程进行监控;以及
若当前验签解密所需的时间大于该预设的验签解密时间,且CPU工作时间比例未达到上限值,以及当前线程的数量等于预设的用于验签解密的CPU的最大数值,则按照当前的线程的数量对事务进行验签解密,同时返回上述实时分析的步骤,以实时对验签解密过程进行监控。
本发明还提供一种计算机可读存储介质,所述计算机可读存储介质上存储有验签解密系统,所述验签解密系统被处理器执行时实现上述的区块链验签解密的方法的步骤。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如ROM/RAM、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。