Page 102 - 《软件学报》2021年第11期
P. 102
3428 Journal of Software 软件学报 Vol.32, No.11, November 2021
• 高可用性:集群层面的高可用性策略可以应用于区块链领域,增加区块链层面的高可用性.
Fig.3 Framework for architecting smart contracts using microservices
图 3 智能合约微服务化框架
值得注意的是,智能合约微服务化需要额外考虑区块链网络与微服务架构在数据处理响应时间方面的区
别.链上新数据的更新要经过多个节点同时需要消耗大量的计算资源,限制了区块链网络每秒处理事务的能力,
影响了区块链网络的响应时间.比特币平均每秒执行 7 笔交易,以太坊平均每秒执行 15 个事务,虽然优化的
HyperledgerFabric 可以达到每秒执行 20 000 笔交易的吞吐 [31] ,但这样的表现与微服务架构每秒处理百万事务
相比不可接受.所以,对于大流量数据与实时性要求比较高的数据并不建议使用链上代码处理.
(2) 通信方式
现阶段,智能合约在业务上的是高内聚的,智能合约之间调用的情况并不多见,更常见的是解耦后的智能合
约与下层网络节点之间的通信调用.为了实现智能合约的可扩展以及高利用率,就要在智能合约与下层网络之
间建立良好的通信机制.智能合约容器与网络节点彼此有效通信是智能合约部署运行成功与扩展的基础,有效
的通信方式才能保证智能合约微服务化的运行正确性.
如表 2 所示,目前主要有两种方式实现微服务间的通信:一种是使用远程过程调用(remote procedure call,简
称 RPC)的框架,另一种是通过 HTTP 协议定义的表述性状态传递(representational state transfer,简称 REST) [32] .
RPC 在性能上表现出色,区块链网络中通常使用 RPC 作为 P2P 节点通信.而 REST 虽然在性能上不如 RPC,但是
REST 接口在理解、测试、调用方面更加简单方便.对区块链网络之外提供智能合约服务时,建议使用 REST 风