1. 引言
随着计算机技术的迅速发展和web服务的广泛运用,web服务结构的治理是当前计算机系统和应用的热点问题。它的主要任务是对web服务的注册、服务退出、服务检索以及服务注册点中心化等问题进行有效治理。目前主要的有两种治理方案,分别是集中式服务治理和分布式服务治理。集中式和分布式的主要问题是服务注册中心是中心化,服务数据共享性差,web服务结构整合性差。区块链技术具有去中心化,数据共享等特性 [1]。它也逐渐被应用在多个领域去解决信任,数据共享的问题。它的出现为我们首次提供一种区块链相关技术与web服务治理结合新的B-WSM结构模型的思路,同时也对去中心化应用程序和服务(DApps即Decentralized Applications)的进一步研究具有一定的理论和实践意义。下文从一些研究者当前在集中式和分布式的服务治理领域的探索、区块链在去中心化领域的应用以及区块链与服务结合理论的提出进行介绍。
传统的用于web服务的公共UDDI [2] 注册中心项目是由IBM、微软和Ariba在2000年提出的,但是这个项目并不是设计者们所希望的,即使有数百家公司加入了这个项目,设计者们在6年后关闭了这个项目。除了公共UDDI之外,研究人员分别在集中式服务注册中心和分布式服务注册中心探索了几种服务治理模型。在集中服务注册中心领域,有研究人员关注如何对服务进行分类 [3] [4] [5] 、发现 [6] [7] [8] [9],有研究人员关注web服务推荐算法选择 [10] [11] [12] 和服务编排 [13]。我们还结合服务检索模型 [14] [15] 、web服务安全治理方法 [16] [17] [18] 对相关文献进行了分类和探索,也发现有研究者用算法改进web服务聚类 [19] [20] [21]。
在分布式服务注册中心领域,有研究人员分析了分布式模型中的数据分区 [22] 、web服务的分布式数据库缓存 [23] 、web服务推荐 [24] 和web服务组合 [25]。
集中式服务注册中心模型或分布式服务注册中心模型的问题在于,服务提供者必须将其服务注册到由一些公司或组织控制的UDDI,而这些公司或组织的可信度已经影响了web服务的发展。但是像政府和一些大公司这样的组织也做出了改变,因为有时他们不愿意他们的服务器被少数公司或组织控制。随着区块链技术的出现,传统的web服务治理面临着一些新的挑战。比特币 [26] 中的区块链只是区块链的一种形式,区块链是比特币如何运作的核心。比特币的系统的成功验证了基于区块链理论设计去中心化web服务治理系统是可能的。区块链技术和分布式账本正在引起广泛关注,并引发不同行业的多个项目。区块链技术有望克服这些关键方面,代表着“从信任人到信任数学的转变”,因为不再需要人为干预。BaaS在云计算中或边缘计算环境中提供区块链服务,如灵活性市场 [27] 、系统监控 [28] 、智能合约分析 [29] [30] 、安全保险 [31] 、电子投票 [32] 、电子商务 [33] 以及物联网 [34] [35]。
区块链是一种创新的分布式账本技术,它吸引了研究者广泛的兴趣,用于构建下一代应用程序,以解决服务中缺乏信任的问题 [36]。在web服务领域,近年来围绕区块链发表了各种论文,如Jie调查了学术界和工业界对区块链即服务(BaaS)的研究成果,在他的论文中总结了BaaS的六个挑战,作为进一步的研究方向 [37]。Lu提出了统一的区块链作为服务平台(uBaaS),以支持基于区块链的应用程序的设计和部署 [36]。Liu试图重新思考一种新的数据治理方式,它建立在基于区块链的去中心化服务计算范式之上 [38]。
区块链技术具有去中心化,数据共享等特性。区块链的去中心化主要体现在全节点是对等的,无信任的。它的数据共享体现在全节点之间点对点通信具有共识性,从而保持全节点之间记录着同样的数据。
本文基于区块链理论和相关技术,首次提出并设计了一种名为B-WSM的新型的Web服务治理模型。在B-WSM模型中根据区块链全节点中的结构特征本文首次提出一个B-node定义,用它作为SOA模型结构中的服务注册中心。B-node具有区块链全节点的无信任和数据共享的相关特性。B-node之间进行点对点通信,通信的隐私数据采用SHA256进行哈希加密。区块链系统的部署和使用比较复杂以及磁盘空间的占用达到数百GB,复杂的部署和空间占用较大不利于只需求使用web服务的用户和人群。而本文设计的模型属于针对web服务领域的人群,从而具有针对性和高效性。与比特币的区块链类似,在该模型中,每台计算机注册后都可以是一个名为B-node的节点,每个B-node存储所有的节点结构信息和一个服务列表,其中包含注册到B-WSM的所有服务信息。服务提供者可以将服务注册到任何B-node,一旦成功注册到B-node的服务或web服务被调用,加密的哈希消息将发送到模型中的其它B-node。模型中的所有B-node都存储相同的信息,它们一起实现服务治理。总之,该模型可以在不需要可信中介的情况下实现服务治理。
本研究的整体结构分为五章,其中包括本章引言。第二章介绍了B-WSM的结构、关键技术、设计细节、模型工作机制以及模型功能。第三章介绍了基于B-WSM模型设计的原型系统。最后,结论部分对研究结果进行了简要的总结和展望。
2. B-WSM模型
2.1. 模型的整体架构
如图1所示,本文提出B-WSM模型是首次SOA模型结构体系和区块链中的相关技术(分布式账本技术、节点结构和点对点网络通信结构,点对点即P2P)融合而成。模型中用的关键技术有SOA模型结构、区块链的分布式账本、全节点结构、P2P网络通信、SHA256哈希加密算法等技术。
SOA模型结构中体现的是服务注册中心、服务提供者以服务请求者三者间的关系,服务提供者到服务注册中心发布web服务,服务请求者到注册中心查找需要的服务,从而与发布该服务的提供者形成绑定关系。SOA的服务注册中心由B-WSM模型中可以自由加入的B-node节点形成的环状网络结构组成。
区块链全节点中包含数据层、共识层以及网络层。其中数据层是节点存储数据的,网络层是节点间同来进行P2P通信的,通信传递的信息数据采取SHA256加密算法,保证数据的安全性。共识层是通过节点间进行P2P通信而保持数据的一致性。这三层结构构成一个全节点通信,存储数据以及保持数据一致性的基本功能特点。区块链的分布式账本技术体现在每当有新的交易记录时,区块链的全节点都会记录下来,这样每个全节点都保存有同样的账本记录。本文提出的B-node结构是由类似于全节点中的数据层、网络层以及共识层组成,B-node之间采用P2P通信,通信的隐私数据采用SHA256加密,而本文提出的B-WSM模型的分布式账本技术体现在每当有新的web服务加入时,每个B-node都会记录该服务的信息数据。
B-WSM模型由若干个B-node和三个角色组成,包括服务请求者、服务提供者和类似SOA模型的模型。B-WSM模型的一个典型例子如图1所示,模型中的所有B-node都以环形结构连接,每个B-node都与其他B-node相似。服务请求者可以将其服务注册到任何B-node,服务提供者可以通过任何B-node获取模型中的所有服务列表。此外,用户创建后可以申请成为B-node,并向该模型提交请求。

Figure 1. The model forms the schematic diagram of the structure
图1. 模型形成结构原理图
本文提出的是针对于web服务治理问题的模型,下文要从发布或者删除web服务的节点(即B-node)的功能,服务请提供者和请求者的功能作用、以及模型的工作机制、B-node的加入和退出、服务的发布与删除以及请求者根据需求获取web服务等方面对模型功能进行进一步介绍。模型的这些主要功能体现了模型的去中心化以及B-node间的数据共享。每个B-node都是对等的,都存有一样的web服务数据结构,它们之间也是无信任的,这些体现了模型的去中心化。服务提供者到其中任意一个B-node发布服务信息,服务信息通过通信传递给其它B-node体现了模型的数据共享性。
2.2. B-Node的功能
除了创始节点外,每个B-node都具有相同的结构和存储类似的信息,创始节点是指模型中的第一个节点。表1、表2以及表3显示了每个B-node存储的基本信息,其中表1显示了模型中的B-node的数据信息,表2显示了服务提供者账号信息,表3显示了模型中的发布的Web服务数据信息。

Table 1. Node information table (NodeInfo)
表1. 节点信息表(NodeInfo)

Table 2. Service provider account information table (ServiceUserInfos)
表2. 服务提供者账户信息表(ServiceUserInfos)

Table 3. Web service information table (WebServiceSInfo)
表3. Web服务信息表(WebServiceSInfo)
· 全面了解B-node的功能,其主要特点包括:
1) 允许用户作为B-node加入模型或退出模型。
2) 服务提供商可以通过B-node发布或删除服务。
3) 对于注册到B-node的业务,B-node可作为性能测试和监控工具。
4) 允许服务请求者通过模型中的任意B-node搜索和调用web服务。
5) B-node之间以P2P方式在链上交互。
2.3. 服务提供者和服务请求者的角色
在B-WSM模型中,服务提供者可以申请成为B-node,然后其他服务提供者可以向该B-node注册服务。服务提供者可以将web服务发布到模型中的任何B-node。另外,服务提供者可以通过B-node搜索所有web服务。服务请求者可以通过任何B-node搜索所有web服务。
2.4. B-WSM模型工作机制
如前所述,有三种角色,包括模型中的服务提供者、服务请求者和B-WSM模型。该模型的主要功能包括用户作为B-node申请加入或退出模型,服务提供者从B-node发布或删除web服务,服务请求者通过B-node搜索和调用web服务。接下来,我们将介绍模型的主要功能。
2.5. 作为B-node加入
假设一些公司或组织希望作为B-node加入模型,他们需要下载程序并运行它。然后,他们可以找到一个显示现有B-node的B-node列表,他们可以选择一个B-node并提交请求。甚至我们也支持个人的请求,但在一开始,我们希望新的B-node能够长时间在线,所以我们希望更多的公司或组织加入这个模式。当有新的B-node加入模型时,会向模型中的其他B-node发送消息。
假设一个名为用户A的组织公司申请加入B-WSM模型作为B-node。首先,用户A需要下载程序并运行,然后用户A可以开始申请成为B-node。该过程如图2所示。

Figure 2. The process of User A applies to join the B-WSM model
图2. 用户A申请加入B-WSM模型流程图
如图2所示,用户A将获得B-node列表,并选择其中任何一个发送加入请求。B-node收到加入请求后,将执行命名为P的进程。每个进程P由以下3个步骤组成:
1) 用户A选择的B-node将新节点信息添加到本地数据库,该B-node将成为用户A的父节点。
2) 向用户A返回成功消息,并返回B-node存储的内容。
3) B-node向模型中的其他B-node发送消息。
2.6. B-Node从模型中退出
假设一家名为用户B的公司申请退出B-WSM模型,流程如图3所示。
如图3所示,用户B可以选择模型中的任意B-node应用退出模型。选中的B-node收到退出请求后,将执行进程Q。流程Q由以下3个步骤组成:
1) 选中的B-node首先从本地数据库中删除节点信息。
2) 用户B上注册的web服务将从本地数据库中删除。
3) 选中的B-node将消息发送给模型中的所有B-node,其他B-node将执行相同的过程。

Figure 3. The process of B-node quit from the B-WSM model
图3. 用户B退出B-WSM模型流程图
2.7. 发布或删除Web服务
我们假设用户C希望在模型中发布web服务。该过程如图4所示。

Figure 4. The process of publish a web service
图4. 发布web服务流程图
如图4所示,用户C需要先注册到模型中,然后用户C可以选择B-WSM模型中的任意B-node并开始发布web服务。该过程包括填写服务信息,发送发布请求。B-node接收到发布请求,一个名为M的进程将启动。过程M包括以下2个步骤:
1) B-node将web服务信息存储到本地数据库中,并返回成功消息给用户C。
2) B-node将服务信息发送给其他B-node,模型中的所有B-node都会收到该消息并更新服务列表。
如果服务提供者希望删除已发布在B-WSM模型中的web服务,则流程如图5所示。

Figure 5. The process of service provider deletes a web service
图5. 服务提供者删除web服务流程图
如图5所示,用户D首先选择一个B-node启动流程,然后通过所选B-node登录模型,选择需要删除的服务,输入验证码启动删除流程,验证码为服务注册时模型创建的哈希值。如果该信息有效,则将启动名为N的进程。该过程由2个步骤组成:
1) B-node从本地数据库中删除服务信息。
2) B-node向模型中的其他B-node发送消息,收到消息的B-node将删除被删除服务的信息。
2.8. 服务请求者调用web服务
当服务请求者需要搜索或调用服务时,流程如图6所示。

Figure 6. The process of service requester calls a service
图6. 服务请求者调用web服务流程图
如图6所示,服务请求者可以搜索由任何B-node注册到模型中的所有web服务。
3. 原型系统
为了验证该模型,我们创建了一个基于Java语言和WebSocket的原型系统,该原型系统已作为开源项目发布在Github (https://github.com/WangMissYou/B-WSM)。我们提供规范,包括项目的运行环境、操作说明和源代码。在我们的测试环境中,有四台计算机,我们命名为A、B、C、D,每台计算机作为B-node。首先,我们在计算机A上运行程序,A是起源B-node,就像比特币区块链中的创始节点一样。创始B-node创建成功后,其他用户可以申请成为B-node。然后计算机B、C、D下载程序并运行。假设第二台计算机B申请加入B-WSM模型,计算机只能申请加入创世纪B-node,因此创始节点将是计算机B的父节点(左节点),那么计算机C和D可以申请加入B-WSM模式。当计算机D申请加入模型时,模型中有3个B-node,因此计算机D可以应用到任意一个B-node上。图7显示了系统计算机D申请加入模型界面。

Figure 7. Computer D applies to join the model
图7. 计算机D申请加入模型图
如图7所示,node1为创世B-node,IP地址为192.168.1.3。现在接口中有3个B-node,计算机D可以申请任意一个加入模型。在图7中,Ip列表示各B-node的Ip地址,Port列表示Socket的通信端口,Nodename列表示各B-node的名称,Create time列表示各B-node的创建时间。计算机D可以通过单击界面中的“Join as a node”按钮之一来申请加入模型。
计算机D加入模型后,B-WSM模型中有4个B-node。通常,为了保持B-WSM模型正常运行,至少需要三个B-node保持在线状态。如果服务提供者想要发布web服务,他们可以选择一个B-node来注册他们的服务。图8显示了服务提供者用于发布服务的界面。

Figure 8. The interface of a service provider can apply to publish a service
图8. 服务提供者申请发布服务界面图
在图8中,NodeInfos是列出模型中所有B-node的节点列表,AllServicesInfos显示模型中所有的web服务,MyService显示该帐户注册的所有web服务。如果服务提供者选择一个B-node发布web服务,将出现图9所示的界面。

Figure 9. The interface of publish a web service
图9. 发布服务界面图
如图9所示,为了发布web服务,服务提供者将提供web服务的详细信息。ServiceName是web服务的名称,ServiceType是web服务的类型,MethodName是web服务的方法,MethodExplain是web服务的介绍,InputAndOutputDescription是web服务输入和输出的指令,ServiceCode是系统在接口出现时创建的哈希值,ServiceCode是该模型中web服务的唯一标识。我们使用的网络服务来自 http://www.webxml.com.cn/zh_cn/index.aspx网站。图10显示了服务请求者如何根据项目搜索web服务的界面。

Figure 10. The interface of a service requestor searches a web service
图10. 服务请求者获取web服务界面图
我们设计的原型项目验证了B-WSM模型的可行性,我们将原型系统作为开源项目发布,以便其他研究人员可以通过下载源代码继续我们的工作,我们提供了操作说明。
4. 结论和展望
区块链技术被设想为开启一个去中心化应用程序和服务时代,而不需要可信的中介。然而,web服务被视为区块链概念的主要用户。本文首次提出了一种基于无信任机制的web服务治理模型B-WSM。本文首次对B-WSM模型的提出以及原型系统的开发验证了区块链相关技术与web服务结合。在B-WSM模型中,我们将web服务治理与区块链理论相结合,首次形成一种具有无信任、服务数据共享好以及服务治理整合性好等特点的结构模型,不但验证了区块链技术与web服务结合解决服务治理的问题 ,也为区块链与web服务结合的研究提供了一种新思路。该模型是首次提出的区块链相关技术与web服务治理结合的模型结构,目前在区块链技术与web服务治理结构模型方面还没有更多的成果报道,在做成果对比分析方面具有一定的局限性,这也是本文研究的不足之处。未来随着类似于本文结构模型更多的提出,我们会进行相关的成果对比分析。我们希望该模型的提出为区块链与web服务结合的研究者提供更多的思考和启发,能够推动该研究领域的进一步发展和深入。最后,我们要继续推进这个项目,希望未来能有超过1000个B-node加入B-WSM模型。
基金项目
作者声明本文不存在利益冲突。本研究成果是由辽宁省教育基金资助[grant no. LJKZ0595]以及辽宁省教育厅2020年度科学研项目资助(辽宁省青年科技创新人才培养与激励机制研究) [lnqn202035]。
NOTES
*通讯作者。