发明内容
本申请提供了一种可视容器化的联盟链节点部署方法及系统,提供了标准化的节点容器部署、可视化的节点管理、集群化的链上智能合约管理,一定程度上解决了联盟链平台部署兼容性问题,拓展了联盟链节点的适用性,同时提供了可视化的区块链网络拓扑主动检测与跟踪技术,以满足政府监管的需要。
第一方面,本申请提供了一种可视容器化的联盟链节点部署方法,应用于由客户端、服务网关、节点管理端、节点监控端构成的部署系统,所述方法包括:
所述客户端获取用户发送的部署请求,并将所述部署请求发送至所述服务网关;所述部署请求包括待部署节点的服务器信息;
所述服务网关将所述部署请求转发至所述节点管理端和所述节点监控端;
所述节点管理端根据所述部署请求将目标区块链中与待部署节点适配的节点镜像打包发送至待部署节点;所述待部署节点根据所述节点镜像进行自动容器化部署;
所述节点监控端响应所述部署请求,监听所述部署请求的执行过程,当监听到待部署节点反馈的执行结果为完成时,将所述部署请求的执行结果发送至所述服务网关;
所述服务网关将所述部署请求的执行结果转发至相应的客户端;
所述节点监控端实时监听目标节点的运行状态,并将所述运行状态发送至所述服务网关;所述目标节点为待部署节点部署成功后的节点;
所述服务网关将所述运行状态转发至相应的客户端。
在一种实现方式中,所述服务网关将所述部署请求的执行结果转发至相应的客户端的步骤之后还包括:
所述客户端获取用户发送的管理请求,并将所述管理请求发送至所述服务网关;所述管理请求包括目标节点的服务器信息;
所述服务网关将所述管理请求转发至所述节点管理端和所述节点监控端;
所述节点管理端根据所述管理请求调用相应的目标节点并执行相应的管理操作;
所述节点监控端响应所述管理请求,监听所述管理请求的执行过程,当监听到所述目标节点反馈的执行结果为完成时,将所述管理请求的执行结果发送至所述服务网关;
所述服务网关将所述管理请求的执行结果转发至相应的客户端。
在一种实现方式中,所述运行状态包括节点运行状态,节点通道共识状态和智能合约执行状态。
在一种实现方式中,所述服务网关将所述部署请求转发至所述节点管理端和所述节点监控端的步骤包括:
所述服务网关接收客户端发送的所述部署请求,所述部署请求包括用户身份信息;
所述服务网关对所述用户身份信息进行身份验证;
若身份验证通过,则将所述客户端发送的部署请求转发至所述节点管理端和所述节点监控端。
在一种实现方式中,若身份验证通过,则将所述客户端发送的部署请求转发至所述节点管理端和所述节点监控端的步骤还包括:
若身份验证通过,根据所述部署请求获取所述部署请求对应的权限;
根据所述用户身份信息对所述部署请求对应的权限进行鉴权;
若鉴权通过,则将所述客户端发送的部署请求转发至所述节点管理端和所述节点监控端。
在一种实现方式中,还包括:
获取所述服务网关接收客户端发送的部署请求对应的时间戳;
根据时间戳的先后顺序对发送部署请求的客户端进行身份验证。
在一种实现方式中,所述节点监控端响应所述部署请求,监听所述部署请求的执行过程的步骤还包括:
所述节点监控端响应所述部署请求,根据所述部署请求的数目,启动相应数目的监听线程;
每个监听线程分别监听所分配的部署请求的执行过程。
在一种实现方式中,所述节点监控端实时监听目标节点的运行状态,并将所述运行状态发送至所述服务网关的步骤还包括:
所述节点监控端监听到目标节点的运行状态为异常时,生成告警信息发送至所述服务网关;
所述服务网关将所述告警信息转发至相应的客户端。
在一种实现方式中,所述客户端获取用户发送的部署请求的步骤包括:
通过可视化操作,启动所述客户端的可视化界面;
所述客户端响应于用户在可视化界面上执行的操作,获取用户发送的部署请求。
第二方面,本申请提供了一种可视容器化的联盟链节点部署系统,包括客户端、服务网关、节点管理端和节点监控端;所述服务网关包括鉴权控制模块和身份验证模块;所述节点管理端包括节点管理模块、通道管理模块和合约管理模块;节点监控端包括实时监控模块和异常报警模块;所述系统被配置为执行下列方法:
所述客户端获取用户发送的部署请求,并将所述部署请求发送至所述服务网关;所述部署请求包括待部署节点的服务器信息;
所述服务网关将所述部署请求转发至所述节点管理端和所述节点监控端;
所述节点管理端根据所述部署请求将目标区块链中与待部署节点适配的节点镜像打包发送至待部署节点;所述待部署节点根据所述节点镜像进行自动容器化部署;
所述节点监控端响应所述部署请求,监听所述部署请求的执行过程,当监听到待部署节点反馈的执行结果为完成时,将所述部署请求的执行结果发送至所述服务网关;
所述服务网关将所述部署请求的执行结果转发至相应的客户端;
所述节点监控端实时监听目标节点的运行状态,并将所述运行状态发送至所述服务网关;所述目标节点为待部署节点部署成功后的节点;
所述服务网关将所述运行状态转发至相应的客户端。
由上述技术方案可知,本申请提供了一种可视容器化的联盟链节点部署方法及系统,所述部署方法应用于由客户端、服务网关、节点管理端、节点监控端构成的部署系统。所述客户端获取用户发送的部署请求,并将所述部署请求发送至所述服务网关,所述服务网关转发所述部署请求前对发送部署请求的用户进行身份验证和鉴权,验证用户的身份合法性以及校验用户是否有相应的操作权限。将通过身份认证和鉴权的用户发送的部署请求转发至所述节点管理端和所述节点监控端。所述节点管理端根据所述部署请求将目标区块链中与待部署节点适配的节点镜像打包发送至待部署节点,所述待部署节点根据所述节点镜像进行自动容器化部署,通过标准化的节点容器部署实现了待部署节点中联盟链节点的自动化部署,提高了联盟链节点的部署效率。所述节点监控端响应所述部署请求,监听所述部署请求的执行过程,当监听到待部署节点反馈的执行结果为完成时,将所述部署请求的执行结果通过所述服务网关转发至相应的客户端。所述节点监控端实时监听目标节点的运行状态,并将所述运行状态通过所述服务网关转发至相应的客户端。所述节点监控端以监听线程的形式主动检测区块链各节点的服务状态,包括节点运行状态,节点通道共识状态和智能合约执行状态等。提供了可视化的区块链网络拓扑主动检测与跟踪技术。
具体实施方式
下面结合具体的实施例对本发明的一种可视容器化的联盟链节点部署方法及系统作进一步的阐述。
区块链是分布式数据存储、点对点传输、共识机制等计算机技术的新型应用模式。根据区块链网络的中心化程度的不同,分化出3种不同应用场景下的区块链:公有链、联盟链以及私有链;其中,联盟链这针对特定的群体和有限的第三方,对于共识或验证节点的配置和网络环境要求有一定的要求。目前,针对联盟链平台部署方式大致分为两种:一种是脚本部署,通过手动执行预设的部署脚本(通常是shell脚本),在部署区块链节点服务的同时,根据实际服务器的性能参数配置手动调整配置文件的相关参数,以达到最优配置部署的目的;另外一种比较常见的是容器化部署,即将区块链服务及其依赖组件打成一个镜像包,使其运行在一个隔离环境中,并且不会共享宿主机的内存、CPU以及磁盘。容器化技术本质上就是轻量级的操作系统级虚拟化,这使得容器内进程不能监控容器外的任何进程,虽然起到了隔离作用,但是它对于外界来说就像一个“黑盒子”,只有在容器内才能监控到区块链服务状态。
上述的两种联盟链平台部署方式并不能从根本上解决平台兼容性和复杂网络适用性的问题,也无法解决区块链服务所面临的政府监管问题,因为联盟链平台中的区块链节点对于外界来说就像一个“黑盒子”,如果无法深入到“黑盒子”的内部,根本无法知晓其内部是怎么运作的。
针对上述问题,本申请提供了一种可视容器化的联盟链节点部署方法及系统,在容器化部署的基础上提供了一种可视化的服务,将“黑盒子”变成一个透明的盒子,即使不深入内部也可直观地观察到区块链服务的运行状况,而且这种可视化是从区块链平台部署伊始,贯穿整个平台生命周期,即使是区块链上的智能合约运行状态,也能直观地呈现在用户和监管者的面前。
第一方面,如图1所示,本申请提供了一种可视容器化的联盟链节点部署方法,应用于由客户端、服务网关、节点管理端、节点监控端构成的部署系统,所述方法包括:
S100,所述客户端获取用户发送的部署请求,并将所述部署请求发送至所述服务网关;所述部署请求包括待部署节点的服务器信息。
其中,待部署节点的服务器信息包括IP地址、服务器访问账户密码、配置信息、代理信息等相关信息。所述客户端可以是电脑、手机、平板、个人计算机等设备。
在本实施例中,客户端为用户提供可视化界面,用户访问客户端提供的可视化界面,例如web页面,通过点击或触摸可视化页面上预设的部署项图标,在部署页面上填写待部署节点的相关信息。示例性的,如图2所示,所述客户端获取用户发送的部署请求的步骤包括:
S110,通过可视化操作,启动所述客户端的可视化界面。
S120,所述客户端响应于用户在可视化界面上执行的操作,获取用户发送的部署请求。
S200,所述服务网关将所述部署请求转发至所述节点管理端和所述节点监控端。
其中,所述服务网关是单一访问点,并充当多项服务的代理,作为客户端和节点服务的桥梁,将客户端发送的请求转发到具体的服务实例上去,实现统一访问入口的目的。并且能够实现网络互连,能够解决各组织机构政务内网或各企业局域网之间网络不互通的问题。
为了保证系统的安全性,所述服务网关可以集中对访问进行安全控制,比如身份验证,避免未经授权的访问,从而确保数据的安全性。比如防止某些黑客攻击,以及一些恶意调用,这些都可以通过服务网关对访问的用户进行身份验证,若身份验证不通过则进行阻拦。并且通过集中式身份验证,可以达到降低运维成本的效果。进一步的,所述服务网关还可以对用户进行鉴权,通过识别用户的身份可以校验用户是否具有相应的操作权限,比如在公司里,只有部门高层才有有权限访问某些页面或服务,而其他人没有权限则无法进行访问。示例性的,如图3所示,所述服务网关将所述部署请求转发至所述节点管理端和所述节点监控端的步骤包括:
S210,所述服务网关接收客户端发送的所述部署请求,所述部署请求包括用户身份信息。
其中,所述用户身份信息包括但不限于身份令牌、访问账号及密码。
S220,所述服务网关对所述用户身份信息进行身份验证。
S230,判断身份验证是否通过。
若通过,则执行S240,根据所述部署请求获取所述部署请求对应的权限。
若不通过,则执行S280,将所述部署请求返回至客户端。
S250,根据所述用户身份信息对所述部署请求对应的权限进行鉴权。
S260,判断鉴权是否通过。
若通过,则执行S270,则将所述客户端发送的部署请求转发至所述节点管理端和所述节点监控端。
若不通过,则执行S280,将所述部署请求返回至客户端。
进一步的,所述服务网关还起到流量限制的作用,当接收到多个客户端发送的多个部署请求并发的场景时,会根据收到部署请求的时间逐个对发送部署请求的用户进行身份验证和鉴权,只要通过身份验证和鉴权的用户所发送的部署请求才会被逐一转发到节点管理端或节点监控端。示例性的,如图4所示,所述方法还包括:
S211,获取所述服务网关接收客户端发送的部署请求对应的时间戳。
S212,根据时间戳的先后顺序对发送部署请求的客户端进行身份验证。
另外,本申请后续服务网关转发管理请求的过程均可参照上述说明,在此不再赘述。本申请服务网关转发客户端发送的所有请求之前均会完成身份验证和鉴权,识别发送部署请求的用户身份信息,验证用户的身份合法性,以及判断该用户是否有相应的操作权限,比如节点部署操作、创建通道、将节点加入通道、在通道内部署智能合约等。实现用户是否有权限的校验,如果有则执行转发,如果没有则直接返回用户。
S300,所述节点管理端根据所述部署请求将目标区块链中与待部署节点适配的节点镜像打包发送至待部署节点。
S400,所述待部署节点根据所述节点镜像进行自动容器化部署。
其中,目标区块链是将待部署节点部署成区块链节点后所加入的区块链。所述节点镜像是完整的节点容器镜像,包括容器安装包、节点服务镜像、节点服务运行所需的依赖包。所述节点管理端根据所述部署请求读取部署请求中包含的待部署节点的服务器信息,所述服务器信息包括IP地址、服务器访问账户密码、配置信息、代理信息等,根据所述配置信息自动选择与待部署节点适配的节点镜像,将所述节点镜像对应的容器安装包、节点服务镜像、节点服务运行的依赖包打成一个压缩包。根据待部署节点的IP地址、服务器访问账户密码、代理信息,将压缩包远程传输到待部署节点的服务器上,并启动部署脚本,完成压缩包的解压、安装容器安装包、安装节点服务运行的依赖包、加载节点服务镜像等一系列自动化部署操作。
在本实施例中,本申请通过将与待部署节点适配的节点镜像打包发送至待部署节点并开始自动容器化部署操作。从而完成在待部署节点上部署区块链进程,即可基于区块链进程将待部署节点作为区块链节点,解决了兼容各种平台软硬件环境的问题,提供了标准化的节点容器部署。
S500,所述节点监控端响应所述部署请求,监听所述部署请求的执行过程。
S600,当监听到待部署节点反馈的执行结果为完成时,将所述部署请求的执行结果发送至所述服务网关。
S700,所述服务网关将所述部署请求的执行结果转发至相应的客户端。
其中,服务网关会把客户端发送的部署请求以事件的形式通知给节点监控端,节点监控端响应于所述部署请求对应的事件,监听部署请求对应的事件的执行过程,即节点管理端根据部署请求将目标区块链中与待部署节点适配的节点镜像打包发送至待部署节点以及待部署节点根据节点镜像进行自动容器化部署的过程。监听到部署请求对应的事件的最终执行结果,并将执行结果通过服务网关发送至客户端。客户端会将执行结果可视化的展示在可视化页面上。
在本实施例中,当多个客户端发送多个部署请求时,所述节点监控设置多个监听线程并发执行,线程是操作系统能够进行运算调度的最小单位。通过多线程方式可以有效的挖掘系统CPU的使用效率,进而提升执行效率。示例性的,本申请通过设置一个部署请求对应一个监听线程,通过多个监听线程并发执行,提高监听的效率。所述节点监控端响应所述部署请求,如图5所示,监听所述部署请求的执行过程的步骤还包括:
S610,所述节点监控端响应所述部署请求,根据所述部署请求的数目,启动相应数目的监听线程。
S620,每个监听线程分别监听所分配的部署请求的执行过程。
另外,本申请后续监听管理请求的过程均可参照上述说明,在此不再赘述。
S800,所述节点监控端实时监听目标节点的运行状态,并将所述运行状态发送至所述服务网关;所述目标节点为待部署节点部署成功后的节点。
S900,所述服务网关将所述运行状态转发至相应的客户端。
当待部署节点部署完成后,节点监控端继续实时监听完成部署后的节点的运行状态,所述运行状态包括节点运行状态,节点通道共识状态和智能合约执行状态。并将运行状态通过服务网关发送至客户端。
在本实施例中,节点监控端监听的部署请求的执行结果以及完成部署后的节点的运行状态均通过服务网关转发至相应的客户端,服务网关在获取客户端发送的部署请求的同时会记录客户端的ip地址,以及将所述部署请求转发至节点监控端时,会记录节点监控端的ip地址。通过客户端的ip地址和节点监控端的ip地址建立一个所述部署请求的ip地址对应表,当节点监控端将所述部署请求的执行结果或完成部署后的节点的运行状态反馈至服务网关时,服务网关调用所述部署请求对应的ip地址对应表,判断节点监控端ip地址和客户端ip地址与ip地址对应表中是否一致,若一致,将所述部署请求的执行结果或完成部署后的节点的运行状态转发至相应的客户端。通过服务网关建立客户端和节点监控端单独的通道,保证客户端和节点监控端数据传输的安全性。
在一种实施方式中,如图6所示,所述节点监控端实时监听目标节点的运行状态,并将所述运行状态发送至所述服务网关的步骤还包括:
S810,所述节点监控端监听到目标节点的运行状态为异常时,生成告警信息发送至所述服务网关。
S820,所述服务网关将所述告警信息转发至相应的客户端。
在本实施例中,节点监控端以监听线程的形式主动监听区块链节点的运行状况,所述运行状态包括节点运行状态,节点通道共识状态和智能合约执行状态。当监听到运行异常,会自动生成告警信息,所述告警信息包括但不限于异常的节点,节点的异常信息。并通过预设的告警方式,发送至相应的客户端,客户端通过可视化页面展示,告知用户即时处理。实现了区块链的持续、稳定运行,提供了可视化的区块链网络拓扑主动检测与跟踪技术,以满足政府监管的需要。
在一种实现方式中,如图7所示,所述服务网关将所述部署请求的执行结果转发至相应的客户端的步骤之后还包括:
S101,所述客户端获取用户发送的管理请求,并将所述管理请求发送至所述服务网关;所述管理请求包括目标节点的服务器信息。
S102,所述服务网关将所述管理请求转发至所述节点管理端和所述节点监控端。
S103,所述节点管理端根据所述管理请求调用相应的目标节点。
S104,目标节点执行相应的管理操作。
S105,所述节点监控端响应所述管理请求,监听所述管理请求的执行过程。
S106,当监听到所述目标节点反馈的执行结果为完成时,将所述管理请求的执行结果发送至所述服务网关。
S107,所述服务网关将所述管理请求的执行结果转发至相应的客户端。
在本实施例中,用户通过客户端的可视化页面查看到节点部署成功后,可以继续通过服务网关向节点管理端发送管理请求,所述管理请求包括用于对区块链进行管理的节点管理操作,以使得节点管理端在接收到所述管理请求时调用至少一个目标节点执行与所述管理请求对应的节点管理操作。例如节点管理操作可以包括创建通道、将其他组织机构或企业的节点加入到通道内、并在通道内部署智能合约等。同样地,每次节点管理端接收到管理请求并根据所述管理请求调用区块链节点执行对应的节点管理操作,节点监控端都会收到服务网关发送的管理请求对应的事件,然后通过监听线程监听所述管理请求对应的事件的最终执行结果,并将执行结果通过服务网关发送至客户端。每次的通道或智能合约的管理操作对于节点监控端都是一次事件监听并最终获取事件执行结果的过程,用户可通过客户端直接发起通道或智能合约的批量管理操作,客户端会将执行结果可视化的展示在可视化页面上,以实现整个区块链平台服务的可视化管理。
第二方面,如图8所示,本申请提供了一种可视容器化的联盟链节点部署系统,图8示出了可以实现本申请实施例的示例性联盟链节点部署系统架构。所述部署系统被配置为执行上述部署方法。所述联盟链节点部署系统架构包括访问层、网络层、服务层以及区块链底层。
所述访问层包括多个客户端,客户端为用户提供可视化界面,并在可视化页面上设置有部署项图标和管理项图标。用户通过点击或触摸相应的图标,操作相应的部署功能或管理功能,客户端获取用户发送的请求并转发至服务网关,所述请求为部署请求或管理请求。以及接收服务网关发送的所述请求的执行结果和节点的运行状态并可视化的展示在可视化页面上,实现整个区块链平台服务的可视化管理。
所述网络层包括服务网关,用于接收客户端发送的请求,并转发到节点管理端或节点监控端。所述服务网关包括身份验证模块和鉴权控制模块。所述身份验证模块用于对发送请求的用户进行身份验证。所述鉴权控制模块用于根据用户的身份信息对用户发送的请求进行鉴权,校验用户是否具有相应的操作权限。
所述服务层包括节点管理端和节点监控端。所述节点管理端包括节点管理模块、通道管理模块和合约管理模块。所述节点管理模块用于区块链节点的管理;所述通道管理模块用于节点通道的管理;所述合约管理模块用于链上智能合约的管理。所述节点监控端包括实时监控模块和异常报警模块。所述实时监控模块用于以监听线程的形式主动监听区块链节点的运行状态,并将运行状态通过服务网关发送至客户端;所述异常报警模块用于以消息通知的形式将节点的告警信息通过服务网关发给客户端。
上述系统中在应用前述方法时的作用效果可参见前述方法实施例中的说明,在此不再赘述。