王晶,张海明*,温亮明,马卓然
1.中国科学院计算机网络信息中心,北京 100083
2.中国科学院大学,北京 100049
随着科研数据的海量增长,科研工作者对计算机处理数据能力的要求不断提高,但是现有的线性增长的集中式云计算能力无法匹配爆炸式增长的设备及数据规模[1],当某些云服务提供商的业务量处于高峰值时期时,可能会发生超越单个科研机构云计算平台能力的计算需求的情况,因此需要构筑科研云联邦,进行跨科研机构的资源协同与共享。但科研机构分属于不同法人单位,传统的中心式计量系统设计由云联邦中心全权负责,将所有的计量数据写入到云联邦中心数据库中,难以保证数据在云联邦中心和各个科研机构的一致性,且会造成云联邦中心运营成本高、运行效率低[2];若云联邦中心受到恶意攻击,会导致计量隐私数据泄露,计量系统崩溃的后果。
目前针对云联邦的研究主要是面向商业的云联邦的架构和动态资源调度方面的研究[3-5],而对科研云联邦的计量问题研究较少。本文在调研分析构建面向科研用户的云联邦平台的意义与特点的基础上,结合联盟链技术的应用场景,设计了符合科研云联邦的计量系统,保证联邦参与者之间计量互信,确保资源计量准确无误的同时保护用户数据隐私,帮助各科研机构管理员检查可用资源,提高管理员工作效率。
数据密集型的科研工作产生了越来越多的科学数据[6],科研人员需要处理的数据量不断增大,所属研究机构的私有云资源可能不足以支撑对海量数据的存储管理;如果单纯地购入大量服务器,在课题项目集中使用资源过后可能造成资源闲置。闲置的资源不仅无法带来经济效益,还需要耗费维护成本,如电源费用、冷却费用、占地租赁费用等[7]。因此向其他云提供商租借资源成为备选方案之一,云联邦思想由此诞生。云联邦可以基于统一架构通过云联邦认证和用户映射将私有云和公有云结成联邦体系,实现统一调度和管理[8],其本质在于联合不同组织的云资源以解决单个云中心资源不足问题,既满足了云用户的资源需求,又提高了云提供商的资源利用率。云联邦的主要优势在于安全性高、可扩展性强和成本低廉。
科研云联邦是在各个高校、研究所和科研机构之间构筑的IaaS 联邦,可以通过统一接口将各个研究机构、项目组层级的资源相互连通,实现这些隔离资源的互访共享,为科研人员提供超出研究所实际资源极限的服务,在用户使用负载较低的情况下,将资源提供给云联邦中的其他用户使用。所有操作通过云联邦管理中心进行管理、调度和分配,可以最大限度地提升闲置资源的利用效率,也降低了云联邦成员获取资源的成本。科研云联邦系统制定了较高的信息安全标准,各个研究所或项目组达到安全要求后方可注册加入成为云联邦成员,各成员既可以在自身资源闲置时出租资源,也可以在自身资源无法满足用户需求时向云联邦其他成员租借资源,实现资源的信息化共享,也提升了科研机构信息化服务的安全水平。
专研云服务计费的Zuora 公司提出,如果云服务供应商无法解决计量、定价和收费等新商业模式的核心问题,云服务将永远无法释放它的全部潜力[9]。各商业云平台针对不同的云服务提供了相应的计量与计费策略,如针对云服务器ECS(Elastic Compute Service)服务设计了计算资源(vCPU 和内存)、镜像、块存储、公网带宽等多个计量项[10],针对对象存储OSS(Object Storage Service)服务设计了存储费用、流量费用、数据处理费用、对象标签费用等多个单独计量计费项[11],这些方法可以自动对系统内部及不同系统间的资源进行调整,也能够及时向用户反馈服务费用使用情况。在计费方式上,各商业云平台通常采用按量计费和包年包月计费两种方式,按量计费属于后付费模式,按照使用量×单价计费;包年包月属于预付费模式,按照购买时长×单价计费。
尽管云服务具有可计量的特点,但由于科研云联邦的各个数据中心分属于不同法人单位,资源所有者希望云联邦系统能够对资源的使用情况进行监测或计量,并且能够保证计量数据隐私和数据安全,因此资源的计量子系统在科研云联邦中尤为重要,后续计费功能也能够释放云联邦的商业价值,在提升资源利用率的同时为云联邦的参与者提供经济效益。
目前,联盟链已在电子商务、金融监管、智慧城市、创新医疗等多个领域广泛应用。在智慧城市领域,张利华[13]等人设计了基于联盟链的去中心化双链存储模型,能够安全、可靠地存储铁路沿线监测数据;在创新医疗领域,薛腾飞[14]等人针对医疗数据需要长期保存、详细管理、严格审查的特殊性,提出了基于区块链的医疗数据存储和共享方案;刘加梦[15]等人针对频发的中草药造假现象,提出基于区块链的中草药质量安全管理模型,增加对中草药产品的把控能力;在电子商务领域,郭仪[16]等人利用区块链技术设计电力数据资产交易平台,使电力数据能够跨部门、跨机构有偿共享,有效解决了电力数据孤岛问题;在商品溯源领域,王可可[17]等人提出农产品追溯解决方案,商品供应方将商品流转过程加密上链,保证商品流通安全,实现商品流通全过程可追溯;在金融监管领域,章庆[18]等人分析我国债券市场现状并结合Hyperchain 平台完成概念验证原型,具有前瞻意义;在智能管控领域,吴振铨[19]等人提出利用联盟链实现智能电网数据的安全有效存储与共享,改进了原有电网存储数据易被恶意篡改的问题。可见,针对各类信息尤其是敏感数据的生成、交换、存储等问题,可以凭借区块链的P2P 特性确保其隐私性、鲁棒性和单点故障容错性,既解决了业务参与者之间的信任、隐私及安全问题,又提升了行业交易的效率[20]。
科研云联邦计量系统的设计目标有三:一是向各数据中心管理员提供该中心资源的使用计量和租借情况报表,方便各中心查看自己的收益情况,帮助管理员检查可用资源;二是生成年度、月度结算账单,对接网络支付工具完成在线结算,为前端提供相应的标准API 访问接口,方便云联邦成员根据需求选择服务;三是通过去中心化、集体维护、公开透明的联盟链技术保证计量环节的安全性与可靠性,确保资源计量准确无误的同时保护用户数据隐私。基于以上设计目标,本文认为在设计科研云联邦计量系统时,应遵循以下原则:(1)简单性原则:细化资源计量因子的同时应保留服务自身特征,使计量因子的设计尽可能简单;(2)透明性原则:资源的计量因子应列明重点资源,其他资源对用户透明;(3)易理解原则:计量指标应该对用户负责,易于用户理解和接受。
遵循设计原则,本文引入联盟链技术设计了去中心化的科研云联邦的计量系统,如图1所示。
图1中,各个科研机构既是云资源的提供者(即可以出租自身闲置资源),又是云资源的使用者(即可以向其他科研机构申请资源)。如科研机构A 既可以将自己富余的科研资源提交到联盟链中供科研机构B、C、D 使用,也可在资源短缺时向联盟链提出申请获得科研机构B、C 的富余资源。科研机构D 在文中被假设为无法为自身单位科研人员提供私有云服务的机构,科研人员只能通过个人电脑办公,接入科研云联邦后,便可以租借其他机构资源。在此过程中科研机构A、B、C、D 的所有租借交易行为信息以及资源状态信息都将被记录到区块链中。
图1 科研云联邦计量系统模式图Fig.1 Model diagram of scientific research cloud federation metering system
为了进一步说明计量系统的实现机理,本文基于IBM 和Digital Asset 提供的开源区块链框架Hyperledger Fabric[21]设计了科研云联邦计量系统逻辑框架,如图2所示。
图2中,资源提供方和资源使用方主要通过上层的API、Events 和SDKs 与Hyperledger Fabric 框架交互完成数据上链和数据查询,联盟链功能主要包括身份验证、账本管理和智能合约三个模块。
分析贵州民族学生英语学习中所发/ɝ/的共振峰,并将其与英语母语者的实验数据进行对比,以从中发现民族语或者地方口音是否会对英语学习者的/ɝ/产生影响,并分析其原因,以期找到有效提升学习者英语语音状况的策略。
图2 科研云联邦计量系统逻辑框架Fig.2 Logical framework of scientific research cloud federation metering system
身份验证模块是保证云联邦安全管理、保存用户隐私数据的前提,公钥基础设施(Public Key Infrastructure,PKI)提供身份证明,由成员服务提供者(Member Service Provider,MSP)完成身份验证管理操作。只有通过身份验证的各科研机构管理员才被允许加入到计量系统的联盟链中,进行操作和签名。
账本管理模块可以使被授权的云联邦成员(各科研机构管理员)通过区块号、区块哈希值或交易号查询自己单位的账本数据。为了保护各科研机构的交易隐私,账本管理拟采用联盟链多通道形式,如图3所示,每一条副链(应用通道)对应着一个科研机构的资源交易历史,这些记录方便管理员对本单位资源使用和外借情况进行管理,方便后续业务对每个科研机构的收支情况进行统计汇总;每一条副链只由该单位管理员以及与该单位发生交易的科研机构管理员访问,而未与其进行交易的科研机构不能访问该副链。每条副链的账本不会传递到其他副链。多链的设计实现联盟链中计量业务的隔离,保证数据安全和数据隐私。当各科研机构管理员通过身份验证后,云联邦计量系统可以为各科研机构提供本中心资源使用和收益情况。
图3 区块链多通道示意图Fig.3 Blockchain multi-channel diagram
智能合约模块是在云联邦系统嵌入智能合约自动化完成资源计量。由于本系统采用按使用量计量的模式,因此在云服务租借完成后,由云服务提供方根据计量因子和服务使用量来确认计量结果,折算成金额后反馈给云服务使用方,双方达成共识后提交到Fabric 网络中,智能合约自动执行交易流程,实现结算,并将交易记录同步写入到新的区块中。
图4展示了联盟链中的区块结构示意图,单个区块包含区块头和区块体两部分。区块头中含有链接到上一个数据区块的加密哈希值,能够追踪并查验数据,并防止计量数据被恶意篡改。每个区块体都可能存储有多条计量交易信息,经过Merkle 树的哈希过程生成最终的哈希值并记录到区块头的Merkle-Root 中。
图4 区块结构示意图Fig.4 Block structure diagram
科研云联邦主要提供云主机和对象存储两种服务,服务内容主要涉及实例、数据传输量、块存储使用量、IP 地址等方面,因此可以确定服务计量因子应该包含CPU、内存、硬盘、网络流量、带宽等,以小时为粒度进行分段计量。计量系统将资源使用量统一折算成费用,方便后续科研云联邦资源使用的结算和计费服务的进行。当然,两种服务方式的费用计量策略有所差异。
云主机服务使用户能够高效、便捷地使用服务器,实现云资源的即开即用。不同于需要长期稳定运行的商业用途的云主机,科研计算用云主机往往对单个虚拟机的CPU 和内存资源需求更大,通常使用时间不超过一周,用户在使用过程中会较频繁地申请、释放资源。云主机的实例一般包括计算资源(CPU 和内存)、镜像、块存储等,通常根据其计算资源、系统块存储和网络类别收取价格。计算资源按照实例规格的形式提供,包括CPU 和内存,通常按照实例规格收取费用;存储服务包括系统盘和数据盘,通常按照容量与使用时长计量;当选择公网IP 时则按照固定带宽计量,每小时整点结算。云主机服务的费用计量公式如下:
对象存储服务是科研云联邦提供的海量、安全、低成本和高持久的云存储服务。对象存储服务的存储费用将按照用户实际使用量进行计量,每小时结算一次。流量费用仅计量外网流出流量,即数据通过互联网从对象存储传输到客户端产生的流量。对象存储服务的费用计量公式如下:
科研云联邦计量系统将用户使用过的资源汇总为一个交易,在区块创建时写入区块体的交易提案中。本文以JSON 文件的形式描述了记录在联盟链中的资源信息,具体示例展示如下:
资源信息描述示例中,"ResourceProvider"代表资源提供方,"ProviderID"代表提供方的服务器ID,"ResourceUser"代表资源使用方,"UserID"代表用户ID,"CloudService"代表云主机和对象存储两种服务,"TotalCost"代表本交易折算费用,"UsageTime"为使用时间,"CPU"、"RAM"、"NetworkBandwidth"、"HardDisk" 代表云主机中的四个计量因子,"StorageCapacity"、"OutFlow"代表对象存储中的两个计量因子。
科研云联邦计量系统包含有Client、CA、Orderer、Peer 四种节点,节点是联盟链的通信主体,多个不同类型的节点可以运行在同一物理服务器上。用户通过Client 节点进行云服务的租借申请;CA 节点负责联盟链成员的身份验证;Orderer 节点将接收到的交易进行排序生成区块,并广播给Peer 节点。Peer 节点又可分为Endorser(背书节点)、Committer(记账节点)、Leader(领导节点)和Anchor(锚节点)四种:Endorser(背书节点)负责检查交易提案,按照自身规则检查交易的逻辑,执行智能合约条款;Committer(记账节点)接收到交易请求后进行验证背书,执行交易操作,并将交易结果共享到联盟链账本上,维护联盟链和账本;Leader(领导节点)连接到排序服务,将接收的区块转发给组织内其他节点;Anchor(锚节点)用于不同科研机构之间的通信。
在交易过程中Client(客户端)通过SDK 应用程序与联盟链进行交互,如图5所示。
图5 计量交易流程图Fig.5 Flow chart of metering transaction
计量交易的具体流程如下:(1)Client(客户端)通过CA(证书节点)获取合法的身份加入到应用通道中;(2)Client(客户端)构造交易请求(Proposal)提交给Endorser(背书节点);(3)Endorser(背书节点)对交易进行验证和模拟执行后,将结果反馈给Client(客户端),此时并未更新账本;(4)Client(客户端)收到来自云联邦内部足够多的背书支持后将交易发送给Orderer(排序节点),同时提交Endorser(背书节点)更新交易状态;(5)Orderer(排序节点)对网络中的交易进行全局排序,并将排序后的交易构造成区块,然后广播给网络中的Leader(领导节点);(6)Leader(领导节点)将接收的区块同步转发给组织内部其他节点;(7)Committer(记账节点)维护区块链和账本,检查交易的合法性和背书后将结果写入账本,将新区块上链。
由于科研云联邦计量系统属于分布式系统,因此需要共识机制来保障节点以相同的顺序保存账本,保证账本的一致性。本系统基于Hyperledger Fabric框架并利用Raft 算法[22]作为系统的共识算法,Raft算法是一种崩溃容错排序算法,遵循“领导者和跟随者”模型,在每一个组织中选举一个领导节点(Leader)负责决策,其余跟随者复制其决策。通过动态选举产生Leader(领导节点),可以避免出现故障无法分发区块的问题。
Raft 算法易于安装部署和管理,提高了系统交易的高可用性。相较于Kafka 算法需要所有节点在同一组织控制下的同一集群中服务,使用Raft 算法能够使各个组织有自己的排序节点,共同组成排序服务,保证了计量系统的去中心化。相较于PBFT(实用拜占庭)算法可以支持容错故障节点和作恶节点,Raft 算法仅可以承受包括领导节点(Leader)在内的节点故障,只要系统中剩余节点超过半数就能够支持容错故障节点,但是运行效率远高于PBFT 算法。在科研云联邦计量系统中,由于身份验证模块可以保证联盟链中组织的安全性和可靠性,因此选择Raft 算法能够保证系统的交易性能,算法伪代码如下所示。
科研云联邦计量系统的共识过程可以分为交易背书、交易排序和交易验证三个阶段。交易由Client(客户端)提交到自己组织的Orderer(排序节点)后:(1)通过自动路由到达当前排序服务中的Leader(领导节点);(2)Leader(领导节点)检查交易验证的配置序列号是否与当前配置序列号一致,如果不一致则执行验证,验证失败后驳回交易,通过验证后则创建新区块;(3)Leader(领导节点)将新区块应用于本地的Raft 有限状态机;(4)有限状态机尝试将区块复制到其他Orderer(排序节点);(5)区块被分别写入Committer(记账节点)的本地账本,共识过程完成。
科研云联邦计量系统主要应用了联盟链技术,具有去中心化特征,能够保障计量数据的安全性、真实性和可靠性,且容易达成共识,可以有效防止单节点攻击和恶意篡改数据。
(1)安全性:系统能够保证计量数据的安全,联盟链中的计量交易数据默认不公开,仅在身份验证过后向联盟内部成员公开;系统采用多通道架构,仅为与通道有关的科研机构提供计量数据,最大程度保证了用户的隐私和数据安全。系统能够防止单点攻击。传统的中心式计量系统设计由云联邦中心全权负责,将所有的计量数据写入到云联邦中心数据库中,难以保证数据在云联邦中心和各个科研机构的一致性,且会造成云联邦中心运营成本高、运行效率低;若云联邦中心受到恶意攻击,会导致计量隐私数据泄露,计量系统崩溃的后果。而基于联盟链的科研云联邦计量系统具有部分去中心化特征,每个科研机构都保存有一份完整可信的数据链,在某个节点出现故障后也可通过人工干预快速恢复。
(2)准确性:系统能够防止数据被恶意篡改。系统采用联盟链技术,该链只属于联盟(即科研云联邦)内部成员所有,外界人员未经认证无法加入。在计量交易数据上链后,每个数据区块都依赖于前一个数据区块的哈希值进行存储,要想恶意篡改某个数据块必须修改该数据区块之后的所有数据区块信息,此过程需要耗费巨大算力,从经济角度而言不具备攻击可行性。此外,由于联盟链可控性较强,即使出现计量误差,也会被联盟内大部分节点识别并及时修改,相较于完全不能修改的公有链而言更为灵活便捷,保证了计量数据的准确性。系统能够保证数据的真实可靠。在一次云服务调用完成后,由云服务提供方向链上传输附有双方数字签名的数据,上链过程中的其他节点可以据此保证数据来源的真实可靠性。
(3)高效性:系统运行效率高。Suporn Pongnumkul 等人在文章[23]中从性能方面对比评估了Hyperledger Fabric 和以太坊两个区块链平台,在事务平均执行时间、平均延迟和平均吞吐量方面,Hyperledger Fabric 的性能均优于以太坊。如图6所示,当交易数量达到10 000 时,以太坊的延迟时间达到了Hyperledger Fabric 的14.22 倍。Julian Dreyer[24]等人对比测试了应用Hyperledger Fabric 不同版本对每秒传入交易数量分别为10、100 和1000 时的系统执行时间,Fabric v2.0 版本执行时间较之前版本有明显下降,对于系统的整体性能有显著提升。而表1[25]展示了五种常见共识算法的性能对比,可以看出Raft 算法执行速度快,且吞吐量远高于其他算法,能够保证系统的交易性能。本系统利用Hyperledger Fabric 框架和Raft 共识算法能够保证云联邦计量系统的运行高效性。
图6 以太坊与Hyperledger Fabric 平均延迟时间对比Fig.6 Comparison of average latency between Ethereum and Hyperledger Fabric
表1 共识算法对比[25]Table 1 Comparison of consensus algorithm[25]
针对科研用户短期内对云服务资源的大量需求以及云联邦资源计量的现实困境,设计了基于联盟链的科研云联邦计量系统,将作为科研云联邦系统的重要组成部分上线运行。本系统基于Hyperledger Fabric 框架,利用联盟链技术进行资源计量,保证用户数据的安全与隐私,解决了传统集中式计量运营成本高、效率低、易受恶意攻击、数据存储不安全等问题,既可帮助云联邦管理员检查可用资源,又可为管理员提供收益报表,提高管理员工作效率,具有一定的实用价值。后续研究将选择真实应用场景进行测试,并逐步细化结算和计费功能模块的设计。
利益冲突声明
所有作者声明不存在利益冲突关系。