发明内容
本申请实施例提供一种业务受理的方法,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务受理的方法,包括:
第一区块链节点通过自身包含的一个服务器接收客户端发送的业务请求,所述第一区块链节点包含有多个服务器以及至少一个业务存储器;
将所述业务请求存储在自身包含的业务存储器中;
将所述业务请求发送给共识网络中的各第二区块链节点,以使所述各第二区块链节点接收到所述业务请求后,将所述业务请求存储在自身包含的业务存储器中,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务受理的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务受理的装置,包括:
接收模块,接收客户端发送的业务请求;
存储模块,将所述业务请求存储在自身对应的业务存储器中;
发送模块,将所述业务请求发送给共识网络中的各第二区块链节点,以使所述各第二区块链节点接收到所述业务请求后,将所述业务请求存储在自身包含的业务存储器中,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务受理的方法,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务受理的方法,包括:
第二区块链节点通过自身包含的一个服务器接收第一区块链节点发送的业务请求,所述第二区块链节点包含有多个服务器以及至少一个业务存储器,所述第一区块链节点包含有多个服务器以及至少一个业务存储器;
将所述业务请求存储在自身包含的业务存储器中。
本申请实施例提供一种业务受理的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务受理的装置,包括:
接收请求模块,接收第一区块链节点发送的业务请求,所述第一区块链节点包含有多个服务器以及至少一个业务存储器;
请求存储模块,将所述业务请求存储在自身对应的业务存储器中。
本申请实施例提供一种业务受理的方法,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务受理的方法,包括:
客户端接收用户输入的业务信息;
根据所述业务信息,生成相应的业务请求;
将所述业务请求发送至第一区块链节点包含的一个服务器,以使所述第一区块链节点将接收到的所述业务请求存储在第一区块链节点包含的业务存储器中,并将所述业务请求发送给共识网络中的各第二区块链节点,所述第二区块链节点包含有多个服务器以及至少一个业务存储器,所述第一区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务受理的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务受理的装置,包括:
接收信息模块,接收用户输入的业务信息;
请求生成模块,根据所述业务信息,生成相应的业务请求;
发送模块,将所述业务请求发送至第一区块链节点包含的一个服务器,以使所述第一区块链节点将接收到的所述业务请求存储在第一区块链节点包含的业务存储器中,并将所述业务请求发送给共识网络中的各第二区块链节点,所述第二区块链节点包含有多个服务器以及至少一个业务存储器,所述第一区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务共识的方法,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的方法,包括:
第一区块链节点从自身包含的多个服务器中选取服务器,所述第一区块链节点包含有多个服务器以及至少一个业务存储器;
通过选取出的服务器从自身包含的业务存储器中捞取至少一个业务请求;
通过选取出的服务器将所述至少一个业务请求打包成预处理块,并将所述预处理块发送至共识网络中的各第二区块链节点,以使所述各第二区块链节点对所述预处理块进行业务共识,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务共识的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的装置,包括:
请求捞取模块,从自身对应的业务存储器中捞取至少一个业务请求;
发送模块,将所述至少一个业务请求打包成预处理块,并将所述预处理块发送至共识网络中的各第二区块链节点,以使所述各第二区块链节点对所述预处理块进行业务共识,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务共识的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的装置,包括:
选取模块,从第一区块链节点包含的多个服务器中选取服务器,所述第一区块链节点包含有多个服务器以及至少一个业务存储器。
本申请实施例提供一种业务共识的方法,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的方法,包括:
区块链节点通过自身包含的第一服务器获取预处理块,所述区块链节点包含有多个服务器以及至少一个业务存储器;
根据自身包含的业务存储器中存储的各业务请求,通过所述第一服务器对所述预处理块进行业务共识。
本申请实施例提供一种业务共识的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的装置,包括:
获取模块,获取预处理块;
共识模块,根据自身对应的业务存储器中存储的各业务请求,对所述预处理块进行业务共识。
本申请实施例提供一种业务共识的方法,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的方法,包括:
针对共识网络中的每个区块链节点,注册中心获取该区块链节点包含的多个服务器的地址,每个区块链节点包含有多个服务器以及至少一个业务存储器;
将获取到的该区块链节点包含的多个服务器的地址发送至共识网络中其他区块链节点以及客户端存储。
本申请实施例提供一种业务共识的装置,用以解决现有技术中区块链节点在进行业务处理时稳定性较差、业务处理效率较低的问题。
本申请实施例提供了一种业务共识的装置,包括:
获取模块,针对共识网络中的每个区块链节点,获取该区块链节点包含的多个服务器的地址,每个区块链节点包含有多个服务器以及至少一个业务存储器;
发送模块,将获取到的该区块链节点包含的多个服务器的地址发送至共识网络中其他区块链节点以及客户端存储。
本申请实施例采用的上述至少一个技术方案能够达到以下有益效果:
在本申请实施例中,第一区块链节点中包含有多个服务器,第一区块链节点可通过包含的一个服务器接收从客户端发送的业务请求并存储,以及通过包含的一个服务器从该第一区块链节点包含的业务存储器中捞取至少一个业务请求,得到预处理块,并将预处理块通过捞取至少一个业务请求服务器发送至共识网络的各第二区块链节点中,以通过各第二区块链节点对该预处理块进行业务共识。由于在第一区块链节点包含的多个服务器中,只要有一个服务器可用,即能保证该第一区块链节点可用,从而极大的提高了第一区块链节点在共识网络中的稳定性。不仅如此,由于第一区块链节点中包含的每个服务器均可接收用户通过客户端发送的业务请求,并且每个服务器均可向共识网络中的各第二区块链节点发起业务共识,从而极大的提高了区块链业务的业务处理效率。
具体实施方式
为了使本技术领域的人员更好地理解本申请中的技术方案,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本申请保护的范围。
图1为本申请实施例提供的业务共识的过程示意图,具体包括以下步骤:
S101:第一区块链节点通过所述第一区块链节点包含的多个服务器中的服务器接收客户端发送的业务请求。
在本申请实施例中,用户在进行业务处理的过程中,可通过客户端向第一区块链节点发送业务请求,其中,这里提到的客户端可以是用户所持有的终端中安装的客户端,用户可在终端中启动该客户端,并在客户端向用户展示的界面中输入业务信息,而客户端接收到用户输入的业务信息后,可根据客户端中预选存储的业务逻辑,生成相应的业务请求,进而通过终端将该业务请求发送至第一区块链节点中。
当然,在本申请实施例中,用户也可直接在终端中输入相应的业务信息,而终端则可根据用户输入的业务信息生成相应的业务请求,并将该业务请求发送至第一区块链节点中。
在本申请实施例中,第一区块链节点中包含有多个服务器(换句话说,第一区块链节点中包含有一个服务器集群,该服务器集群就相当于是该第一区块链节点),且,每个服务器都共享诸如点对点路由表、节点非对称公私钥、节点身份标识号码(Identity,ID)等节点配置信息,所以,对于共识网络中的其他区块链节点以及客户端来说,该第一区块链节点中各服务器所执行的操作均看作是来自于第一区块链节点本身发出的。
因此,客户端向第一区块链节点发送业务请求时,需要先确定出应该向第一区块链节点中的哪个服务器发送该业务请求,为此,本申请实施例中提供了一个注册中心,该注册中心用于管理区块链节点中各服务器的地址,并将各服务器的地址推送至客户端中,客户端可随机从注册中心推送的地址中选取一个地址,并将该业务请求发送至该地址所对应的服务器中,如图2所示。
图2为本申请实施例提供的注册中心向客户端推送地址的示意图。
在图2中,第一区块链节点中包含有多个服务器,每个服务器在上线时(这里提到的上线是指该服务器开始正常进行业务受理)可向注册中心进行注册,换句话说即为通知注册中心该服务器当前处于可用状态,可以接收客户端发送的业务请求。注册中心在确定该服务器上线后,可获取到该服务器的地址,继而将该地址推送给客户端,以使客户端在接收到该地址后,将该地址进行存储。
其中,在本申请实施例中,注册中心可以主动从该服务器中获取到该服务器的地址,也可由该服务器向注册中心提供该地址,例如,服务器在注册中心进行注册后,注册中心可向服务器返回注册成功的消息,该服务器在接收到该消息后,可主动将自身的地址发送至注册中心中,以使注册中心对该地址进行管理。
而注册中心除了可将获取到的地址主动推送至客户端中外,客户端也可主动获取注册中心中管理的各地址。例如,客户端在向第一区块链节点发送业务请求之外,可向注册中心发送获取地址的询问消息,注册中心接收到询问消息后,可将第一区块链节点当前可用的服务器(即当前在注册中心中注册的服务器)的地址发送给该客户端,以使该客户端在接收到注册中心发送的各地址后,从各地址中选取一个地址,并将该业务请求发送至选取的地址所对应的服务器中。当然,客户端也可通过其他的方式从注册中心中获取第一区块链节点包含的各服务器的地址,在此就不一一进行举例说明了。
需要说明的是,在实际应用中,第一区块链节点中的服务器可能会出现诸如运行故障、程序重启等情况,导致服务器下线(即该服务器无法进行业务受理),注册中心若是将下线服务器的地址发送给客户端,且客户端在选择服务器时,恰好选择了下线服务器的地址,则可能会导致客户端无法将上述业务请求发送至第一区块链节点中,进而导致第一区块链节点无法对该业务请求进行处理。
为了避免上述问题的发生,在本申请实施例中,对于已经注册在注册中心的每个服务器来说,注册中心每隔设定时间即可向该服务器发送心跳检测消息,当服务器依然正常运行在线上时,则可根据接收到的心跳检测消息向注册中心返回应答消息,注册中心在接收到该应答消息后,可确定该服务器依然正常的运行在线上,进而继续管理该服务器的地址。
而当注册中心向该服务器发送上述心跳检测消息后,监测到经过设定时间后仍未接收到该服务器根据该心跳检测消息返回的应答消息时,则可确定该服务器当前可能出现了诸如运行故障、程序重启等情况,导致该服务器下线,继而不再向客户端推送该服务器的地址,并且,若之前已经向该客户端推送该服务器的地址,则可向该客户端发送该服务器下线的通知,以使该客户端根据该通知将该服务器的地址从本地中进行删除。
客户端将下线服务器的地址删除后,后续将不再向该服务器发送业务请求,直到该服务器重新上线,客户端才会从注册中心中重新获取到该服务器的地址,继而通过该地址,向该服务器发送业务请求。
需要说明的是,上述图2中仅仅是以客户端从注册中心获取第一区块链节点包含的各地址来进行说明的,在图2中,由于第一区块链节点能够从客户端中接收客户端发送的业务请求,所以,第一区块链节点中的各服务器需要在注册中心进行注册,以使注册中心能够将第一区块链节点中各服务器的地址推送至客户端中,以使客户端能够通过获取到的地址向第一区块链节点中的服务器发送业务请求。
而在实际应用中,由于共识网络中的第二区块链节点同样可以接收客户端发送的业务请求,并对该业务请求进行处理,所以,在本申请实施例中,针对共识网络中的每个第二区块链节点,该第二区块链节点包含的各服务器同样可在注册中心中进行注册,以使注册中心能够将该第二区块链节点包含的各服务器的地址推送至客户端中。这样一来,客户端同样可通过获取到的地址,向第二区块链节点中的服务器发送业务请求。
S102:通过所述服务器将所述业务请求存储在所述第一区块链节点包含的业务存储器中,并将所述业务请求发送给共识网络中的各第二区块链节点,以使所述各第二区块链节点接收到所述业务请求后,将所述业务请求存储在自身包含的业务存储器中。
第一区块链节点中包含的服务器接收到客户端发送的业务请求后,可将该业务请求存储在第一区块链节点所包含的业务存储器中,与此同时,该服务器可将客户端发送的业务请求发送至共识网络中的各第二区块链节点,以使该第二区块链节点接收到该业务请求后,将该业务请求存储在自身包含的业务存储器中。
其中,第一区块链节点中的服务器在接收到上述业务请求后,可先对该业务请求进行合法验证,该合法验证可以是诸如RSA算法等非对称签名合法验证,也可以是其他形式的验证。当该服务器确定该业务请求通过合法验证时,则可将该业务请求存储在第一区块链节点所包含的业务存储器中,并将该业务请求发送至共识网络中的各第二区块链节点,而当该服务器确定该业务请求未通过合法验证时,则不对该业务请求进行存储,并可向客户端返回该业务请求受理失败的消息,以使用户通过客户端查看到该消息后,执行一定的操作,如,用户查看到该消息后,可在客户端中重新编辑业务请求,并将编辑好的业务请求通过客户端发送至第一区块链节点所包含的服务器中。
在本申请实施例中,由于共识网络中的各区块链节点均可包含有多个服务器,所以,第一区块链节点中的服务器在向第二区块链节点发送上述业务请求时,同样也需要获取第二区块链节点中各服务器的地址,继而通过获取到的地址,向第二区块链节点包含的服务器发送该业务请求。
所以,在本申请实施例中,注册中心同样需要对第二区块链节点中各服务器的地址进行管理,并将第二区块链节点中各服务器的地址发送至第一区块链节点中的各服务器,如图3所示。
图3为本申请实施例提供的注册中心向第一区块链节点中的各服务器推送第二区块链节点中各服务器的地址的示意图。
在图3中,第二区块链节点中的各服务器上线后,同样可在注册中心中进行注册,以使注册中心获取到第二区块链节点中各服务器的地址,其中,注册中心可自动从第二区块链节点中的各服务器获取地址,也可由第二区块链节点中的各服务器主动向注册中心发送各自的地址,具体的方式与上述步骤S101中,注册中心获取第一区块链节点中各服务器的地址的方式相同,在此就不进行详细赘述了。
第一区块链节点中的各服务器通过注册中心获取到第二区块链节点中各服务器的地址后,可将获取到的地址进行存储。第一区块链节点中的服务器向第二区块链节点发送业务请求时,可从自身保存的第二区块链节点包含的各地址中选取一个地址,进而将该业务请求发送至该地址所对应的服务器中,以使该地址所对应的服务器在接收到该业务请求后,将该业务请求存储在第二区块链节点所对应的业务存储器中。
其中,第二区块链节点中的服务器在接收到上述业务请求后,也可对该业务请求进行合法验证,当确定该业务请求通过合法验证时,则可将该业务请求存储在第二区块链节点包含的业务存储器中,而当该服务器确定该业务请求未通过合法验证时,则不对该业务请求进行存储。
需要说明的是,由于第二区块链节点中包含的服务器也会存在上述步骤S101中提到的服务器下线的情况,所以,注册中心在获取到第二区块链节点中各服务器的地址后,可每经过一个设定时间间隔,向这些地址对应的服务器发送心跳检测消息,当经过设定时间后(也可以是在设定时间内)接收到服务器根据该心跳检测消息返回的应答消息时,则可确定该服务器仍然处于上线状态,进而继续对该服务器的地址实施管理,而当经过设定时间后,仍未接收到该服务器根据该心跳检测消息返回的应答消息时,则可确定该服务器可能出现了诸如运行故障、网络不稳定等情况致使该服务器下线,则可不再继续对该服务器的地址进行管理,直到该服务器重新上线后重新获取该服务器的地址并管理。
不仅如此,注册中心通过上述方式确定出第二区块链节点中的某一服务器下线时,则可向第一区块链节点中的各服务器以及客户端发送该服务器下线的通知,以使第一区块链节点中的各服务器以及客户端在接收到该通知后,将该服务器的地址进行删除,继而在后续过程中不再向该地址的服务器发送业务请求,直到该服务器重新上线,并从注册中心中重新获取到该服务器的地址后,可通过获取到该地址,向该地址对应的服务器发送业务请求。
图3中只列举出了一个第二区块链节点将其包含的各服务器注册在注册中心中的情况,在实际应用中,共识网络中存在多个第二区块链节点,所以,对于共识网络中的每个第二区块链节点来说,该第二区块链节点中的服务器在上线后,均可注册在注册中心中,以使注册中心获取到该第二区块链节点中各服务器的地址,并将获取到的地址推送至第一区块链节点的各服务器中,换句话说,对于第一区块链节点的每个服务器来说,该服务器将会存储共识网络中每个第二区块链节点所包含的各服务器的地址。
需要说明的是,在实际应用中,整个共识网络中包含有多个区块链节点,而本申请实施例所提到的第一区块链节点指的是接收客户端业务请求的区块链节点,而除第一区块链节点之外其他区块链节点,在本申请实施例中可以称之为第二区块链节点,第一区块链节点和第二区块链节点是一个相对概念,即,从客户端接收业务请求的区块链节点可以称之为第一区块链节点,而接收由第一区块链节点发送的该业务请求的区块链节点则可称之为第二区块链节点。由于共识网络中的各区块链节点均可客户端发送的业务请求,因此,各区块链节点实质上均可以是第一区块链节点,也可以是第二区块链节点,而第一区块链节点和第二区块链节点的划分取决于业务请求是从何处接收的。
当然,在共识校验过程中,第一区块链节点和第二区块链节点的划分也可以通过哪一节点发起共识校验来区分,即,将包含有至少一个业务请求的预处理块发送至共识网络的共识校验发起者可以是第一区块链节点,而接收该预处理块的区块链节点则可以称之为第二区块链节点。
S103:在业务共识阶段中,从所述第一区块链节点包含的多个服务器中选取服务器,并通过选取出的服务器从所述第一区块链节点包含的业务存储器中捞取至少一个业务请求。
在本申请实施例中,第一区块链节点中的服务器需要将第一区块链节点包含的业务存储器中的业务请求进行业务共识,所以,在业务共识阶段中,第一区块链节点中的服务器可从第一区块链节点包含的业务存储器中捞取至少一个业务请求,并在后续过程中,将捞取的各业务请求打包成预处理块发送至共识网络中的各第二区块链节点进行业务共识。
其中,在本申请实施例中,第一区块链节点除了包含有多个服务器、业务存储器外,还包含有一个定时任务触发器,该定时任务触发器用于定时通过第一区块链节点中的服务器向共识网络中的各区块链节点发起业务共识,而由于第一区块链节点中包含有多个服务器,所以,在业务共识阶段中,定时任务触发器可从第一区块链节点包含的多个服务器中选取一个服务器,进而由该服务器从第一区块链节点包含的业务存储器中捞取至少一个业务请求。
在本申请实施例中,上述定时任务触发器可以是一个硬件设备,也可以是以软件的形式存在,其中,对于软件的形式来说,该定时任务触发器可以设置在第一区块链节点中的某一个服务器中,该定时任务触发器在该服务器中运行时,可在业务共识阶段中从第一区块链节点包含的各服务器中选取一个服务器,并通过定时任务触发器所在的服务器向选取出的服务器发送通知,以使选取出的服务器在接收到该通知后,从第一区块链节点包含的业务存储器中捞取至少一个请求。
服务器上述业务存储器(即第一区块链节点包含的业务存储器)中捞取各业务请求的过程中,可以按照各业务请求在该业务存储器中存储的时间顺序进行捞取,也可按照各业务请求的业务类型进行捞取,抑或是按照各业务请求的业务等级来进行捞取,捞取的方式有很多,在此就不一一举例说明了。
S104:通过选取出的服务器将所述至少一个业务请求打包成预处理块,并通过选取出的服务器将所述预处理块发送至共识网络中的各第二区块链节点,以使所述各第二区块链节点对所述预处理块进行业务共识。
第一区块链节点中的服务器从第一区块链节点包含的业务存储器中捞取至少一个业务请求后,可将捞取出的各业务请求进行处理,并打包成预处理块,其中,该服务器可按照预设的排序规则,将捞取出的各业务请求进行排序,得到各业务请求的排序结果,并通过预设的特征值确定规则以及该排序结果,确定出各业务请求唯一对应的待验证特征值,而后,该服务器可将捞取出的各业务请求、各业务请求的排序结果以及确定出的待验证特征值打包成一个预处理块,继而将该预处理块发送至第二区块链节点所包含的服务器中。
其中,该服务器确定待验证特征值的具体方式可以如图4所示。
图4为本申请实施例提供的服务器确定待验证特征值的示意图。
在图4中,第一区块链节点的服务器(即通过第一区块链节点包含的定时任务触发器确定出的服务器)从第一区块链节点包含业务存储器中捞取了图4所示的4个业务请求,服务器可将这4个业务请求按照预设的排序规则进行排序,从而得到如图4所示的排序结果。而后,该服务器可按照预设的特征值确定规则:Hash算法,分别确定出这4个业务请求对应的子特征值Hash1~Hash4,并将确定出的这4个子特征值按照得到的排序结果,从左到右依次置于Merkle树的叶子节点中,进而确定出Merkle树的根节点值Hash7。该服务器可将确定出的Merkle树根节点值Hash7确定为这4个业务请求唯一对应的待验证特征值,进而将确定出的待验证特征值,排序结果以及这4个业务请求打包成预处理块。
需要说明的是,图4中所示的待验证特征值的确定方式并不唯一,如,第一区块链节点中的服务器除了可采用Hash作为预设的特征值确定规则,确定各业务请求唯一对应的待验证特征值外,还可通过诸如消息摘要算法第5版(Message Digest Algorithm,MD5)等算法来确定各业务请求唯一对应的待验证特征值,只需保证确定出的待验证特征值唯一对应的各业务请求即可。而对于Merkle树的形式来说,除了可以采用如图4所示的形式外,还可采用其他的形式,在此就不一一举例说明了。
当然,在本申请实施例中,第一区块链节点的服务器除了通过Merkle树确定出各业务请求唯一对应的待验证特征值外,还可采用其他的方式进行确定,如,该服务器分别确定出各业务请求对应的各子特征值后,可将确定出的各子特征值按照一定的顺序进行排序,并将排序的结果再次进行加密,进而将加密后的结果就作为各业务请求唯一对应的待验证特征值;或是,服务器分别确定出各业务请求对应的各子特征值后,可通过snowflake算法来生成一个全局唯一的ID,并将该ID就作为各业务请求唯一对应的待验证特征值;抑或是服务器可根据分别确定出的各业务请求对应的各子特征值,确定出各子特征值的一个通用唯一识别码(Universally Unique Identifier,UUID),并将该UUID就作为各业务请求唯一对应的待验证特征值。当然还有其他的确定方式,在此就不进行一一举例说明了,只需保证确定出的待验证特征值能够唯一对应的各业务请求即可。
第一区块链节点中的服务器(即第一区块链节点中定时任务触发器在业务共识阶段选取出的服务器)确定出上述预处理块后,可将该预处理块发送至共识网络中的各第二区块链节点,而由于共识网络中每个第二区块链节点中均包含多个服务器,所以,第一区块链节点的服务器在发送该预处理块时,需要确定出将该预处理块发送至各第二区块链节点中的哪个服务器中。
在本申请实施例中,由于第一区块链节点中的各服务器可从注册中心获取到共识网络中每个第二区块链节点所包含的各服务器的地址,因此,第一区块链节点的服务器需要将该预处理块发送至共识网络中的某一第二区块链节点时,可从自身存储的该第二区块链节点中各服务器的地址(存储的地址为该第二区块链节点中处于上线状态的服务器的地址)中选取一个地址,并将该预处理块发送至该地址所对应的服务器中,以使该地址对应的服务器在接收到该预处理块后,对该预处理块进行共识校验。
由于在共识网络中存在多个第二区块链节点,所以,第一区块链节点中的服务器在将上述预处理块发送至各第二区块链节点时,可通过上述方式,分别从存储的各地址中分别确定出接收该预处理块的各第二区块链节点的各服务器,继而将该预处理块通过确定出的各地址分别发送至各第二区块链节点的各服务器中。
对于第二区块链节点来说,当第二区块链节点中包含的服务器接收到上述第一区块链节点中的服务器发送的预处理块后,可对该预处理块进行解析,确定出该预处理块中包含的各业务请求、各业务请求的排序结果以及上述待验证特征值,而后,第二区块链节点中的服务器可从第二区块链节点包含的业务存储器中查找出与该预处理块中包含的各业务请求相匹配的各业务请求,并通过预设的特征值确定规则以及确定出的各业务请求的排序结果,确定出从第二区块链节点包含的业务存储器中查找出的各业务请求唯一对应的特征值,其中,这里提到的预设的特征值确定规则与第一区块链节点中的服务器所使用的特征值确定规则相同。
第二区块链节点中的服务器确定出上述特征值后,可将确定出的特征值与上述预处理块中包含的待验证特征值进行比对,当确定两者一致时,则可确定该预处理块通过本地的(即第二区块链节点的该服务器)的共识校验,进而将校验结果存储在该第二区块链节点包含的业务存储器中,以及将该校验结果发送至共识网络中的其他区块链节点(这里提到的其他区块链节点包含有各第二区块链节点以及第一区块链节点)。
其中,第二区块链节点中的服务器发送上述校验结果的方式与第一区块链节点中的服务器将业务请求或预处理块发送给共识网络中各第二区块链节点的方式相同,即,当该第二区块链节点的服务器需要将该校验结果发送至共识网络中的某一个区块链节点时(可以是第二区块链节点也可以是第一区块链节点),该服务器可从本地存储的该区块链节点中各服务器的地址中选取一个地址,并将该校验结果发送至该地址所对应的服务器。而地址所对应的服务器在接收到该校验结果后,可将该校验结果存储在所属区块链节点所包含的业务存储器中。
上述第二区块链节点中的服务器在将上述校验结果发送至共识网络中各区块链节点的同时,该第二区块链节点中的其他服务器或是该服务器也可接收共识网络中其他区块链节点发送的关于上述预处理块的校验结果,并将接收的校验结果统一存储在该第二区块链节点包含的业务存储器中。而后,第二区块链节点中的服务器(该服务器可以是接收上述预处理块的服务器)可从第二区块链节点包含的业务存储器中确定出共识网络中各区块链节点关于该预处理块的校验结果(包括自身做出的校验结果),确定共识网络中的各区块链节点关于该预处理块的一个综合校验结果,而后,该服务器可通过与上述发送校验结果相同的方式,将确定出的该综合校验结果发送至共识网络中的各区块链节点中,与此同时将该综合校验结果存储该第二区块链节点所包含的业务存储器中。
上述第二区块链节点中的服务器发送上述综合校验结果后,该第二区块链节点中的其他服务器或是该服务器(即发送综合校验结果的服务器)也可接收共识网络中各区块链节点(包含各第二区块链节点以及第一区块链节点)发送的关于上述预处理块的综合校验结果,并将该综合校验结果存储在该第二区块链节点包含的业务存储器中。
上述第二区块链节点中的服务器(即发送综合校验结果的服务器)可从该第二区块链节点包含的业务存储器中捞取共识网络中其他区块链节点发送的综合校验结果,并通过接收到的综合校验结果以及自身确定出的综合校验结果,确定上述预处理块是否通过共识网络的业务共识,若根据该业务存储器中存储的各综合校验结果(包含自身确定出的)确定该预处理块中包含的各业务请求通过共识网络的业务共识,则可将该预处理块中包含的各业务请求写入到该第二区块链节点所保存的区块链中,否则不将各业务请求写入到该区块链中,其中,第二区块链节点中的服务器可将各业务请求的完整内容写入到该区块链中,也可只将各业务请求的信息摘要写入到该区块链中。
上述说明的业务共识过程较为复杂,为了便于理解,下面将列举一个简单的例子清楚的说明第二区块链节点中的服务器对上述预处理块进行业务共识的过程,如图5所示。
图5为本申请实施例提供的第二区块链节点中的服务器对预处理块进行业务共识的过程示意图。
假设,在共识网络中存在第一区块链节点、第二区块链节点A以及第二区块链节点B这三个区块链节点。这三个区块链节点中的各服务器分别存有其他两个区块链节点包含的各服务器的地址。第一区块链节点中的服务器#3从第一区块链节点包含的业务存储器中捞取至少一个业务请求,并将所述至少一个业务请求打包成预处理块发送给其他两个区块链节点,其中,服务器#3通过自身存储的其他两个区块链节点包含的各服务器的地址,确定将该预处理块分别发送给服务器A1以及服务器B1。
服务器A1以及服务器B1接收到上述预处理块后,可对该预处理块进行共识校验,并将得到出的针对该预处理块的校验结果分别存储在所属区块链节点所包含的业务存储器中。与此同时,服务器A1以及服务器B1可分别将确定出的校验结果发送至共识网络中的其他两个区块链节点,其中,服务器A1根据自身存储的其他两个区块链节点中各服务器的地址,确定将自身得出的校验结果发送至第一区块链节点中的服务器#2以及第二区块链节点B中的服务器B2,而服务器B1则确定将自身得出的校验结果发送至第一区块链节点的服务器#3以及第二区块链节点A中的服务器A3。
共识网络中的这三个区块链节点中的服务器分别接收到其余两个区块链节点的服务器所发送的校验结果后,可将接收到的校验结果存储在所属区块链节点所包含的业务存储器中。而服务器A1(即接收上述预处理块的服务器)可从第二区块链节点A包含的业务存储器中获取各校验结果(其中包含自身得出的校验结果),并根据这些校验结果得出共识网络中各区块链节点针对该预处理块的一个综合校验结果。服务器A1可将得出的该综合校验结果存储在第二区块链节点A所包含的业务存储器中,并将该综合校验结果发送至其他两个区块链节点中,发送的方式与发送校验结果的方式相同,在此就不进行详细赘述了。而对于服务器#3(即发送业务共识的服务器)以及服务器B1(接收预处理块的服务器)来说,同样可以按照这种方式确定出针对该预处理块的一个综合校验结果,并将得出的综合校验结果发送至共识网络中的其他两个区块链节点。
共识网络中各区块链节点的各服务器在接收到其他两个区块链节点发送的综合校验结果后,可将接收到的综合校验结果存储在所属区块链节点包含的业务存储器中。
服务器A1可从第二区块链节点A包含的业务存储器中获取到各区块链节点发送的针对上述预处理块的综合校验结果(包含自身作出的综合校验结果),而后,服务器A1可根据各综合校验结果,确定出该预处理块是否通过共识网络中的业务共识,若是,则将该预处理块中包含的各业务请求写入到第二区块链节点A的区块链中,若否,则不将各业务请求写入到该区块链中。同理,服务器#3以及服务器B1也可通过这种方式,从各自所属的区块链节点所包含的业务存储器中获取到各综合校验结果,并根据获取到的各综合校验结果,确定是否将该预处理块中包含的各业务请求写入到所属区块链节点的区块链中。
从上述方法中可以看出,由于共识网络中的各区块链节点均包含有多个服务器,对于每个区块链节点来说,该区块链节点中的各服务器只要有一个处于上线状态,即可用,则该区块链节点在共识网络中即为可用的区块链节点,从而极大的提高了区块链节点在共识网络中的稳定性。不仅如此,由于每个区块链节点中都包含有多个服务器,每个服务器对于区块链节点来说,其功能和地位都是等同的,换句话说,区块链节点在现有技术的基础上,增加了地位等同的服务器,这就极大的提高了区块链节点的性能,从而提高了区块链节点的业务处理效率。
需要说明的是,在业务共识的过程中,共识网络中的每个区块链节点均可确定出自身针对上述预处理块的校验结果,将得出的校验结果发送至共识网络中的其他区块链节点以及将该校验结果存储在该区块链节点所对应的业务存储器中,其中,该区块链节点可通过自身包含的第一服务器对该预处理块进行共识校验,而该第一服务器可以是该区块链节点中的一个指定的服务器,也可以是从区块链节点中包含的各服务器中选取出的一个服务器。
与此同时,该区块链节点也将接收到共识网络中的其他区块链节点发送的针对上述预处理块的校验结果,其中,该区块链节点可通过其所包含的服务器接收其他区块链节点发送的校验结果,并将接收到的校验结果存储在该区块链节点所对应的业务存储器中,这里可将接收由其他区块链节点所发送的校验结果的服务器称之为第二服务器,该第二服务器可以是该区块链节点中任意一个服务器,当然也可以是上述说明的第一服务器,而到底通过哪个第二服务器来接收其他区块链节点发送的校验结果,则取决于其他区块链节点中包含的服务器选取哪个第二服务器接收其发送的校验结果。
在上述步骤S101中,客户端除了可从存储的第一区块链节点中各服务器的地址中随机选取一个地址外,也可根据负载均衡情况来选取地址,为此,注册中心向客户端推送第一区块链节点中各服务器的地址时,可连带将各服务器的负载情况一并推送给客户端,以使客户端通过预设的负载均衡算法,从各地址中选取一个负载较小的服务器的地址,并将上述业务请求发送至该地址所对应的服务器中。
同理,第一区块链节点的服务器在发送上述业务请求至共识网络中的各第二区块链节点时,也可采用负载均衡的方式,从存储的各地址中选取服务器,当然,第一区块链节点的服务器发送上述预处理块,以及共识网络中各区块链节点在发送上述校验结果以及综合校验结果时,也可采用负载均衡的方式进行,具体过程客户端通过负载均衡的方式向第一区块链节点发送业务请求的方式相同,在此就不作详细赘述了。
在本申请实施例中,除了可以使用任务定时触发器来选取发起业务共识的服务器外,还可以在区块链节点(包含第一区块链节点以及第二区块链节点)中的服务器分别设置一个共识周期,不同服务器的共识周期各不相同,当服务器监测到当前时间到达自身的共识周期,则可从所属区块链节点的业务存储器中捞取至少一个业务请求。
在本申请实施例中,区块链节点(包含第一区块链节点以及第二区块链节点)中服务器在接收到上述业务请求后,也可将该业务请求转发至该区块链节点的其他服务器中,并由其他的服务器将该业务请求存储在该区块链节点所包含的业务存储器中。而对于共识网络中的每个第二区块链节点来说,该第二区块链节点中的服务器在接收到第一区块链节点发送的预处理块后,也可将该预处理块转发至该第二区块链节点中的其他服务器中进行共识校验,并将得出的校验结果存储在该第二区块链节点所包含的业务存储器中。
以上为本申请实施例提供的业务共识的方法,基于同样的思路,本申请实施例还提供以下几种业务受理的装置以及业务共识的装置,如图6~12所示。
图6为本申请实施例提供的一种业务受理的装置示意图,具体包括:
接收模块601,接收客户端发送的业务请求;
存储模块602,将所述业务请求存储在自身对应的业务存储器中;
发送模块603,将所述业务请求发送给共识网络中的各第二区块链节点,以使所述各第二区块链节点接收到所述业务请求后,将所述业务请求存储在自身包含的业务存储器中,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
所述装置还包括:
注册模块604,当确定所述装置上线时,则将所述装置的地址发送至注册中心,以使所述注册中心将所述地址发送至客户端以及共识网络中的各第二区块链节点。
所述装置还包括:
获取模块605,针对每个第二区块链节点,所述装置从注册中心中获取该第二区块链节点包含的多个服务器的地址。
所述发送模块603,针对每个第二区块链节点,从获取的该第二区块链节点包含的多个服务器的地址中选取地址;将所述业务请求发送至选取的地址所对应的服务器中。
所述存储模块602,对所述业务请求进行合法验证;当确定所述业务请求通过所述合法验证时,将所述业务请求存储在所述业务存储器中。
所述存储模块602,当确定所述业务请求未通过所述合法验证时,则不对所述业务请求进行存储。
区块链节点中包含有多个所述装置。
图7为本申请实施例提供的一种业务受理的装置示意图,具体包括:
接收请求模块701,接收第一区块链节点发送的业务请求,所述第一区块链节点包含有多个服务器以及至少一个业务存储器;
请求存储模块702,将所述业务请求存储在自身对应的业务存储器中。
所述装置还包括:
注册模块703,当确定所述装置上线时,则将所述装置的地址发送注册中心,以使所述注册中心将所述地址发送至所述第一区块链节点、客户端以及共识网络中其他第二区块链节点中。
所述请求存储模块702,对所述业务请求进行合法验证;当确定所述业务请求通过所述合法验证时,将所述业务请求存储在所述业务存储器中。
所述请求存储模块702,当确定所述业务请求未通过所述合法验证时,则不对所述业务请求进行存储。
图8为本申请实施例提供的一种业务受理的装置示意图,具体包括:
接收信息模块801,接收用户输入的业务信息;
请求生成模块802,根据所述业务信息,生成相应的业务请求;
发送模块803,将所述业务请求发送至第一区块链节点包含的一个服务器,以使所述第一区块链节点将接收到的所述业务请求存储在第一区块链节点包含的业务存储器中,并将所述业务请求发送给共识网络中的各第二区块链节点,所述第一区块链节点包含有多个服务器以及至少一个业务存储器,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
所述发送模块803,从注册中心中获取所述第一区块链节点包含的多个服务器的地址;从获取的所述第一区块链节点包含的多个服务器的地址中选取地址,并将所述业务请求发送至选取的地址所对应的服务器中。
所述装置还包括:
删除模块804,当接收到所述注册中心针对某一服务器发送的下线通知时,则将该服务器的地址进行删除。
图9为本申请实施例提供的一种业务共识的装置示意图,具体包括:
请求捞取模块901,从自身对应的业务存储器中捞取至少一个业务请求;
发送模块902,将所述至少一个业务请求打包成预处理块,并将所述预处理块发送至共识网络中的各第二区块链节点,以使所述各第二区块链节点对所述预处理块进行业务共识,所述第二区块链节点包含有多个服务器以及至少一个业务存储器。
所述装置还包括:
获取地址模块903,针对每个第二区块链节点,所述装置从注册中心中获取该第二区块链节点包含的多个服务器的地址。
所述发送模块902,针对每个第二区块链节点,从获取到的该第二区块链节点包含的多个服务器的地址中选取地址;将所述预处理块发送至选取的地址所对应的服务器中,以使选取的地址所对应的服务器对接收到的所述预处理块进行业务共识。
图10为本申请实施例提供的一种业务共识的装置示意图,具体包括:
选取模块1001,从第一区块链节点包含的多个服务器中选取服务器,所述第一区块链节点包含有多个服务器以及至少一个业务存储器。
所述选取模块1001,监测当前时刻是否满足任务触发条件;当监测到满足任务触发条件时,从所述第一区块链节点包含的多个服务器中选取服务器。
图11为本申请实施例提供的一种业务共识的装置示意图,具体包括:
获取模块1101,获取预处理块;
共识模块1102,根据自身对应的业务存储器中存储的各业务请求,对所述预处理块进行业务共识。
所述共识模块1102,对所述预处理块进行共识校验,得到校验结果;接收共识网络中其他区块链节点发送的各校验结果,并将接收到的各校验结果存储在自身对应的业务存储器中;从所述业务存储器中获取各校验结果,并通过获取到的各校验结果,对所述预处理块进行业务共识。
图12为本申请实施例提供的一种业务共识的装置示意图,具体包括:
获取模块1201,针对共识网络中的每个区块链节点,获取该区块链节点包含的多个服务器的地址,每个区块链节点包含有多个服务器以及至少一个业务存储器;
发送模块1202,将获取到的该区块链节点包含的多个服务器的地址发送至共识网络中其他区块链节点以及客户端存储。
所述装置还包括:
通知模块1203,针对共识网络中的每个区块链节点,根据获取到的该区块链节点包含的多个服务器的地址,向该区块链节点包含的多个服务器发送心跳检测消息;
针对该区块链节点包含的每个服务器,当经过设定时间后未接收到该服务器根据所述心跳检测消息返回的应答消息时,则确定该服务器下线,并通知所述客户端以及共识网络中其他区块链节点将存储的该服务器的地址删除。
本申请实施例提供一种业务共识的方法及装置,该方法中第一区块链节点中包含有多个服务器,第一区块链节点可通过包含的多个服务器接收从客户端发送的业务请求并存储,以及通过多个服务器中的服务器从该第一区块链节点包含的业务存储器中捞取至少一个业务请求,得到预处理块,并将预处理块通过该服务器发送至共识网络的各第二区块链节点中,以通过各第二区块链节点对该预处理块进行业务共识。由于在第一区块链节点包含的多个服务器中,只要有一个服务器可用,即能保证该第一区块链节点可用,从而极大的提高了第一区块链节点在共识网络中的稳定性。不仅如此,由于第一区块链节点中包含的每个服务器均可接收用户通过客户端发送的业务请求,并且每个服务器均可向共识网络中的各第二区块链节点发起业务共识,从而极大的提高了区块链业务的业务处理效率。
在20世纪90年代,对于一个技术的改进可以很明显地区分是硬件上的改进(例如,对二极管、晶体管、开关等电路结构的改进)还是软件上的改进(对于方法流程的改进)。然而,随着技术的发展,当今的很多方法流程的改进已经可以视为硬件电路结构的直接改进。设计人员几乎都通过将改进的方法流程编程到硬件电路中来得到相应的硬件电路结构。因此,不能说一个方法流程的改进就不能用硬件实体模块来实现。例如,可编程逻辑器件(Programmable Logic Device,PLD)(例如现场可编程门阵列(Field Programmable GateArray,FPGA))就是这样一种集成电路,其逻辑功能由用户对器件编程来确定。由设计人员自行编程来把一个数字系统“集成”在一片PLD上,而不需要请芯片制造厂商来设计和制作专用的集成电路芯片。而且,如今,取代手工地制作集成电路芯片,这种编程也多半改用“逻辑编译器(logic compiler)”软件来实现,它与程序开发撰写时所用的软件编译器相类似,而要编译之前的原始代码也得用特定的编程语言来撰写,此称之为硬件描述语言(Hardware Description Language,HDL),而HDL也并非仅有一种,而是有许多种,如ABEL(Advanced Boolean Expression Language)、AHDL(Altera Hardware DescriptionLanguage)、Confluence、CUPL(Cornell University Programming Language)、HDCal、JHDL(Java Hardware Description Language)、Lava、Lola、MyHDL、PALASM、RHDL(RubyHardware Description Language)等,目前最普遍使用的是VHDL(Very-High-SpeedIntegrated Circuit Hardware Description Language)与Verilog。本领域技术人员也应该清楚,只需要将方法流程用上述几种硬件描述语言稍作逻辑编程并编程到集成电路中,就可以很容易得到实现该逻辑方法流程的硬件电路。
控制器可以按任何适当的方式实现,例如,控制器可以采取例如微处理器或处理器以及存储可由该(微)处理器执行的计算机可读程序代码(例如软件或固件)的计算机可读介质、逻辑门、开关、专用集成电路(Application Specific Integrated Circuit,ASIC)、可编程逻辑控制器和嵌入微控制器的形式,控制器的例子包括但不限于以下微控制器:ARC 625D、Atmel AT91SAM、Microchip PIC18F26K20以及Silicone Labs C8051F320,存储器控制器还可以被实现为存储器的控制逻辑的一部分。本领域技术人员也知道,除了以纯计算机可读程序代码方式实现控制器以外,完全可以通过将方法步骤进行逻辑编程来使得控制器以逻辑门、开关、专用集成电路、可编程逻辑控制器和嵌入微控制器等的形式来实现相同功能。因此这种控制器可以被认为是一种硬件部件,而对其内包括的用于实现各种功能的装置也可以视为硬件部件内的结构。或者甚至,可以将用于实现各种功能的装置视为既可以是实现方法的软件模块又可以是硬件部件内的结构。
上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机。具体的,计算机例如可以为个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任何设备的组合。
为了描述的方便,描述以上装置时以功能分为各种单元分别描述。当然,在实施本申请时可以把各单元的功能在同一个或多个软件和/或硬件中实现。
本领域内的技术人员应明白,本发明的实施例可提供为方法、系统、或计算机程序产品。因此,本发明可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。而且,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本发明是参照根据本发明实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述的。应理解可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。
这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。
这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
本申请可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、组件、数据结构等等。也可以在分布式计算环境中实践本申请,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于系统实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
以上所述仅为本申请的实施例而已,并不用于限制本申请。对于本领域技术人员来说,本申请可以有各种更改和变化。凡在本申请的精神和原理之内所作的任何修改、等同替换、改进等,均应包含在本申请的权利要求范围之内。