欢迎光临
我们一直在努力

FBaaS:功能区块链即服务

FBaaS:功能区块链即服务

陈欢1,2(B)和张良杰1,2

1国家企业互联网服务支持软件工程技术研究中心,深圳,中国

2金蝶研究院,金蝶国际软件集团,深圳,中国

huan chen@kingdee.com

摘要

无服务器架构在最近三年中越来越受欢迎。函数即服务(FaaS) 是无服务器架构的一种具体实现,具有多项优势和特性。本文提出一种基于FaaS模型的新型服务模式,称为FBaaS——功能区块链即服务。与区块链即服务(BaaS)相比,FBaaS在顶层业务逻辑上实现了更轻量级的实现,带来了诸多优势:首先,它可以提高区块链的运行速度;其次,由于其分层架构,底层FaaS网络在高鲁棒性和高可用性方面的持续进步可自然地被FBaaS所继承;第三,FaaS对逻辑实现了更高层次的抽象,更加简洁。此外,本文提出了一种在联盟区块链业务逻辑实现中的抽象方法,可进一步提升性能。本文还详细展开一个具体示例网络——为2018年服务计算大会联合会(SCF)设计的会议区块链网络。

1 引言

无服务器架构[6,16]在过去的三年中越来越受欢迎。函数即服务(FaaS) [10,12]是无服务器架构的一种具体实现,具有多项优势和特点。本文提出一种基于FaaS模型的新服务模式,命名为FBaaS——功能区块链即服务。与传统的区块链即服务(BaaS)相比,[8,9,11,13], FBaaS在顶层业务逻辑上实现了更轻量的实现,带来了诸多直接优势。首先,它可以提高区块链的运行速度。其次,由于其分层架构,底层FaaS网络在高鲁棒性和高可用性方面的优势可自然地应用于FBaaS。第三,FaaS对逻辑实现了更高层次的抽象,更加简洁[12]。

本文提出了一种在联盟区块链业务逻辑实现中的抽象方法,可进一步提升整体性能。本文还展开介绍了一个具体示例网络的细节,即服务于服务计算大会联合会(SCF)的会议区块链网络 c© Springer International Publishing AG,隶属于Springer Nature 2018 S. Chen等(编):ICBC 2018,LNCS 10974,第243–250页,2018年。 https://doi.org/10.1007/978‐3‐319‐94478‐4_17

244 陈H. 和 张L.‐J.

2018[14]。未来,所提出的技术可以部分应用于公有链,例如 [13]。

本文组织如下:第2节介绍无服务器架构的概念。第3节简要介绍区块链即服务。第4节阐述所提出的功能区块链即服务的构想。第5节总结全文并概述一些未来研究方向。

2 无服务器

DevOps(开发与运维)和无服务器架构在过去三年中越来越受欢迎[6,10,12]。

特别是,微服务架构显著推动了DevOps的发展。微服务架构有助于将单体应用拆分为多个更小的服务,这些服务是自管理的,可由小型开发团队轻松开发和维护。无服务器架构[6,12]相比微服务架构对服务进行了更细粒度的划分,为应用程序带来了四重优势(图1):

示意图0

– 它降低了成本。无服务器产生的功能模块比单体应用和微服务更小,从而减少了大型功能模块的开销,因为无服务器仅需要按需资源并据此进行分配。

– 它加快了执行速度。由于服务被划分为更小的函数,只有在运行时需要的函数才会被调用。那些不必要的函数可以完全停止,而不是占用资源的待机状态。

– 它提供了更好的弹性。较小的区块意味着更短的启动时间,从而对调用者提供更快的响应。此外,由于开销更少,资源分配可以更加灵活和高效。

– 它支持事件驱动应用。无服务器实际上是一种IPO(输入‐处理‐输出)模型,适用于事件驱动应用,例如物联网(Internet of Things)应用。无服务器架构中的功能模块仅在真正需要时才会被触发,在调用者不再请求其能力时会立即被销毁。换句话说,该函数的生命周期比单体架构和微服务架构更短。因此,事件驱动应用可以利用更轻量级的框架(如无服务器)实现更加敏捷的执行。

3 区块链即服务

区块链即服务(BaaS) [8,9,11,13]提供对区块链的操作以及在区块链网络上构建、部署和运行业务逻辑的服务。知名的解决方案包括但不限于 IBM区块链 [8], Azure上的以太坊区块链 [13],微软Azure区块链 [11]和 R3 Corda [9]。

尽管许多供应商提供了不同的区块链即服务,但现有解决方案主要采用传统的三层云架构:基础设施即服务、平台即服务和软件即服务。本文提出了一种功能区块链即服务,与传统的区块链即服务方案存在显著差异。

4 功能区块链即服务

本节详细提出了功能区块链即服务(FBaaS),通过展开其架构、实现过程以及一个具体的示例网络来说明。图2展示了详细的FBaaS架构。

4.1 架构

功能区块链即服务(FBaaS)的底层架构部分遵循CCOA的理念 [17],但不包含企业服务总线(ESB) [15]。更具体地说,该系统是根据大数据开放架构( BDOA)实现的 [7]。在实现FBaaS时已开发和部署的BDOA层级包括:

– 第一层:基础设施层,实现了FBaaS的第一层和第二层。该系统构建于亚马逊云科技之上,未使用任何亚马逊Lambda函数,仅使用了弹性计算云( EC2)等常规组件。换句话说,我们并未使用无服务器框架,也未使用亚马逊云科技提供的函数即服务。

– 第二层:组件层,实现了FBaaS的第三层。基本功能在此层中实现。例如,身份验证函数和授权函数在此开发,以便在上层频繁复用。

246 陈H.和张L.‐J.

– 第三层:服务层,由功能区块链即服务的第四层和第五层实现。该层实现了区块链即服务的大部分功能。我们将在后文展开详细说明。– 第四层:业务逻辑层,在图2中由应用程序和大规模服务实现。通过将第三层的功能进行分组,我们能够轻松地建立区块链以及复杂的大型服务。

4.2 服务层中的功能

功能1:对象存储。

对象存储具有强原子性,这意味着整个对象存储过程要么成功,要么失败,在存储过程中不存在中间或不确定状态。同时,上传的对象必须完整,不允许断点续传上传。这种对象存储方案的强一致性为用户带来了极大的便利。用户无需担心分布式区块链网络中存在的最终一致性问题(图3)。

功能:新交易。

该函数将交易内容添加到一个新区块中,然后进行加密和挖矿。对交易内容没有限制,但为了存储考虑,最好设定一个限制。此外,最好对内容进行抽象,我们将在本文后续部分展开详细说明。

功能:挖矿。

挖矿一个区块实际上是一个简单的枚举和哈希过程。为了加速挖矿过程,可以应用CUDA [2]英伟达GPU。在函数即服务(FaaS)的背景下,直接应用较为困难。我们引入了消息系统Kafka[3]以极快的方式分发哈希需求,替代了传统方法。通常情况下,性能相比CPU哈希方法可高达40倍。

功能:链信息。

区块链信息可以通过此功能获取。典型数据包括区块数量和区块链长度。需要强调的是,此处的长度表示在众多尚未被挖矿的链中,唯一已认证的链。

Function: 解决.

解决函数通过运行一致性算法来尝试解决冲突,旨在确保所有节点都拥有唯一正确链。

功能:添加节点。

使用传统解决方案添加节点较为复杂。然而,在函数即服务 (FaaS)的帮助下,我们可以轻松地向现有网络中添加节点。首先,我们将当前状态保存到持久化存储中。然后,通过容器即服务(CaaS)的复制功能复制一个节点。接着,通过调整副本节点的配置文件来完成新节点的配置。最后,从持久化存储中恢复状态,并继续执行网络。添加节点的性能取决于现有网络的规模。网络操作(例如复制节点)本身耗时不多,有时甚至可以忽略不计。大部分时间消耗在系统状态的存储和恢复这一子过程中。

4.3 实现

函数服务器。

该系统使用Python和Go语言实现。Python用于顶层框架以及函数内部的逻辑,这些逻辑会被频繁且同时调用。而函数服务器和容器即服务层则使用Go语言实现。我们在OpenFaaS[12]的模块API网关和函数看门狗基础上进行开发,如图4所示,其中基于角色的访问控制(RBAC)服务器用于函数的认证和授权。将RBAC实现在函数服务器层会增加系统的复杂性并降低性能,因为每次函数调用过程都需要进行检查。然而,这种方案允许系统管理员限制来自内部系统的异常违规调用。一个典型的场景是短消息服务。如果RBAC仅存在于API网关中,一旦函数被黑客攻击,消息发送将无法控制。相反,在函数服务器中实现RBAC可以仅阻止其应用服务器包含被攻击函数的用户,而允许具有相同功能但不同授权的其他函数继续运行。

更细粒度的函数即服务。

微服务提供的功能比单体系统更少。从另一个角度看,它为所提供的服务提供了更高层次的抽象。将微服务分解为多个函数是类似的情况,其中函数即服务通常被视为具有终极层次的抽象。在函数即服务的基础上,我们能否实现一个具有更细粒度的新层级?确切的答案是将函数即服务的某些组件冻结为常量。形式上,我们可以将函数 λ 定义为微服务 μ 某一部分的抽象。

λ = abs(μ(α, δ)) (1)

α表示变量部分,其中 δ表示常量部分。当我们冻结 δ时,函数变得更简单,其抽象程度可以进一步提高。在实现过程中,我们可以引入一些预定义的函数来模拟这些常量部分。在图5中,函数即服务以灰色显示,并通过引入 IFTTT [4]和 Zapier [5]对其进行进一步分解。这种分解方式产生了更细的粒度,并提高了函数即服务的抽象程度。

通过逻辑抽象提升性能。

在规则简单的情况下,如果向节点提交复杂的交易,并且在高并发情况下,联盟区块链(如超级账本Fabric)的速度会非常差,这将影响交易记录速度和区块生成速度。如果我们通过分配复杂规则来降低交易提交频率,则可以在一定程度上有效提高交易速度。例如,我们可以改变生成区块的时间段以及一个区块内容的大小。形式上,我们通过逻辑抽象方法将业务系统中的复杂事务抽象为简单的逻辑,从而提升系统性能。这种性能提升本质上是通过减少记录内容的数量实现的,此时的内容已是实际内容的逻辑抽象。

需要注意的是,真实状态空间与抽象状态空间首先满足伽罗瓦连接:

η(θ(abs)) = abs

θ(η(real)) ⊃ real

(2)

这意味着,如果我们从抽象空间中提取一个元素,将其具体化,然后再对具体版本进行抽象,结果等于原始元素。另一方面,如果从实际空间中选择一个元素并抽象出特定的抽象版本,最终结果是原始的超集。具体的抽象过程如图6所示。原始逻辑若不进行抽象,则按照原始逻辑(虚线)流程执行。实线表示新流程。首先,对输入逻辑进行形式化评审,以确保其形式正确,符合交易应有的特征。然后进行抽象规则匹配。抽象规则主要包括以下类型:

– 仅记录该事物的最后一个操作对象;

– 仅记录操作的第一个对象;

– 仅记录奇数(或偶数)原子级操作对象;

– 仅记录创建和删除操作;

– 仅记录关键数据对象的更新操作;

– 仅记录整体系统服务接口API的暴露接口所影响的汇聚型数据对象和/或路径;

– 仅记录服务接口API中发生变化的关键数据对象,即通过记忆状态来记录变更。

4.4 一个示例网络

图7展示了一个会议区块链的示例网络。该区块链网络由五个节点组成,每个节点都记录从“征稿”(“CFP”)到“上线”的整个过程。一旦某个阶段的记录(例如“展示”过程中一篇论文的展示)被标记,该记录将被发布到所有节点。在整个网络中,所有记录最终将达到最终一致性。我们将所提出的方法应用于该网络,对网络进行了基准测试,发现其性能满足会议区块链的需求,其中原始要求的每秒事务处理量通常小于10。

函数即服务架构减少了开销,使开发者能够专注于业务逻辑。例如在会议区块链中,通过使用函数即服务,我们能够集中于六个业务逻辑阶段,即“征稿”、“评审”、“录用”、“终稿”、“展示”和“上线”,而无需关心底层复杂组件。通常在传统区块链即服务解决方案中,实际瓶颈往往出现在网络传输上,我们必须考虑网络本身。通过利用功能区块链即服务,随着底层 FBaaS依赖组件的进步,性能可以自然得到提升。

5 结论

本文首次提出了基于无服务器架构的功能区块链即服务(FBaaS)区块链服务模型。我们还提出了一种抽象方法,以降低在区块链网络上开发业务逻辑的复杂性,并提升其性能。所提出的FBaaS不仅适用于联盟区块链,也可部分适用于公有区块链。在公有区块链上应用时可能出现的问题源于存储过大,这可以通过进一步改进的抽象技术来优化。因此,未来的研究方向包括为公有区块链开发功能区块链即服务(FBaaS),以及进一步改进抽象技术。

赞(0)
未经允许不得转载:171主机测评 » FBaaS:功能区块链即服务
分享到: 更多 (0)

评论 抢沙发

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址