logo好方法网

一种基于容器技术的区块链管理方法


技术摘要:
本发明公开了一种基于容器技术的区块链管理方法,该方法包括:后台服务端通过容器集群管理模块调用docker swarm sdk相关接口,根据创建区块链网络节点的配置信息以及节点镜像ID生成docker service的创建参数,调用docker client的CreateService方法在swarm集群中启动区  全部
背景技术:
区块链为分布式多节点架构,在以往区块落地中往往采用人工对各个节点进行部 署,而且不支持区块链节点的高可用服务,或者是采用Kubernetes这种很重的容器编排技 术,造成在实施区块链服务建设时运维成本很高,可扩展性不好,是区块链构建生态合作时 的一大障碍。目前亟需为企业提供一种轻量的、便捷的、快速的、可靠的区块链管理方案。
技术实现要素:
本发明的目的在于针对现有技术的不足,提供一种基于容器技术的区块链管理方 法。 为实现上述目的,本发明有如下技术方案:本发明提出一种便捷的合理配置云计 算资源及个性化部署区块链服务的区块链管理方法,能够提供监控区块链状态服务;提供 区块链交易接口、查询接口;能够自主管理区块链容器节点集群,实现容器的编排,具体来 讲可实现:负载均衡,选择最适合机器部署容器,集群添加新的机器时,重新平衡容器的分 配情况;高可用服务,发生机器故障,能够自动把故障机器上的容器部署到其它节点,如果 容器故障则重启容器等。本发明方法具体实现过程如下: 后台服务端通过容器集群管理模块调用docker  swarm  sdk相关接口,根据创建区 块链网络节点的配置信息以及节点镜像ID生成docker  service的创建参数,调用docker  client的CreateService方法在swarm集群中启动区块链节点; 后台服务端通过容器集群管理模块调用docker  swarm的InspectSwarm对swarm集 群的区块链节点进行状态监控,实现集群容器高可用; 后台服务端通过区块链管理模块调用blockchain  sdk进行创建链,安装 chaincode,实例化chaincode,发起交易,查询交易等操作。 进一步地,所述后台服务端向用户提供区块链世界状态监控接口、合约管理接口、 交易审计接口等。 进一步地,区块链底层资源由docker  swarm集群管理,区块链网络swarm节点集群 创建过程如下: (1)后台服务端首先完成初始化:根据配置参数完成创建swarm集群的setupInfo 信息,并完成数据库初始化,创建swarmClient对象;根据以上初始化内容生成Setup对象。 (2)用户传入配置信息,调用Setup对象的setup接口,进行区块链网络节点的创 建。 (3) 后台服务端根据用户传入的配置信息,调用bl o c k c h a i n  s d k的 CreateConfigBlock方法生成配置块。 (4) s wa rm集群初始化:根据配置信息确定swa rm集群的lis te n Ad d r、 4 CN 111581277 A 说 明 书 2/6 页 AdvertiseAddr、DataPathAddr,通过docker  client的InitSwarm完成初始化。 ( 5 ) 后 台 服 务 端 根 据 配 置 文 件 生 成 容 器 节 点 的 模 式 化 配 置 信 息 CreateServiceOptions。 (6)调用docker  swarm  client的CreateService方法将步骤(5)生成的 CreateServiceOptions参数传入,创建及启动区块链节点并返回创建结果信息。 (7)将返回的创建结果信息写到数据库里,供查询调用。 (8)后台服务端提供创建链接口,把channelConfig配置信息传入blockchain  sdk 的CreateChannel接口进行创建链。 (9)后台服务端提供安装智能合约接口,把chaincode名称、版本、合约路径、区块 链背书节点地址和端口传入blockchain  sdk的InstallChaincode接口进行安装智能合约。 (10)后台服务端提供实例化合约,把链名称、合约名称、合约版本、背书策略、合约 初始化参数、共识节点地址和端口、背书节点地址和端口传入blockchain  sdk的 InstantiateChaincode接口进行智能合约实例化,启动合约容器。 进一步地,所述swarm集群的setupInfo信息,包括:区块链容器节点名称、网络地 址、端口号、区块链成员组织的MSP证书内容等; 所述用户传入的配置信息,包括:组织节点地址、端口、证书信息、背书策略及读写 权限等; 所述容器节点的模式化配置信息CreateServiceOptions,包括:区块链节点容器 镜像名称、区块链节点镜像程序启动命令、程序工作路径、区块链节点镜像程序的环境变 量; 所述区块链节点镜像程序的环境变量,包括:区块链节点MSPID、区块链节点TLS证 书、区块链节点网络通信地址及端口、区块链节点名称以及其他配置开关选项等内容; 所述创建结果信息,包括:链上组织成员的MSPID、证书信息、节点信息; 所述channelConfig配置信息,包括:链的名字、链的组织成员、背书策略、读写权 限配置以及区块链共识节点的地址和端口号。 进一步地,所述后台服务端提供查询显示的Restful接口,通过把链名称、合约名 称、区块链节点地址和端口、查询参数传入blockchain  sdk的Query接口实现; 所述后台服务端提供发起交易的Restful接口,通过把链名称、合约名称、区块链 节点地址和端口、交易参数传入blockchain  sdk的Invoke接口实现; 进一步地,采用orm框架设计数据库,把链上的信息缓存到数据库中,数据库构建 过程包括:初始化阶段,进行数据初始化操作,包括:数据库类型、数据库用户名、数据库密 码、数据库IP、数据库端口号、数据库名称等;注册数据库驱动;注册数据库;连接数据库;运 行数据库;设计ormStore接口层,用于存储或获取区块链节点信息。 进一步地,在区块链网络正常运行时,新增区块链节点的过程如下:首先启动区块 链节点镜像,然后调用docker  swarm  client的JoinSwarm接口加入区块链节点集群。 进一步地,区块链节点退出时,首先调用docker  swarm  client的LeaveSwarm方法 将节点退出区块链集群,最后停止容器,完成区块链节点的退出。 进一步地,区块链节点高可用的实现具体为:区块链节点均运行在集群中,区块链 节点被划分成manager节点和worker节点,manager节点对整个集群进行管理,多个manager 5 CN 111581277 A 说 明 书 3/6 页 节点构成集群,当manager节点宕机后采用raft共识机制选出新的primary  manager节点来 管理集群;docker  swarm集群节点发生故障或宕机,docker  swarm的高可用机制可实现区 块链节点的动态迁移;区块链网络节点对外地址不会变化,不影响区块链节点之间的网络 通信。 本发明的有益效果是:本发明基于docker  swarm实现区块链管理,相较于 Kubernetes容器编排技术,docker  swarm特点是轻量、便捷、启动速度快,本发明采用 docker  swarm方案能够使企业快速、便捷地使用区块链服务,使得构建多组织的区块链联 盟成为可能,为构建多组织的联盟链提供一种轻量的、便捷的、快速的、可靠的、自动化的解 决方案。 附图说明 为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现 有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本发明 的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据 这些附图获得其他的附图。 图1为本发明的总体架构图; 图2为区块链网络swarm节点集群创建流程图; 图3为数据库构建流程图; 图4为swarm集群管理示意图。
分享到:
收藏