CN116107704A - 区块链BaaS和多联盟部署方法、数据存储访问方法及装置 - Google Patents

区块链BaaS和多联盟部署方法、数据存储访问方法及装置 Download PDF

Info

Publication number
CN116107704A
CN116107704A CN202310403984.7A CN202310403984A CN116107704A CN 116107704 A CN116107704 A CN 116107704A CN 202310403984 A CN202310403984 A CN 202310403984A CN 116107704 A CN116107704 A CN 116107704A
Authority
CN
China
Prior art keywords
data
storage
blockchain
node
chain
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202310403984.7A
Other languages
English (en)
Other versions
CN116107704B (zh
Inventor
马兆丰
高文亮
秦捷
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Beijing University of Posts and Telecommunications
Original Assignee
Beijing University of Posts and Telecommunications
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Beijing University of Posts and Telecommunications filed Critical Beijing University of Posts and Telecommunications
Priority to CN202310403984.7A priority Critical patent/CN116107704B/zh
Publication of CN116107704A publication Critical patent/CN116107704A/zh
Application granted granted Critical
Publication of CN116107704B publication Critical patent/CN116107704B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/07Responding to the occurrence of a fault, e.g. fault tolerance
    • G06F11/14Error detection or correction of the data by redundancy in operation
    • G06F11/1402Saving, restoring, recovering or retrying
    • G06F11/1446Point-in-time backing up or restoration of persistent data
    • G06F11/1448Management of the data involved in backup or backup restore
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/24Querying
    • G06F16/245Query processing
    • G06F16/2458Special types of queries, e.g. statistical queries, fuzzy queries or distributed queries
    • G06F16/2471Distributed queries
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/20Information retrieval; Database structures therefor; File system structures therefor of structured data, e.g. relational data
    • G06F16/27Replication, distribution or synchronisation of data between databases or within a distributed database system; Distributed database system architectures therefor
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06QINFORMATION AND COMMUNICATION TECHNOLOGY [ICT] SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES; SYSTEMS OR METHODS SPECIALLY ADAPTED FOR ADMINISTRATIVE, COMMERCIAL, FINANCIAL, MANAGERIAL OR SUPERVISORY PURPOSES, NOT OTHERWISE PROVIDED FOR
    • G06Q40/00Finance; Insurance; Tax strategies; Processing of corporate or income taxes
    • G06Q40/04Trading; Exchange, e.g. stocks, commodities, derivatives or currency exchange
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/10Protocols in which an application is distributed across nodes in the network
    • H04L67/1097Protocols in which an application is distributed across nodes in the network for distributed storage of data in networks, e.g. transport arrangements for network file system [NFS], storage area networks [SAN] or network attached storage [NAS]
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • G06F2009/45595Network integration; Enabling network access in virtual machine instances
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Software Systems (AREA)
  • General Engineering & Computer Science (AREA)
  • Databases & Information Systems (AREA)
  • Business, Economics & Management (AREA)
  • Computer Networks & Wireless Communication (AREA)
  • Accounting & Taxation (AREA)
  • Finance (AREA)
  • Signal Processing (AREA)
  • Data Mining & Analysis (AREA)
  • Development Economics (AREA)
  • Strategic Management (AREA)
  • Technology Law (AREA)
  • General Business, Economics & Management (AREA)
  • Computing Systems (AREA)
  • Marketing (AREA)
  • Economics (AREA)
  • Fuzzy Systems (AREA)
  • Mathematical Physics (AREA)
  • Probability & Statistics with Applications (AREA)
  • Computational Linguistics (AREA)
  • Quality & Reliability (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)

Abstract

本发明提供一种区块链BaaS和多联盟部署方法、数据存储访问方法及装置,将Kubernetes集群架构作为BaaS服务运行的底座,基于Kubernetes自动化容器编排和管理的能力,对区块链节点及服务进行自动调度、备份、故障恢复和容错处理,确保区块链网络的稳定运行和高可用性。Kubernetes基于用于对自定义资源的创建请求,自动调整容器数量实现快速弹性的扩容和缩容,适应需求变化,动态地调整容器的资源配额,根据实际使用情况分配CPU、内存等资源,确保区块链网络的资源利用率最大化。同时,结合GlusterFS提供了种高度扩展的布式存储***,对链上账本数据、区块链关键配置和用户数据实现持久化存储,基于ETCD与MinIO的链上链下数据协同方案来节省链上存储空间实现用户区块链高可用性。

Description

区块链BaaS和多联盟部署方法、数据存储访问方法及装置
技术领域
本发明涉及区块链技术领域,尤其涉及一种区块链BaaS和多联盟部署方法、数据存储访问方法及装置。
背景技术
开源社区为了更好地方便企业和个人用户利用区块链技术,提出了将区块链应用运行在云平台上的设想,即区块链即服务(Blockchain as a Service,BaaS)。BaaS是一种创建、管理和运维用户区块链网络和应用的云服务平台,它可以为用户和开发者提供便捷、高性能、可定制化的区块链服务。BaaS平台可以凭借底层云计算平台设施的弹性架构与快速部署的特点,为企业或者个人提供更方便、快捷和安全的分布式账本服务。
传统的Hyperledger Fabric联盟链手动部署方式,需要部署人员修改配置文件后,手动生成证书和创世区块等,然后再分别启动链容器,这种部署方式存在如下问题:1)部署运维复杂,不利于多联盟扩展,耗时久且对运维人员不够友好。2)当用户区块链链中Peer或Orderer节点出现问题后无法自动恢复,无法保证高可用性。3)大多数的BaaS使用Docker来编排Fabric联盟链节点,而Docker是单节点容器,不具有编排调度功能,这导致当某台服务器宕机时,无法将该服务器上的区块链节点在其他节点恢复运行。与此同时,BaaS服务运行在Docker容器中也不具有故障恢复功能,当BaaS服务挂掉后,BaaS服务将不再可用。
为了保证BaaS服务的高可用性以及实现多链敏捷部署,亟需一种新的区块链部署方案和数据存取方案。
发明内容
鉴于此,本发明实施例提供了一种区块链BaaS和多联盟部署方法、数据存储访问方法及装置,以消除或改善现有技术中存在的一个或更多个缺陷,解决传统联盟链部署方法复杂导致不利于扩展且节点宕机后难以恢复的问题。
一方面,本发明提供一种区块链BaaS和多联盟部署方法,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构包括由多个存储节点、多个工作节点以及多个控制节点,所述工作节点和所述控制节点基于Kubernetes管理运行,该方法包括以下步骤:
在各存储节点上部署GlusterFS分布式文件***,将多个复制卷部署至每个工作节点服务器的数据文件目录,并将各复制卷通过创建持久卷挂载到持久卷申请中;
在各工作节点中通过Deployment控制器在所述Kubernetes中启动BaaS服务,并将所述持久卷申请挂载到BaaS服务容器的数据文件目录;
将所述BaaS服务的容器镜像拷贝至所述BaaS服务容器的数据文件目录上;
所述BaaS服务向所述控制节点中的kube-apiserver发送自定义资源的创建请求,由控制器组件监听kube-apiserver中的创建请求,并请求调用创建所述自定义资源所需的核心功能函数;
由所述控制节点中的BaaS apiserver执行所述自定义资源所需的核心功能函数,根据所述自定义资源的创建请求生成用于启动的配置文件、组织成员关系文件、身份证书文件、密钥文件和节点通道配置文件;
在各工作节点中调用Fabric-go-SDK创建联盟链的SDK配置文件;
在各控制节点中调用kube-apiserver和kube-schuduler,根据所述SDK配置文件创建区块链节点容器,所述区块链节点容器包括peer节点容器和orderer节点容器;
将所述持久卷申请挂载至各peer节点容器和各orderer节点容器;将用户在所述联盟链上的数据通过文件挂在持久化存储至所述GlusterFS分布式文件***;将所述BaaS服务的后端数据存储至ETCD数据库;
在各工作节点中调用Fabric-go-SDK创建各联盟链的多个通道,并将各节点容器加入相应通道;
在各工作节点中调用Fabric-go-SDK部署各联盟链的链码;
其中,各工作节点中所述BaaS服务容器对用户数据中对象类型的数据加密后存储到链下MinIO存储中,对用户数据中非对象类型的数据加密后存储到链下ETCD分布式存储中,并将链下数据存储地址和数据哈希运算后的哈希值存储到链上。
在一些实施例中,所述容器镜像包括:
用于生成配置信息的shell脚本;
和,用于生成组织成员信息及其身份信息、密钥文件的工具;
和,用于生成节点、通道配置的文件;
和,用于生成创世区块的工具。
在一些实施例中,根据所述自定义资源的创建请求生成用于启动的配置文件、组织关系及身份证书文件、密钥文件和节点通道配置文件,包括:
将用户定义的链参数作为脚本执行参数生成用于启动的配置文件,所述链参数包括:链名、orderer节点数量、peer节点数量和初始组织名;
使用cryptogen二进制工具生成组织成员关系文件、身份证书文件和密钥文件;
使用configtxgen二进制工具生成所述节点通道配置文件,所述节点通道配置文件包括***通道的创世区块、通道的交易文件、组织锚节点交易文件。
在一些实施例中,所述工作节点以及所述控制节点通过装载Keepalived方案和HAproxy方案进行调度。
在一些实施例中,在各工作节点中调用Fabric-go-SDK部署各联盟链的链码中,采用Docker作为链码启动容器运行接口。
另一方面,本发明提供一种基于区块链的数据存储方法,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构基于上述区块链BaaS和多联盟部署方法进行部署,所述方法包括:
调用所述用户数据所有者的AES密钥,并对所述用户数据进行AES加密;
若所述用户数据为对象类型,则调用MinIO存储算法将加密后的所述用户数据存储至链下MinIO存储中,并调用ETCD存储算法将对应的MinIO存储地址存储到ETCD分布式键值对存储中,并记录对应的ETCD存储地址;若所述用户数据为非对象类型,则调用所述ETCD存储算法将加密后的所述用户数据存储至ETCD分布式键值对存储中,并记录对应的ETCD存储地址;
调用预设哈希算法对所述用户数据进行哈希运算得到数据哈希值;
随机生成UUID字符串作为键,将所述ETCD存储地址和所述数据哈希值作为值,打包发送至相应的区块链进行存储。
在一些实施例中,调用所述用户数据所有者的AES密钥之前,还包括:在所述用户数据所有者注册时,通过AES密钥生成算法为其生成全局唯一的AES密钥,并存储到Vault私密存储中。
在一些实施例中,所述方法还包括:
将所述UUID字符串作为键,将允许访问所述用户数据的用户集合作为值存储至ETCD分布式键值对存储中,返回所述UUID字符串至所述用户数据的所有者。
另一方面,本发明还提供一种基于区块链的数据访问方法,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构基于上述区块链BaaS和多联盟部署方法进行部署,所述方法用于访问如上述基于区块链的数据存储方法存储的用户数据,所述方法包括:
接收数据访问者待访问数据的UUID字符串发出访问数据请求,通过所述UUID字符串查询ETCD分布式键值对存储中允许访问所述待访问数据的用户集合,判断所述数据访问者是否具有访问权限,若具有访问权限,则从Vault私密存储中获取所述待访问数据的数据上传者的AES密钥;
根据所述UUID字符串向区块链请求所述待访问数据的ETCD存储地址和第一数据哈希值;
调用ETCD查询算法获取所述ETCD存储地址对应的第一数据,若所述第一数据为MinIO地址类型,则根据该数据查询MinIO存储得到加密后的待访问数据;否则直接将所述第一数据认定为加密后的待访问数据;
采用所述AES密钥对加密后的待访问数据进行解密,得到所述待访问数据;
调用预设哈希算法对所述待访问数据进行哈希运算得到第二数据哈希值,若所述第一数据哈希值与所述第二数据哈希值相同则访问成功。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
本发明的有益效果至少是:
所述区块链BaaS和多联盟部署方法、数据存储访问方法及装置,将Kubernetes集群架构作为BaaS服务运行的底座,基于Kubernetes自动化容器编排和管理的能力,对区块链节点及服务进行自动调度、备份、故障恢复和容错处理,确保区块链网络的稳定运行和高可用性。Kubernetes基于用于对自定义资源的创建请求,自动调整容器数量实现快速弹性的扩容和缩容,适应需求变化,动态地调整容器的资源配额,根据实际使用情况分配CPU、内存等资源,确保区块链网络的资源利用率最大化。同时,结合GlusterFS提供了种高度扩展的布式存储***,对链上账本数据、区块链关键配置和用户数据实现持久化存储,基于ETCD与MinIO的链上链下数据协同方案来节省链上存储空间实现用户区块链高可用性。
进一步的,采用Keepalived方案和HAproxy方案对故障节点进行恢复,保障了Kubernetes的高可用性。
进一步,BaaS服务通过控制器的实例化部署,避免了节点故障,BaaS后端数据通过Kubernetes CRD技术来将后端数据存储到ETCD,实现高可用分步存储。
本发明的附加优点、目的,以及特征将在下面的描述中将部分地加以阐述,且将对于本领域普通技术人员在研究下文后部分地变得明显,或者可以根据本发明的实践而获知。本发明的目的和其它优点可以通过在说明书以及附图中具体指出的结构实现到并获得。
本领域技术人员将会理解的是,能够用本发明实现的目的和优点不限于以上具体所述,并且根据以下详细说明将更清楚地理解本发明能够实现的上述和其他目的。
附图说明
此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,并不构成对本发明的限定。在附图中:
图1为本发明一实施例所述区块链BaaS和多联盟部署方法的流程图。
图2为本发明另一实施例所述区块链BaaS和多联盟部署方法中采用的Kubernetes集群架构图。
图3为本发明一实施例所述区块链BaaS和多联盟部署方法中的BaaS模型结构图。
图4为本发明一实施例所述区块链BaaS和多联盟部署方法中复制卷的模式示意图。
图5为本发明一实施例所述数据存储方法的流程示意图。
图6为本发明一实施例所述数据访问方法的流程示意图。
具体实施方式
为使本发明的目的、技术方案和优点更加清楚明白,下面结合实施方式和附图,对本发明做进一步详细说明。在此,本发明的示意性实施方式及其说明用于解释本发明,但并不作为对本发明的限定。
在此,还需要说明的是,为了避免因不必要的细节而模糊了本发明,在附图中仅仅示出了与根据本发明的方案密切相关的结构和/或处理步骤,而省略了与本发明关系不大的其他细节。
应该强调,术语“包括/包含”在本文使用时指特征、要素、步骤或组件的存在,但并不排除一个或更多个其它特征、要素、步骤或组件的存在或附加。
在此,还需要说明的是,如果没有特殊说明,术语“连接”在本文不仅可以指直接连接,也可以表示存在中间物的间接连接。
在下文中,将参考附图描述本发明的实施例。在附图中,相同的附图标记代表相同或类似的部件,或者相同或类似的步骤。
传统区块链部署方式,安装过程繁琐,运维复杂,耗时久且不易实现用户根据自身需求动态配置,从而不利于BaaS大规模频繁创建删除区块链。与此同时,传统的区块链部署方式中,区块链的高可用性因为不影响区块链主要功能,业务开发优先级较低,从而往往得不到很好的保证,而这将会对区块链网络的长期稳定运行、故障恢复等能力造成巨大的威胁。为了保障底层BaaS平台的高可用性使得BaaS服务稳定高效运行、保障区块链故障节点自动恢复使得用户区块链网络稳定运行、保障区块链数据持久化备份存储使得区块链网络可恢复,本发明提供了一种区块链BaaS和多联盟部署方法、数据存储访问方法及装置,使用云计算领域的Kubernetes技术加分布式存储GlusterFS技术来保证BaaS及区块链的高可用性和区块链的敏捷部署能力。
需要预先说明的是,本发明采用了Kubernetes、CRD、Kubernetes Controller、GlusterFS分布式文件、ETCD分布式键值对存储***、Keepalived和HAproxy技术。
Kubernetes(K8S)是一个开源的容器编排工具,它可以自动化容器化应用程序的部署、扩展和管理。基于容器化技术的,它将应用程序打包成一个或多个容器,并利用容器的轻量级特性,在不同环境之间进行迁移和部署。Kubernetes提供了一系列API和控制器来实现对容器应用程序的部署、伸缩、升级、监控等操作,使得容器应用程序的管理更加方便和高效。
组成Kubernetes的核心组件包括:
控制平面Deployment,控制平面是Kubernetes***的大脑,负责管理整个集群的状态和配置信息。控制平面中,ETCD用于存储整个集群的配置信息和状态;API Server提供集群中各个组件之间的通信接口,同时也是集群控制的入口;ControllerManager负责运行各种控制器,以确保集群中的各种资源的期望状态与实际状态一致。Scheduler根据资源需求和约束条件,将Pod调度到合适的节点上。在本发明中,基于控制节点运行。
Node节点,Node节点是Kubernetes集群中的工作节点,负责运行容器应用程序。Node节点中,Kubelet负责管理该节点上的容器;kube-proxy负责为Pod提供网络代理和负载均衡服务;
附加组件:除了控制平面和Node节点之外,Kubernetes还提供了一些附加组件,包括:Ingress Controller,负责将外部请求路由到集群内的Service中。DNS Server,为集群内的Pod提供DNS解析服务。Dashboard,提供Web界面来管理和监控Kubernetes集群。
这些组件之间相互协作,共同实现Kubernetes对容器应用程序的扩展、升级和管理。例如,API Server接收用户的请求,并根据用户的需求通过ControllerManager调度合适的Pod到Node节点上运行,同时kubelet会监控Pod的状态,确保其始终处于期望状态。Ingress Controller则负责将外部请求路由到对应的Pod上,以实现对容器应用程序的访问。
CRD (Custom Resource Definition)是一种Kubernetes内置的资源类型,即自定义资源的定义,用于描述用户自定义的资源。CRD 本质是一个Open Api的Schema,向Kubernetes集群注册一种新资源。用户可以把Kubernetes已有的资源和能力自由堆砌起来,从而拓展了Kubernetes原生不具备的能力。在本专利中,CRD技术主要用于以下几个方面:1)定义Consortium CRD,该CRD中配置了用户自定义区块链的相关信息,通过部署CRD来帮助实现敏捷部署功能。2)与Controller技术结合,实现动态维护指定链中的Orderer、Peer节点的数量,从而协助实现区块链高可用能力。
Kubernetes Controller技术:Kubernetes Controller技术是一个永不终止的控制循环,它持续管理着集群的状态,通过apiserver获取***的状态,并且不断尝试以达到预期状态,比如副本控制器,namespace控制器,serviceaccounts控制器。在本发明中,KubernetesController技术与CRD技术配合动态维护用户Consortium CRD即用户自定义区块链中Peer、Orderer节点的数量,从而提高区块链的高可用性。
GlusterFS分布式存储技术:GlusterFS是一个开源分布式文件***,具有强大的横向扩展能力,可支持数pb存储容量和数千客户端,通过网络互联成一个并行的网络文件***,具有可扩展性、高性能、高可用等特点。在本发明中,GlusterFS分布式文件存储技术主要用于以下几个方面:1)用来将区块链敏捷部署所需要的配置文件和创世区块等多对一挂载到区块链节点,从而实现敏捷部署和支持区块链节点宕机后的漂移重启即提高区块链层的高可用性。2)将区块链数据一对多从区块链节点容器持久化到Node节点,从而实现区块链数据持久化和高可用。
ETCD分布式键值对存储:ETCD 是使用Go语言开发的一个开源的、高可用的分布式key-value存储***。在本发明中,ETCD为Kubernetes原生存储***,同时也作为BaaS服务的存储服务为BaaS业务提供持久化存储服务。
MinIO对象存储:MinIO基于Apache License v2.0的开源协议开发,是一个高性能、分布式的对象存储***。在本发明中,MinIO存储链下对象数据以实现链上链下数据协同。
Keepalived和HAproxy技术:Keepalived是一个基于VRRP(Virtual RouterRedundancy Protocol,虚拟路由冗余协议) 来实现的 LVS 服务高可用方案,可以利用其来解决单点故障。Haproxy 类似于nginx,是一个负载均衡、反向代理软件。在本专利中,二者 共同用于实现Kubernetes的高可用,保证区块链底层调度平台的安全性和稳定性。
具体的,本发明提供一种区块链BaaS和多联盟部署方法,所述方法在预设区块链网络架构上执行,参照图1、图2和图3,预设区块链网络架构包括由多个存储节点、多个工作节点以及多个控制节点,工作节点和控制节点基于Kubernetes管理运行。
所述方法包括以下步骤S101~S110:
步骤S101:在各存储节点上部署GlusterFS分布式文件***,将多个复制卷部署至每个工作节点服务器的数据文件目录,并将各复制卷通过创建持久卷挂载到持久卷申请中。
步骤S102:在各工作节点中通过Deployment控制器在Kubernetes中启动BaaS服务,并将持久卷申请挂载到BaaS服务容器的数据文件目录。
步骤S103:将BaaS服务的容器镜像拷贝至BaaS服务容器的数据文件目录上。在一些实施例中,容器镜像包括:用于生成配置信息的shell脚本,用于生成组织成员信息及其身份信息、密钥文件的工具,用于生成节点、通道配置的文件,生成创世区块的工具。
步骤S104:BaaS服务向控制节点中的kube-apiserver发送自定义资源的创建请求,由控制器组件监听kube-apiserver中的创建请求,并请求调用创建所述自定义资源所需的核心功能函数。
步骤S105:由控制节点中的BaaS apiserver执行自定义资源所需的核心功能函数,根据自定义资源的创建请求生成用于启动的配置文件、组织成员关系文件、身份证书文件、密钥文件和节点通道配置文件。具体的,将用户定义的链参数作为脚本执行参数生成用于启动的配置文件,链参数包括:链名、orderer节点数量、peer节点数量和初始组织名;使用cryptogen(cryptogen是Hyperledger Fabric里用于生成数字证书及私钥的二进制工具)二进制工具生成组织成员关系文件、身份证书文件和密钥文件;使用configtxgen(configtxgen是Fabric里用于生成通道配置、交易的二进制工具)二进制工具生成所述节点通道配置文件,节点通道配置文件包括***通道的创世区块、通道的交易文件、组织锚节点交易文件。
步骤S106:在各工作节点中调用Fabric-go-SDK创建联盟链的SDK配置文件。
步骤S107:在各控制节点中调用kube-apiserver和kube-schuduler,根据SDK配置文件创建区块链节点容器,区块链节点容器包括peer节点容器和orderer节点容器。
步骤S108:将持久卷申请挂载至各peer节点容器和各orderer节点容器;将用户在联盟链上的数据通过文件挂在持久化存储至GlusterFS分布式文件***;将BaaS服务的后端数据存储至ETCD数据库。
步骤S109:在各工作节点中调用Fabric-go-SDK创建各联盟链的多个通道,并将各节点容器加入相应通道。
步骤S110:在各工作节点中调用Fabric-go-SDK部署各联盟链的链码。
其中,各工作节点中BaaS服务容器对用户数据中对象类型的数据加密后存储到链下MinIO存储中,对用户数据中非对象类型的数据加密后存储到链下ETCD分布式存储中,并将链下数据存储地址和数据哈希运算后的哈希值存储到链上。
在步骤S101~S110中,利用Kubernetes技术进行区块链部署,通过将BaaS服务容器化,根据用户的需求自动调整容器的数量,实现快速的弹性扩容和缩容,利用GlusterFS技术协同存储链上数据,实现数据持久化,减小链上存储压力。具体实施过程中,利用K8S的控制节点和工作节点构建调度层并部署区块链,调度层中,master控制中心负责整个集群的管理和调度工作,控制中心的核心组件kube-apiserver提供了一个RESTful的API接口,用于与整个Kubernetes集群进行交互,并设置BaaS-apiserver用于对根据用户的自定义资源请求创建部署BaaS服务容器。通过Kubernetes对BaaS服务进行容器化调度和部署,能够实现高可用性。
对于执行过程中BaaS服务的后端数据以CR的形式存储到ETCD数据库,同时K8S的调度数据也存储至ETCD数据库。
在一些实施例中,工作节点以及控制节点通过装载Keepalived方案和HAproxy方案进行调度。Keepalived提供VRRP实现,预防单点故障。HAproxy提供可靠、高性能的负载均衡,能与Keepalived完美配合。由于两台主机上安装了Keepalived和HAproxy,如果其中一个节点故障,虚拟IP地址(即浮动IP地址)将自动与另一个节点关联,使集群仍然可以正常运行,从而实现高可用。示例性的,如图2所示,示例集群中有三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟IP地址。本示例中的虚拟ip(vip)地址也可以称为“浮动IP地址”。这意味着在节点故障的情况下,该IP地址可在节点之间漂移,从而实现高可用。
在一些实施例中,在各工作节点中调用Fabric-go-SDK部署各联盟链的链码中,采用Docker作为链码启动容器运行接口。
另一方面,本发明提供一种基于区块链的数据存储方法,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构基于上述区块链BaaS和多联盟部署方法进行部署,参照图5,所述方法包括步骤S201~S204:
步骤S201:调用用户数据所有者的AES密钥,并对用户数据进行AES加密。
步骤S202:若用户数据为对象类型,则调用MinIO存储算法将加密后的用户数据存储至链下MinIO存储中,并调用ETCD存储算法将对应的MinIO存储地址存储到ETCD分布式键值对存储中,并记录对应的ETCD存储地址;若用户数据为非对象类型,则调用ETCD存储算法将加密后的用户数据存储至ETCD分布式键值对存储中,并记录对应的ETCD存储地址。
步骤S203:调用预设哈希算法对用户数据进行哈希运算得到数据哈希值。
步骤S204:随机生成UUID字符串作为键,将ETCD存储地址和数据哈希值作为值,打包发送至相应的区块链进行存储。
在步骤S201~S204中,通过区分用户数据的类型,对于对象类型数据,如文件、音频、视频等,加密后采用MinIO存储算法进行存储至链下,而对于非对象类型数据,加密后用ETCD存储算法进行存储。将相应的存储地址和数值哈希值作为值,随机生成UUID字符串作为键,构建键值存储的形式进行上链存储。
在一些实施例中,步骤S201之前,即调用用户数据所有者的AES密钥之前,还包括:在用户数据所有者注册时,通过AES密钥生成算法为其生成全局唯一的AES密钥,并存储到Vault私密存储中。
在一些实施例中,所述方法还包括:将UUID字符串作为键,将允许访问用户数据的用户集合作为值存储至ETCD分布式键值对存储中,返回UUID字符串至用户数据的所有者。本实施例中,设置访问策略,将具有访问权限的
另一方面,本发明还提供一种基于区块链的数据访问方法,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构基于上述区块链BaaS和多联盟部署方法进行部署,所述方法用于访问如上述基于区块链的数据存储方法存储的用户数据,参照图6,所述方法包括步骤S301~S305:
步骤S301:接收数据访问者待访问数据的UUID字符串发出访问数据请求,通过UUID字符串查询ETCD分布式键值对存储中允许访问待访问数据的用户集合,判断数据访问者是否具有访问权限,若具有访问权限,则从Vault私密存储中获取待访问数据的数据上传者的AES密钥。
步骤S302:根据UUID字符串向区块链请求待访问数据的ETCD存储地址和第一数据哈希值。
步骤S303:调用ETCD查询算法获取ETCD存储地址对应的第一数据,若第一数据为MinIO地址类型,则根据该数据查询MinIO存储得到加密后的待访问数据;否则直接将第一数据认定为加密后的待访问数据。
步骤S304:采用AES密钥对加密后的待访问数据进行解密,得到待访问数据。
步骤S305:调用预设哈希算法对待访问数据进行哈希运算得到第二数据哈希值,若第一数据哈希值与第二数据哈希值相同则访问成功。
步骤S301~S305中的数据查询方式与步骤S201~S204中相对应。
另一方面,本发明还提供一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现上述方法的步骤。
下面结合具体实施例,对本发明进行说明:
参照图1,提供一种区块链的敏捷部署方案,具体的实现步骤解释如下:
步骤1:部署GlusterFS分布式文件***,将复制卷部署到Kubernetes每个工作节点服务器的/data文件目录,将这些复制卷通过创建GlusterFS PV(PersistentVolume持久卷)挂载到GlusterFS PVC(Persistent Volume Claim用户存储请求)中。
GlusterFS分布式文件***复制卷模式如参考图4,在本文中的挂载算法如下。
其中,GlusterFS挂载的入口为Kubernetes的指定PVC,管理员通过此PVC可将文件复制挂载到Kubernetes所有物理节点的/data目录。
步骤2:通过Deployment控制器在Kubernetes中启动BaaS服务,将GlusterFS PVC挂载到BaaS服务所在容器的/data目录,从而通过GlusterFS分布式文件***实现BaaS服务所在容器的/data目录与各Kubernetes工作节点/data目录完全相同。即如下公式:
步骤3:将BaaS服务容器镜像中所准备好的用于生成相关配置的Shell脚本和用于生成组织成员关系以及身份证书、密钥等文件的工具cryptogen(Hyperledger Fabric里用于生成数字证书及私钥的二进制工具)和用于生成节点和通道配置文件和创世区块的工具configtxgen(Fabric里用于生成通道配置、交易的二进制工具)拷贝到容器目录/data下,从而实现将这些文件挂载到了GlusterFS中。
步骤4:BaaS服务向kube-apiserver发送一个创建consortium CR(CustomResource)的请求,Consortium Controller会通过控制器模式监听到一个consortium创建事件,从而Consortium Controller向BaaS apiserver发起调用AddConsrotium方法(在BaaS apiserver中自己实现的核心功能函数)的请求,BaaSapiserver开始执行AddConosortium方法。
步骤5:BaaS apiserver开始执行AddConsortium方法,首先根据consortium cr中用户定义的链参数如链名、orderer和peer节点数量、初始组织名等作为脚本执行参数生成用于启动的配置文件config.yaml和crypto-config.yaml。然后用cryptogen工具生成组织成员关系和身份证书、密钥等文件,用configtxgen工具生成节点与通道配置文件,包括orderer节点上***通道的创世区块文件genesis.block、新建应用通道的配置交易文件channel.tx、组织锚节点配置更新交易文件org1MSPPanchors.tx。
以crypto-config.yaml文件为模板通过cryptogen二进制工具生成组织成员关系关系和身份证书、密钥等文件。
以config.yaml配置文件为模板通过configtxgen二进制工具生成创世区块文件genesis.block和通道配置文件channel.tx,组织锚节点配置跟新交易文件org1MSPPanchors.tx。
步骤6:以联盟名称、orderer节点名称、orderer节点url、初始组织名称、节点名称组、节点url组,证书存放路径为参数调用fabric-go-sdk的addChain方法,创建新的联盟,生成新联盟的SDK配置文件,若此方法执行失败,则说明节点间通信错误,流程结束,返回错误结果。
步骤7:调用Kubernetes Api创建区块链节点容器,对于链中的peer和orderer节点,Kubernetes使用Deployment和Service进行部署,其中Deployment用于控制运行容器的pod,Service用于服务发现和节点间的通信,启动的同时将GlusterFS PVC挂载到每个orderer和peer节点,这样节点就可以获取之前生成的配置和证书文件。
Peer和Orderer节点在Kubernetes中的存在形式为Deployment与Service这两种资源,创建时以节点名称、对外端口、所要部署的Kubernetes Node(为空将按照Kubernetes默认调度策略进行调度):
若创建时不为orderer、peer节点指定要部署的Kubernetes node,将按照如下调度策略进行自动调度:
1)首先是预选(Predicates)过程。如果所有的node节点都不符合pod的最低部署要求(cpu、memory等),pod会一直处于Pending状态,直到有节点满足条件,这期间调度器会不断的进行重试。经过节点过滤后,如果多个满足条件,会按照节点优先级(priorities)大小对节点排序,最后选择优先级最高的node部署pod。
2)其次是优选(Priorities)。对预选筛选过后的所有节点进行打分评估,选择得分最高的节点进行调度。Kubernetes用一组优先级函数处理每一个通过预选的节点。最终节点的得分用以下公式计算得出:
步骤8:用户链上的数据通过文件挂载持久化存储到分布式文件***,且支持节点容器宕机后重新启动时持续获取,从而实现高可用。BaaS后端服务数据为通过cr的形式存储到ETCD数据库,从而保证了后端服务的持续高可用。
步骤9:创建通道:以联盟名称、通道名称、通道文件所在目录、orderer节点名称、组织名为参数调用fabric-go-sdk的CreateChannel方法,若成功增加修改BaaS层数据,完成通道创建。
步骤10:节点加入通道:以联盟名称、通道名称、组织名称为参数调用fabric-go-sdk的peerJoinChannel方法,若成功则增加修改BaaS层数据,完成节点加入通道。
步骤11:部署链码:因Hyperledger Fabric原生未对Kubernetes做支持,仍需以Docker作为链码启动CRI,本文采用了一种Dinp(docker in pod)的形式来使得该功能得以在Kubernetes中实现:专门启动一个pod里面启动了一个docker cri,将此docker cri的通信端口暴露出去与其他节点通信。以联盟名称、通道名称、链码名称、组织名、背书节点名为参数调用fabric-go-sdk的DeployChaincode方法,若成功则修改BaaS层数据,完成部署链码动作。
整个***的高可用性通过Kubernetes、BaaS、区块链三个层面协作共同实现,详细的实现步骤如下:
1. 高可用Kubernetes集群。参考图2和图3,Kubernetes作为整个BaaS***的运行底座,在***架构中承担了极其重要的支撑作用。高可用Kubernetes集群能够确保应用程序在运行时不会出现服务中断,这也是生产级BaaS***的需求之一。而本文中通过Keepalived和HAproxy技术以实现Kubernetes集群的高可用。示例集群中有三个主节点,三个工作节点,两个用于负载均衡的节点,以及一个虚拟IP地址。本示例中的虚拟ip(vip)地址也可以称为“浮动IP地址”。这意味着在节点故障的情况下,该IP地址可在节点之间漂移,从而实现高可用。Keepalived提供VRRP实现,预防单点故障。HAproxy提供可靠、高性能的负载均衡,能与Keepalived完美配合。由于两台主机上安装了Keepalived和HAproxy,如果其中一个节点故障,虚拟IP地址(即浮动IP地址)将自动与另一个节点关联,使集群仍然可以正常运行,从而实现高可用。
2.BaaS层高可用性。BaaS层的高可用性包括,BaaS后端服务的高可用性和BaaS后端数据的持久化高可用存储。BaaS后端服务的高可用性通过Deployment的replicas来实现后端服务的多实例化部署来避免单点故障。BaaS后端数据的持久化存储通过KubernetesCRD技术来将后端数据存储到ETCD高可用分部署存储。
如上公式,deployment Controller 通过不断的watch集群中pod的增加、删除、修改时间,当所控制的BaaS后端pod数量与预期不符时,便会通过调和函数(reconcile)来改变BaaS后端服务pod的数量以符合预期,从而防止单点故障。
3. 区块链层高可用性。区块链层高可用性包括:区块链节点出现后故障自动恢复和链上链下数据协同减少链上空间占用。
故障后自动恢复:当区块链网络中有peer或者orderer节点因为故障宕机后,Consortium Controller会监控到整个Kubernetes集群中指定区块链网络节点数量不符合预期,便会按照之前的启动模板拉起故障节点,在这个拉起过程中需要用到该节点之前的配置信息和证书文件,以及链上的账本数据。这就需要考虑如何将链上账本数据、区块链关键配置等重要内容持久化保存到可靠的外部存储而不是容器内部,这样便可以在服务器节点全部发生故障,或者***重启、备份恢复等场合依然可以实现对***和数据的恢复。本文通过GlusterFS文件***将容器内的账本数据、区块链关键配置持久化存储到Kubernetes集群所有Node的/data目录,从而保障了故障后的自动恢复。
链上链下数据协同:在区块链***中,每个节点都存储有一份完整的区块链数据,利用多备份高冗余的数据存储方式可以有效保障区块链数据的安全。然而,节点的存储能力是有限的,随着***的常年运行,这种采用高冗余存储方式的区块链***所需的存储容量是巨大的,未来容易遭遇存储瓶颈问题。本实施例提出了一种基于ETCD和MinIO的链上链下数据协同方案,将链下数据存储地址和数据哈希运算后的哈希值存储到链上,将AES加密后的对象数据存储到链下MinIO对象存储中,将AES加密后的非对象数据存储到链下ETCD分布式存储之中,同时本实施例使用Vault安全密钥存储服务存储每一个用户的AES加密密钥,ETCD存储访问策略。该方案缓解了区块链的存储压力,有效提高了区块链的高可用性。
链上链下数据协同分数据存储和数据访问两部分,参考图5,数据存储流程的详细步骤如下:
(1)服务端在数据所有者Owner注册时通过AES密钥生成算法为每一个数据所有者生成全局唯一的密钥,并将用户密钥存储到Vault私密存储中。
(2)服务端使用数据所有者加密密钥key,调用AES加密算法对用户数据data进行加密,得到加密数据encData:
(3)用户数据data若为对象类型如文件、音频、视频等,则服务端调用MinIO存储算法将加密数据存储到MinIO,并调用ETCD存储算法将MinIO存储地址addrMinio存储到ETCD分布式键值对存储中,并记录用于访问该ETCD存储数据的ETCD存储地址addrEtcd。
(4)服务端调用SHA256算法对数据data进行哈希运算,得到数据哈希值hashdata。
(5)以随机生成的UUID字符串keyUuid为key,以步骤(3)生成的addrEtcd和步骤(4)生成的hashData为value进行数据打包发送给区块链网络,区块链网络收到数据存储请求,调用存储智能合约进行key-value存储上链。
(6)设置访问策略accessDataPolicy:以keyUuid为key,以允许访问该数据的用户集合allowedConsumers为value存储到ETCD。
(7)返回keyUuid给数据提供方。
参考图6,数据访问流程的详细步骤如下:
(1)数据访问者Consumer使用链上数据存储键keyUuid发出访问数据data的请求,服务端通过keyUuid在ETCD中获取该数据的访问策略,判断是否允许该访问者Consumer访问,若允许则服务端从Vault中获取数据上传者的AES密钥key,若不允许访问则流程结束。
(2)数据访问者Consumer发出访问数据data的请求,服务端收到数据访问者的请求后,向区块链网络请求该文件的哈希值hashfile和用于访问ETCD存储数据的addrEtcd。服务端以keyUuid为参数向区块链网络发起智能合约查询请求,获取数据的ETCD存储地址addrEtcd和哈希数据hashData。
(3)服务端从链上获取ETCD存储地址addrEtcd后,调用ETCD查询算法获取addrEtcd中存储的数据,若该数据为MinIO地址类型,则说明数据data为对象类型,需向MinIO存储发送获取请求获取MinIO存储的加密数据encData。
若ETCD中通过addrEtcd获取的数据不是MinIO类型,则说明数据data为非对象类型,ETCD中获取的即为加密数据encData。
(4)使用步骤(1)中获取的AES密钥key调用AES解密算法对加密数据encData进行解密运算,得到解密数据decData。
(5)服务端调用SHA256算法对decData进行哈希运算,得到哈希值dechash。如果dechash和步骤(2)中的hashData相同则访问成功,且说明文件在整个过程没有发生篡改,数据的机密性和完整性得到了保证,访问成功。
本实施例利用Kubernetes与GlusterFS技术相结合,提供了一种区块链多联盟敏捷部署方法,大大提高了区块链网络的部署效率,减少了运维复杂度,并可以针对用户需求来进行自定义快速安装部署,多个区块链网络之间通过namespace技术进行隔离,互不影响,极大地提高了BaaS服务安装部署区块链网络的效率,安装的同时还兼顾了区块链网络的高可用性。
此外,本实施例通过HAproxy技术和Keepalived技术的结合实现了高可用Kubernetes集群的部署,保障了区块链底层容器平台的高可用性;通过Kubernetes CRD技术实现ETCD高可用存储BaaS后台业务数据,从而实现BaaS层业务数据高可用持久化存储,通过KubernetesDeployment技术实现BaaS后端服务持续稳定不宕机提供服务;通过GlusterFS分布式文件***实现链上账本数据、区块链关键配置持久化存储,从而保障区块链节点故障、重启后的正常运行,通过基于ETCD与MinIO的链上链下数据协同方案来节省链上存储空间实现用户区块链高可用性。在Kubernetes层、BaaS层、区块链层三个层次,通过多种高可用手段共同协作实现了整个***的高可用性,提供了一个稳定高效运行的BaaS服务及多个用户区块链网络。
综上所述,所述区块链BaaS和多联盟部署方法、数据存储访问方法及装置,将Kubernetes集群架构作为BaaS服务运行的底座,基于Kubernetes自动化容器编排和管理的能力,对区块链节点及服务进行自动调度、备份、故障恢复和容错处理,确保区块链网络的稳定运行和高可用性。Kubernetes基于用于对自定义资源的创建请求,自动调整容器数量实现快速弹性的扩容和缩容,适应需求变化,动态地调整容器的资源配额,根据实际使用情况分配CPU、内存等资源,确保区块链网络的资源利用率最大化。同时,结合GlusterFS提供了种高度扩展的布式存储***,对链上账本数据、区块链关键配置和用户数据实现持久化存储,基于ETCD与MinIO的链上链下数据协同方案来节省链上存储空间实现用户区块链高可用性。
进一步的,采用Keepalived方案和HAproxy方案对故障节点进行恢复,保障了Kubernetes的高可用性。
进一步,BaaS服务通过控制器的实例化部署,避免了节点故障,BaaS后端数据通过Kubernetes CRD技术来将后端数据存储到ETCD,实现高可用分步存储。
与上述方法相应地,本发明还提供了一种装置/***,该装置/***包括计算机设备,所述计算机设备包括处理器和存储器,所述存储器中存储有计算机指令,所述处理器用于执行所述存储器中存储的计算机指令,当所述计算机指令被处理器执行时该装置/***实现如前所述方法的步骤。
本发明实施例还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时以实现前述边缘计算服务器部署方法的步骤。该计算机可读存储介质可以是有形存储介质,诸如随机存储器(RAM)、内存、只读存储器(ROM)、电可编程ROM、电可擦除可编程ROM、寄存器、软盘、硬盘、可移动存储盘、CD-ROM、或技术领域内所公知的任意其它形式的存储介质。
本领域普通技术人员应该可以明白,结合本文中所公开的实施方式描述的各示例性的组成部分、***和方法,能够以硬件、软件或者二者的结合来实现。具体究竟以硬件还是软件方式来执行,取决于技术方案的特定应用和设计约束条件。专业技术人员可以对每个特定的应用来使用不同方法来实现所描述的功能,但是这种实现不应认为超出本发明的范围。当以硬件方式实现时,其可以例如是电子电路、专用集成电路(ASIC)、适当的固件、插件、功能卡等等。当以软件方式实现时,本发明的元素是被用于执行所需任务的程序或者代码段。程序或者代码段可以存储在机器可读介质中,或者通过载波中携带的数据信号在传输介质或者通信链路上传送。
需要明确的是,本发明并不局限于上文所描述并在图中示出的特定配置和处理。为了简明起见,这里省略了对已知方法的详细描述。在上述实施例中,描述和示出了若干具体的步骤作为示例。但是,本发明的方法过程并不限于所描述和示出的具体步骤,本领域的技术人员可以在领会本发明的精神后,作出各种改变、修改和添加,或者改变步骤之间的顺序。
本发明中,针对一个实施方式描述和/或例示的特征,可以在一个或更多个其它实施方式中以相同方式或以类似方式使用,和/或与其他实施方式的特征相结合或代替其他实施方式的特征。
以上所述仅为本发明的优选实施例,并不用于限制本发明,对于本领域的技术人员来说,本发明实施例可以有各种更改和变化。凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

Claims (10)

1.一种区块链BaaS和多联盟部署方法,其特征在于,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构包括由多个存储节点、多个工作节点以及多个控制节点,所述工作节点和所述控制节点基于Kubernetes管理运行,该方法包括以下步骤:
在各存储节点上部署GlusterFS分布式文件***,将多个复制卷部署至每个工作节点服务器的数据文件目录,并将各复制卷通过创建持久卷挂载到持久卷申请中;
在各工作节点中通过Deployment控制器在所述Kubernetes中启动BaaS服务,并将所述持久卷申请挂载到BaaS服务容器的数据文件目录;
将所述BaaS服务的容器镜像拷贝至所述BaaS服务容器的数据文件目录上;
所述BaaS服务向所述控制节点中的kube-apiserver发送自定义资源的创建请求,由控制器组件监听kube-apiserver中的创建请求,并请求调用创建所述自定义资源所需的核心功能函数;
由所述控制节点中的BaaS apiserver执行所述自定义资源所需的核心功能函数,根据所述自定义资源的创建请求生成用于启动的配置文件、组织成员关系文件、身份证书文件、密钥文件和节点通道配置文件;
在各工作节点中调用Fabric-go-SDK创建联盟链的SDK配置文件;
在各控制节点中调用kube-apiserver和kube-schuduler,根据所述SDK配置文件创建区块链节点容器,所述区块链节点容器包括peer节点容器和orderer节点容器;
将所述持久卷申请挂载至各peer节点容器和各orderer节点容器;将用户在所述联盟链上的数据通过文件挂在持久化存储至所述GlusterFS分布式文件***;将所述BaaS服务的后端数据存储至ETCD数据库;
在各工作节点中调用Fabric-go-SDK创建各联盟链的多个通道,并将各节点容器加入相应通道;
在各工作节点中调用Fabric-go-SDK部署各联盟链的链码;
其中,各工作节点中所述BaaS服务容器对用户数据中对象类型的数据加密后存储到链下MinIO存储中,对用户数据中非对象类型的数据加密后存储到链下ETCD分布式存储中,并将链下数据存储地址和数据哈希运算后的哈希值存储到链上。
2.根据权利要求1所述的区块链BaaS和多联盟部署方法,其特征在于,所述容器镜像包括:
用于生成配置信息的shell脚本;
和,用于生成组织成员信息及其身份信息、密钥文件的工具;
和,用于生成节点、通道配置的文件;
和,用于生成创世区块的工具。
3.根据权利要求1所述的区块链BaaS和多联盟部署方法,其特征在于,根据所述自定义资源的创建请求生成用于启动的配置文件、组织关系及身份证书文件、密钥文件和节点通道配置文件,包括:
将用户定义的链参数作为脚本执行参数生成用于启动的配置文件,所述链参数包括:链名、orderer节点数量、peer节点数量和初始组织名;
使用cryptogen二进制工具生成组织成员关系文件、身份证书文件和密钥文件;
使用configtxgen二进制工具生成所述节点通道配置文件,所述节点通道配置文件包括***通道的创世区块、通道的交易文件、组织锚节点交易文件。
4.根据权利要求1所述的区块链BaaS和多联盟部署方法,其特征在于,所述工作节点以及所述控制节点通过装载Keepalived方案和HAproxy方案进行调度。
5.根据权利要求1所述的区块链BaaS和多联盟部署方法,其特征在于,在各工作节点中调用Fabric-go-SDK部署各联盟链的链码中,采用Docker作为链码启动容器运行接口。
6.一种基于区块链的数据存储方法,其特征在于,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构基于权利要求1至5任意一项所述区块链BaaS和多联盟部署方法进行部署,所述方法包括:
调用所述用户数据所有者的AES密钥,并对所述用户数据进行AES加密;
若所述用户数据为对象类型,则调用MinIO存储算法将加密后的所述用户数据存储至链下MinIO存储中,并调用ETCD存储算法将对应的MinIO存储地址存储到ETCD分布式键值对存储中,并记录对应的ETCD存储地址;若所述用户数据为非对象类型,则调用所述ETCD存储算法将加密后的所述用户数据存储至ETCD分布式键值对存储中,并记录对应的ETCD存储地址;
调用预设哈希算法对所述用户数据进行哈希运算得到数据哈希值;
随机生成UUID字符串作为键,将所述ETCD存储地址和所述数据哈希值作为值,打包发送至相应的区块链进行存储。
7.根据权利要求6所述的基于区块链的数据存储方法,其特征在于,调用所述用户数据所有者的AES密钥之前,还包括:在所述用户数据所有者注册时,通过AES密钥生成算法为其生成全局唯一的AES密钥,并存储到Vault私密存储中。
8.根据权利要求7所述的基于区块链的数据存储方法,其特征在于,所述方法还包括:
将所述UUID字符串作为键,将允许访问所述用户数据的用户集合作为值存储至ETCD分布式键值对存储中,返回所述UUID字符串至所述用户数据的所有者。
9.一种基于区块链的数据访问方法,其特征在于,所述方法在预设区块链网络架构上执行,所述预设区块链网络架构基于权利要求1至5任意一项所述区块链BaaS和多联盟部署方法进行部署,所述方法用于访问如权利要求7所述基于区块链的数据存储方法存储的用户数据,所述方法包括:
接收数据访问者待访问数据的UUID字符串发出访问数据请求,通过所述UUID字符串查询ETCD分布式键值对存储中允许访问所述待访问数据的用户集合,判断所述数据访问者是否具有访问权限,若具有访问权限,则从Vault私密存储中获取所述待访问数据的数据上传者的AES密钥;
根据所述UUID字符串向区块链请求所述待访问数据的ETCD存储地址和第一数据哈希值;
调用ETCD查询算法获取所述ETCD存储地址对应的第一数据,若所述第一数据为MinIO地址类型,则根据该数据查询MinIO存储得到加密后的待访问数据;否则直接将所述第一数据认定为加密后的待访问数据;
采用所述AES密钥对加密后的待访问数据进行解密,得到所述待访问数据;
调用预设哈希算法对所述待访问数据进行哈希运算得到第二数据哈希值,若所述第一数据哈希值与所述第二数据哈希值相同则访问成功。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,该程序被处理器执行时实现如权利要求1至6中任一项所述方法的步骤。
CN202310403984.7A 2023-04-17 2023-04-17 区块链BaaS和多联盟部署方法、数据存储访问方法及装置 Active CN116107704B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310403984.7A CN116107704B (zh) 2023-04-17 2023-04-17 区块链BaaS和多联盟部署方法、数据存储访问方法及装置

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310403984.7A CN116107704B (zh) 2023-04-17 2023-04-17 区块链BaaS和多联盟部署方法、数据存储访问方法及装置

Publications (2)

Publication Number Publication Date
CN116107704A true CN116107704A (zh) 2023-05-12
CN116107704B CN116107704B (zh) 2023-06-06

Family

ID=86264172

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310403984.7A Active CN116107704B (zh) 2023-04-17 2023-04-17 区块链BaaS和多联盟部署方法、数据存储访问方法及装置

Country Status (1)

Country Link
CN (1) CN116107704B (zh)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041264A (zh) * 2023-10-08 2023-11-10 广东省科技基础条件平台中心 一种基于数据处理的区块链资源管理***及方法

Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108965468A (zh) * 2018-08-16 2018-12-07 北京京东尚科信息技术有限公司 区块链网络服务平台及其链码安装方法、存储介质
CN109194506A (zh) * 2018-08-16 2019-01-11 北京京东尚科信息技术有限公司 区块链网络部署方法、平台及计算机存储介质
CN114445010A (zh) * 2022-01-26 2022-05-06 电子科技大学 一种基于区块链的多式联运***和方法
US20220222079A1 (en) * 2021-01-13 2022-07-14 Salesforce.Com, Inc. Change management of services deployed on datacenters configured in cloud platforms
CN115115451A (zh) * 2022-02-28 2022-09-27 复旦大学 一种面向大宗商品交易监管的区块链服务管理***

Patent Citations (5)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN108965468A (zh) * 2018-08-16 2018-12-07 北京京东尚科信息技术有限公司 区块链网络服务平台及其链码安装方法、存储介质
CN109194506A (zh) * 2018-08-16 2019-01-11 北京京东尚科信息技术有限公司 区块链网络部署方法、平台及计算机存储介质
US20220222079A1 (en) * 2021-01-13 2022-07-14 Salesforce.Com, Inc. Change management of services deployed on datacenters configured in cloud platforms
CN114445010A (zh) * 2022-01-26 2022-05-06 电子科技大学 一种基于区块链的多式联运***和方法
CN115115451A (zh) * 2022-02-28 2022-09-27 复旦大学 一种面向大宗商品交易监管的区块链服务管理***

Non-Patent Citations (2)

* Cited by examiner, † Cited by third party
Title
余昌发;程学林;杨小虎;: "基于Kubernetes的分布式TensorFlow平台的设计与实现", 计算机科学, no. 2, pages 537 - 541 *
阿里云云栖号: "在Kubernetes上运行区块链服务(BaaS)", pages 1 - 14, Retrieved from the Internet <URL:https://zhuanlan.zhihu.com/p/52759330> *

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN117041264A (zh) * 2023-10-08 2023-11-10 广东省科技基础条件平台中心 一种基于数据处理的区块链资源管理***及方法
CN117041264B (zh) * 2023-10-08 2024-01-12 广东省科技基础条件平台中心 一种基于数据处理的区块链资源管理***及方法

Also Published As

Publication number Publication date
CN116107704B (zh) 2023-06-06

Similar Documents

Publication Publication Date Title
US11907254B2 (en) Provisioning and managing replicated data instances
CN109542611B (zh) 数据库即服务***、数据库调度方法、设备及存储介质
US8850429B2 (en) Load balancing in multi-server virtual workplace environments
US11159439B1 (en) Agent message delivery fairness
US10990605B2 (en) Instance data replication
KR100491541B1 (ko) 네트웍 환경에서의 컨텐츠 동기화 시스템 및 동기화 방법
JP6182265B2 (ja) コンピューティングセッションの管理
US20200004570A1 (en) Dynamically scaled hyperconverged system
JP2018537741A (ja) デジタルコンテンツアイテムのマルチプレミスホスティングのためのピアツーピア同期プロトコル
US11740936B2 (en) Method and system for managing cloud resources
US20170063986A1 (en) Target-driven tenant identity synchronization
KR20140025503A (ko) 서비스의 2차 위치에서의 작업의 재생 기법
CN116107704B (zh) 区块链BaaS和多联盟部署方法、数据存储访问方法及装置
CN115604120B (zh) 一种多云集群资源共享方法、装置、设备及存储介质
US11190549B2 (en) Method and devices for enabling portability of data and client between cloud service providers
CN114942845A (zh) 跨集群资源调度方法及装置
CN112035062B (zh) 云计算的本地存储的迁移方法、计算机设备及存储介质
CN117614825A (zh) 智能化选煤厂的云原生平台
CN115344273B (zh) 一种基于货架***来运行应用软件的方法及***
CN114930313A (zh) 用于管理区块链节点的***和方法
EP3387533B1 (en) Disaster recovery of cloud resources
Bhavsar et al. Kubernetes Cluster Disaster Recovery Using AWS
JP7450726B2 (ja) ハイブリッドクラウド非同期データ同期
Kenny et al. Kubernetes for HPC Administration.
CN113535476A (zh) 一种云资产快速恢复的方法及装置

Legal Events

Date Code Title Description
PB01 Publication
PB01 Publication
SE01 Entry into force of request for substantive examination
SE01 Entry into force of request for substantive examination
GR01 Patent grant
GR01 Patent grant