一种区块链分布式组网中软硬件资源高效协同复用的方法与流程

文档序号:22506119发布日期:2020-10-13 09:43阅读:232来源:国知局

本发明涉及硬件资源和软件资源的高效复用方式的技术领域,具体为一种区块链分布式组网中软硬件资源高效协同复用的方法。



背景技术:

区块链核心之一是分布式账本,分布式账本由网络中的节点组成,通常一个区块链节点由一台服务器支撑,即一台服务器上对应一个节点。在这种情况下,即使是节点数量相对较少的联盟链也会占用大量的服务器硬件资源,尤其是在小型区块链上层应用中,数据量相对较少,资源的需求不高的情况下,服务器存在着大量空闲,造成了资源的浪费。

目前行业针对小型应用,以云服务的方式提供相对存储量较小的虚拟机来供用户使用,但虚拟机的稳定性较差;另外行业没有一套自动化的完整的可复用的区块链服务供应流程,如从用户提出申请一直到搭建区块链服务、证书的生成、合约部署等一套完整流程。对于不同的应用需要做不同适配,耗时耗力。



技术实现要素:

本发明为了解决现有技术的问题,提供了一种区块链分布式组网中软硬件资源高效协同复用的方法,在软件和硬件的高效协同下实现资源的充分利用,降低区块链分布式部署的成本。

为解决上述技术问题,本发明的技术方案是:一种区块链分布式组网中软硬件资源高效协同复用的方法,包括服务节点、根节点、应用节点和接入节点,所述服务节点、根节点、应用节点和接入节点各层的数据和硬件分别抽象成数据层和资源池;

软件资源复用的方法包括:

s1、根节点的监控服务实时监控根节点中的资源池的状态变化,当有新的服务器加入该资源池时,监控服务及时判断该资源池中空闲服务器的数量是否满足应用节点创建需求;

s2、若空闲服务器数量满足应用节点需求,提取出5个空闲服务器地址作为应用节点的服务器;

s3、根节点自动向服务节点请求更新区块链版本镜像,通过mqtt协议进行消息交互;

s4、根节点调用ca服务为应用节点生成一套完整的区块链节点证书和jks文件;

s5、根节点查询本地配置模板中是否有与区块链程序版本对应的配置文件,若没有,则向服务节点请求集群配置模板文件更新;

s6、一个备用的应用节点搭建完成,将备用应用节点加入根节点的资源池中;

s7、用户申请使用区块链服务,并根据申请信息为用户生成数字证书和jks文件;

s8、根节点根据应用节点信息结合集群配置模板自动生成新的配置文件;

s9、启动应用节点,部署合约,api网关服务将合约接口封装成统一的http接口返回给申请的用户使用;

配合软件资源协同使用的硬件资源复用方法包括:

a1、给每台服务器均挂载16块容量为1tb的硬盘;

a2、第一块硬盘用于安装区块链基础设施服务,剩余15块硬盘分别运行15个区块链服务;

a3、为每个区块链程序设置不同的消息通道,所述区块链程序的消息通道按顺序依次为通道1~通道15;

a4、保证同一台服务器上的http服务端口不同,且区块链程序的集群内部通信端口也各不相同;

a5、保证不同服务器上消息通道相同的区块链程序的http服务接口和集群内部通信端口一致;

a6、为每个应用节点选取一个种子节点,应用节点中的5个区块链程序必须配置相同的种子节点才能启动集群服务;

a7、为每台服务器上的相同消息通道的区块链程序配置一个相互通信的通道;

a8、配置storage属性的路径,将路径设置为区块链程序所在的硬盘下,系统便会将数据保存在该目录,各个网络之间互不影响,最后再通过api网关封装成15个http接口对外提供服务。

进一步,根据权利要求1所述的一种区块链分布式组网中软硬件资源高效协同复用的方法,其特征在于:所述步骤a2中,区块链基础设施服务包括管理程序、根节点的ca服务和api网管服务。

进一步,所述步骤a6中,种子节点的选取的评估指标为cup负载、内存可用容量、网络使用率和硬盘剩余容量;按实际情况确定每一项的权重和分值,计算最终的得分,得分最高的节点为最优节点,用来作为应用节点的种子节点。

与现有技术相比,有益效果为:软件资源复用的方法以一个应用节点为单位为用户提供区块链服务,一个应用节点等同于一个小型的联盟链网络,但不同之处在于应用节点的生成是由服务节点和根节点统一调度完成的,是一个完全自动化的过程;

配合软件资源协同使用的硬件资源复用方法是针对某些数据量不大,但又需要上链的小型应用,加入联盟链会分摊大量的存储成本,新建一个联盟链网络更是不可能,因此只能在少量的服务器上同时组建多个小型的区块链网络,把这些对存储要求不高的小型应用集中在这些网络上使用,就能让服务器的硬件利用率提高几倍甚至十几倍。

具体实施方式

以下将结合实施例对本发明涉及的一种区块链分布式组网中软硬件资源高效协同复用的方法技术方案进一步详细说明。

一种区块链分布式组网中软硬件资源高效协同复用的方法,包括服务节点、根节点、应用节点和接入节点,所述服务节点、根节点、应用节点和接入节点各层的数据和硬件分别抽象成数据层和资源池;

其中,服务节点是整个系统的最顶层部分,由区块链服务提供商统一管理,包括对根节点的管理,整个网络中应用版本的更新,应用节点总体监控;

根节点由一些云服务提供商和具有一定资质的大数据公司管理,是应用节点与服务节点的中间代理,同时负责应用节点的管理和数据背书服务,如应用节点的扩容、应用节点的状态监控、应用节点启用和停用、区块链应用程序的更新、区块链智能合约管理、证书管理等服务;

应用节点是区块链底层的集群服务,一个应用节点一般由5个分别运行于5台不同服务器的区块链程序通过集群方式形成一个小型的联盟链网络,为上层应用提供区块链相关的服务;

接入节点封装了与底层区块链系统交互的所有过程,以更加友好易用的方式为上层应用提供与区块链底层交互的接口,以达到快速开发出区块链应用的效果;一个接入节点是一台微型的硬件设备,它不是整个系统的必要部分,却是实现区块链分布式组网软硬件资源复用非常重要的组成部分。

软件资源复用的方法包括:

s1、根节点的监控服务实时监控根节点中的资源池的状态变化,当有新的服务器加入该资源池时,监控服务及时判断该资源池中空闲服务器的数量是否满足应用节点创建需求;

s2、若空闲服务器数量满足应用节点需求,提取出5个空闲服务器地址作为应用节点的服务器;

s3、根节点自动向服务节点请求更新区块链版本镜像,通过mqtt协议进行消息交互;

s4、根节点调用ca服务为应用节点生成一套完整的区块链节点证书和jks文件;

s5、根节点查询本地配置模板中是否有与区块链程序版本对应的配置文件,若没有,则向服务节点请求集群配置模板文件更新;

s6、一个备用的应用节点搭建完成,将备用应用节点加入根节点的资源池中;

s7、用户申请使用区块链服务,并根据申请信息为用户生成数字证书和jks文件;

s8、根节点根据应用节点信息结合集群配置模板自动生成新的配置文件;

s9、启动应用节点,部署合约,api网关服务将合约接口封装成统一的http接口返回给申请的用户使用。

一个应用节点中的5个区块链节点的合约接口是一致的,调用哪一台服务器的合约接口效果完全一致,但是不能让上层应用去直接调用合约接口,把一个应用节点封装成一个服务,假设应用节点名字为a,经过统一封装后的地址为https://blockservice.com/a/,当应用调用/chaininfo接口时的地址为https://blockservice.com/a/chaininfo,api网关经过服务路由到应用节点a的任意一个区块链节点,如192.168.21.31:8081/chaininfo,还可以通过负载均衡来减轻区块链节点服务器的压力。

从架构上实现了自动化的底层区块链集群部署、合约生成、证书生成和使用、集群服务启动、合约部署和接口封装,服务节点和根节点的高效协同,实现了统一化、标准化、自动化、可复用的一套高效服务流程。

配合软件资源协同使用的硬件资源复用方法包括(为了更好的进行说明,该实施例以5台服务器(分别为服务器1~服务器5)为例进行说明):

a1、给每台服务器均挂载16块容量为1tb的硬盘;

a2、第一块硬盘用于安装区块链基础设施服务,包括管理程序、根节点的ca服务和api网管服务,剩余15块硬盘分别运行15个区块链服务;

a3、为每个区块链程序设置不同的消息通道,如区块链程序1的消息通道为通道1、区块链程序2的消息通道为通道2,以此类推,直至区块链程序15的消息通道为通道15;

a4、保证同一台服务器上的http服务端口不同,且区块链程序的集群内部通信端口也各不相同,例如区块链程序1~区块链程序15的http服务接口分别为8081~8096,区块链程序的集群内部通信端口分别为8020~8035;

a5、保证不同服务器上消息通道相同的区块链程序的http服务端口和集群内部通信端口一致,例如服务器1上的区块链程序1的http服务端口为8081,集群内部通信端口为8020,则另外四台服务器上的区块链程序1的http服务端口和集群内部通信端口也要为8081和8020。这样,分别运行于服务器1~服务器5上的集群内部通信端口相同的5个区块链程序组成一个集群网络,也就是一个应用节点;

a6、为每个应用节点选取一个种子节点,应用节点中的5个区块链程序必须配置相同的种子节点才能启动集群服务,其中,种子节点的选取的评估指标为cup负载、内存可用容量、网络使用率和硬盘剩余容量;按实际情况确定每一项的权重和分值,计算最终的得分,得分最高的节点为最优节点,用来作为应用节点的种子节点;

a7、为每台服务器上的相同消息通道的区块链程序配置一个相互通信的通道,例如选取其中任意一台服务器地址均可,5台服务器上的区块链程序1之间的集群内部通信端口为8020,假设种子节点的地址为192.168.21.35,则所有区块链程序1的种子节点的都应该为192.168.21.35,区块链程序1之间的集群内部通信端口都为8020,区块链程序1的http服务端口都为8081;这样分别启动5台服务器上的区块链程序1,就会组成五个节点的区块链集群网络,以同样的方式配置和启动另外14个区块链程序,就能得到15个区块链网络,各个网络之间互不影响,但是共用cup、系统资源和内存;

a8、配置storage属性的路径,将路径设置为区块链程序所在的硬盘下,系统便会将数据保存在该目录,各个网络之间互不影响,最后再通过api网关封装成15个http接口对外提供服务。

尽管已经示出和描述了本发明的实施例,对于本领域的普通技术人员而言,可以理解在不脱离本发明的原理和精神的情况下可以对这些实施例进行多种变化、修改、替换和变型,本发明的范围由所附权利要求及其等同物限定。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1