一种跨节点的服务发现方法及装置与流程

文档序号:33124303发布日期:2023-02-01 04:39阅读:29来源:国知局
一种跨节点的服务发现方法及装置与流程

1.本说明书多个实施例涉及区块链技术领域,尤其涉及一种跨节点的服务发现方法及装置。


背景技术:

2.dapp(distributed application,分布式应用),也称之为去中心化应用,是一种区别于传统的中心化应用的应用形态。传统的中心化应用,通常可以将部署的中心化服务器作为服务后台。与中心化应用不同的是,去中心化应用可以不再部署中心化服务作为服务后台,而是将区块链上部署的智能合约作为服务后台。例如,一个典型的分布式应用,通常的由作为服务后台的智能合约和位于前端的用户ui两部分构成。
3.在实际应用中,区块链网络中的各个区块链节点的运营方,通常可以结合自身的业务需求,分别在各自的区块链节点上来部署去中心化应用。随着区块链节点的不断增多,各个区块链节点上部署的分布式应用所能提供的接口服务的种类也会越来越多,这势必会导致在对分布在各个区块链节点上的分布式应用所提供的接口服务进行统一管理时越来越困难。


技术实现要素:

4.根据本说明书多个实施例的第一方面,提出一种跨节点的服务发现方法,区块链网络中的至少部分区块链节点上分别部署了分布式应用;所述方法应用于与所述区块链网络中的第一区块链节点上部署的第一分布式应用对应的第一应用中间件;所述方法包括:
5.获取与所述第一分布式应用包含的第一接口服务相关的服务信息;
6.将所述服务信息发布至所述区块链进行存储,以由所述区块链网络中的与所述第一区块链节点之间进行了网络隔离的第二区块链节点上部署的第二分布式应用对应的第二应用中间件,获取所述区块链上存储的所述第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用。
7.根据本说明书多个实施例的第二方面,还提出一种跨节点的服务调用方法,区块链网络中的至少部分区块链节点上分别部署了分布式应用;所述方法应用于与所述区块链网络中的第二区块链节点上部署的第二分布式应用对应的第二应用中间件;所述方法包括:
8.获取所述区块链中存储的与所述区块链网络中的第一区块链节点上部署的第一分布式应用包含的第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用;其中,所述第一区块链节点与所述第二区块链节点之间进行了网络隔离;
9.接收所述第二分布式应用基于所述服务信息发起的针对所述第一接口服务的服务调用请求;其中,所述服务信息包括所述第一区块链节点对应的地址信息;
10.响应于所述服务调用请求,基于所述地址信息将所述服务调用请求转发至所述第一区块链节点,以使所述第一区块链节点进一步将所述服务调用请求转发至与所述第一分
布式应用对应的第一应用中间件,由所述第一应用中间件响应于所述服务调用请求,发起针对所述第一接口服务的服务调用。
11.根据本说明书多个实施例的第三方面,还提出一种跨节点的服务发现装置,区块链网络中的至少部分区块链节点上分别部署了分布式应用;所述装置应用于与所述区块链网络中的第一区块链节点上部署的第一分布式应用对应的第一应用中间件;所述装置包括:
12.第一获取模块,获取与所述第一分布式应用包含的第一接口服务相关的服务信息;
13.发布模块,将所述服务信息发布至所述区块链进行存储,以由所述区块链网络中的与所述第一区块链节点之间进行了网络隔离的第二区块链节点上部署的第二分布式应用对应的第二应用中间件,获取所述区块链上存储的所述第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用。
14.根据本说明书多个实施例的第四方面,还提出一种跨节点的服务调用装置,区块链网络中的至少部分区块链节点上分别部署了分布式应用;所述装置应用于与所述区块链网络中的第二区块链节点上部署的第二分布式应用对应的第二应用中间件;所述装置包括:
15.第二获取模块,获取所述区块链中存储的与所述区块链网络中的第一区块链节点上部署的第一分布式应用包含的第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用;其中,所述第一区块链节点与所述第二区块链节点之间进行了网络隔离;
16.接收模块,接收所述第二分布式应用基于所述服务信息发起的针对所述第一接口服务的服务调用请求;其中,所述服务信息包括所述第一区块链节点对应的地址信息;
17.转发模块,响应于所述服务调用请求,基于所述地址信息将所述服务调用请求转发至所述第一区块链节点,以使所述第一区块链节点进一步将所述服务调用请求转发至与所述第一分布式应用对应的第一应用中间件,由所述第一应用中间件响应于所述服务调用请求,发起针对所述第一接口服务的服务调用。
18.在本说明书以上的实施方式中,可以利用区块链的存储能力,突破区块链网络中的各个区块链节点之间的网络隔离,使得区块链网络中的区块链节点上部署的分布式应用,可以通过应用中间件来发现和调用部署在其他区块链节点上部署的分布式应用所提供的接口服务,从而可以实现对分布在各个区块链节点上的分布式应用所提供的接口服务进行统一的管理。
附图说明
19.图1是本说明书一示例性实施例示出的一种跨节点的服务发现方法的流程图。
20.图2是本说明书根据一示例性实施例示出的第二分布式应用跨节点发现第一分布式应用所发布的第一接口服务的多方交互图。
21.图3是本说明书示出的一种联盟链网络的网络架构图。
22.图4是本说明书根据一示例性实施例示出的另一种联盟链网络的网络架构图。
23.图5是本说明书根据一示例性实施例示出的一种跨节点的服务调用方法的流程
图。
24.图6是本说明书根据一示例性实施例示出的第二分布式应用跨节点发现调用第一分布式应用所发布的第一接口服务的多方交互图。
25.图7是一示例性实施例提供的一种电子设备的示意结构图。
26.图8是本说明书根据一示例性实施例示出的一种跨节点的服务发现装置的框图。
27.图9是本说明书根据一示例性实施例示出的一种跨节点的服务调用装置的框图。
具体实施方式
28.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
29.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
30.在实际应用中,区块链网络中的各个区块链节点的运营方,通常可以结合自身的业务需求,分别在各自的区块链节点上来部署去中心化应用。
31.然而,由于在区块链节点上部署的分布式应用,通常都是去中心化的,天然的缺乏中心化的服务管理机制;而且,各个区块链节点之间能还会进行网络隔离;因此,这就可能会对部署在各个区块链节点上的分布式应用所提供的接口服务的统一管理造成困难。
32.例如,以上述区块链为联盟链为例,一方面,由于并不存在中心化的服务中心对所有分布式应用所提供的接口服务进行统一管理,导致联盟链中的联盟成员,通常无法感知整个联盟链中的接口服务,最终导致某一个联盟成员通过在其对应的节点上部署的分布式应用发布了某一项新的接口服务之后,其它联盟成员无法感知到该接口服务。
33.另一方面,由于联盟链网络中的各个联盟成员之间,具有天然的网络隔离性,各个联盟成员的网络之间是隔离的,因此分散部署在各个联盟成员对应的节点中的分布式应用所发布的接口服务,通常无法被其他联盟成员对应的节点进行跨节点的调用,这就会导致该接口服务相关的业务数据无法在各个联盟成员之间进行流转。
34.基于此,本说明书提供一种利用区块链的存储能力,来突破区块链网络中的各个区块链节点之间的网络隔离,对分布在各个区块链节点上的分布式应用所提供的接口服务进行统一的管理的技术方案。
35.在实现时,可以针对在区块链网络中的第一区块链节点上部署的第一分布式应用,开发一个对应的第一应用中间件;相应的,也可以针对在区块链网络中的与第一区块链节点之间进行了网络隔离的第二区块链节点上部署的第二分布式应用,开发一个对应的第二应用中间件。其中,上述应用中间件,具体用于发现和调用其他区块链节点上部署的分布式应用所提供的接口服务。
36.第一区块链节点对应的运营方,在通过第一分布式应用发布了第一接口服务之后,上述第一应用中间件可以获取与该第一接口服务相关的服务信息,然后将该服务信息发布至区块链进行存储。而第二区块链节点上部署的第二分布式应用对应的第二应用中间件,则可以获取区块链上存储的上述第一接口服务相关的服务信息,并将获取到的服务信息返回至第二分布式应用,以完成针对该第一接口服务的跨节点的服务发现。
37.进一步的,第二分布式应用跨节点的发现了第一分布式应用包含的上述第一接口服务之后,可以基于该第一接口服务相关的服务信息,向上述第二应用中间件发起针对该第一接口服务的服务调用请求。其中,上述服务信息包括上述第一区块链节点对应的地址信息。
38.而第二应用中间件在接收到针对该第一接口服务的服务调用请求之后,可以基于上述地址信息将该服务调用请求转发至第一区块链节点。该第一区块链节点在收到上述服务调用请求后,可以进一步将该服务调用请求转发至与第一分布式应用对应的第一应用中间件。第一应用中间件在收到该服务调用请求后,可以响应于该服务调用请求,发起针对该第一接口服务的服务调用,以完成针对该第一接口服务的跨节点的服务调用。
39.在以上技术方案中,可以利用区块链的存储能力,突破区块链网络中的各个区块链节点之间的网络隔离,使得区块链网络中的区块链节点上部署的分布式应用,可以通过应用中间件来发现和调用部署在其他区块链节点上部署的分布式应用所提供的接口服务,从而可以实现对分布在各个区块链节点上的分布式应用所提供的接口服务进行统一的管理。
40.请参见图1,图1是本说明书根据一示例性实施例示出的一种跨节点的服务发现方法的流程图;其中,区块链网络中的至少部分区块链节点上分别部署了分布式应用;所述方法应用于与所述区块链网络中的第一区块链节点上部署的第一分布式应用对应的第一应用中间件;所述方法包括:
41.步骤102:获取与所述第一分布式应用包含的第一接口服务相关的服务信息;
42.上述区块链网络中的至少部分区块链节点对应的运营方上,可以基于实际的业务需求,在上述至少部分区块链节点上分别部署分布式应用,并通过该分布式应用来发布接口服务。
43.例如,请参见图2,图2为第二分布式应用跨节点发现第一分布式应用所发布的第一接口服务的多方交互图。如图2所示,在实际应用中,可以在区块链网络中的第一区块链节点上部署第一分布式应用,在区块链网络中的第二区块链节点上部署第二分布式应用。第一区块链节点的运营方,可以通过该第一分布式应用发布第一接口服务,供第二分布式应用进行跨节点的进行服务发现和服务调用。
44.其中,上述接口服务,具体可以包括由宿主系统发布的,通过对外提供接口(比如api)的方式,以供其他系统进行调用的服务形式。
45.例如,在一个例子中,上述接口服务具体可以是通过对外提供api接口,供其他系统进行调用的微服务。
46.上述至少部分区块链节点之间,可以预先进行网络隔离处理。例如,在一个例子中,上述区块链网络具体可以是联盟链,对于联盟链来说,各个联盟成员对应的节点之间,通常进行了网络隔离处理。其中,对上述至少部分区块链节点之间进行网络隔离所采用的
网络隔离方式,在本说明书中不进行特别限定。
47.在示出的一种实施方式中,可以针对上述第一分布式应用,开发一个对应的第一应用中间件。相应的,也可以针对上述第二分布式应用,开发一个对应的第二应用中间件。
48.其中,上述应用中间件(application middleware),是一种独立的系统软件或服务程序,分布式应用可以借助这种系统软件或服务程序,在不同的技术之间共享资源。
49.例如,在本说明书中,部署在任一区块链节点上的分布式应用,具体可以通过与该分布式应用对应的应用中间件,来跨节点的发现和调用其他区块链节点上部署的分布式应用所提供的接口服务。
50.请继续参见图2,第一区块链节点对应的运营方,在通过第一分布式应用发布了第一接口服务之后,上述第一应用中间件可以获取与该第一接口服务相关的服务信息。
51.其中,上述第一应用中间件在获取与该第一接口服务相关的服务信息的具体方式,在本说明书中不进行特别限定。
52.在示出的一种实施方式中,上述第一应用中间件,具体可以面向应用管理方(比如可以是应用开发者)提供一个服务注册界面,在这种情况下,该应用管理方在通过上述第一分布式应用发布了第一接口服务之后,具体可以通过该服务注册界面录入该第一接口服务相关的服务信息,将该第一服务接口相关的服务信息注册到第一应用中间件上。而第一应用中间件则可以通过该服务注册界面来获取应用管理方录入的与该第一接口服务相关的服务信息。
53.在示出的一种实施方式中,应用管理方在通过上述第一分布式应用发布了第一接口服务之后,此时该第一分布式应用可以向上述第一应用中间件发送一个服务注册请求,并在该服务注册请求中携带该第一接口服务相关的服务信息。而上述第一应用中间件,在收到该服务注册请求中,可以从该服务注册请求中来获取上述第一接口服务相关的服务信息。
54.在本说明书中,一方面,如果上述区块链网络采用通用的网络架构,上述应用中间件,通常可以运行在部署与该应用中间件对应的分布式应用的区块链节点中。例如,应用中间件可以运行在该区块链节点搭载的操作系统中。
55.另一方面,如果上述区块链网络采用由区块链共识节点网络和边缘计算网络构成的双层网络架构,此时可以针对上述至少部分区块链节点,分别部署一个与其对应的边缘计算节点。在这种组网架构下,上述应用中间件具体也可以运行在与该区块链节点对应的边缘计算节点中。例如,应用中间件可以运行在与该区块链节点对应的边缘计算节点搭载的操作系统中。
56.以下以上述区块链网络为联盟链为例,结合附图对以上提到的两种网络架构分别进行举例说明。
57.需要强调的是,以上述区块链网络为联盟链为例,仅为示意性的,在实际应用中,上述区块链具体可以是共有链,私有链,混合链,在本说明书中不进行特别限定;其中,上述混合链是指采用共有链,私有链,混合链中至少两种链进行混合组网构成的区块链网络。
58.请参见图3,图3为示出的一种联盟链网络的网络架构图。
59.在图3示出的联盟链的网络架构图中,可以包括共识节点和与各个联盟成员对应的非共识节点。上述联盟链中的共识节点之间,可以通过互联构成一个位于联盟链网络内
层的共识网络。而位于联盟链网络边缘的与各个联盟成员对应的非共识节点,则可以通过区块链中继通信网络中的中继节点与共识节点实现互联。
60.其中,区块链中继通信网络,是一种采用中继技术创建的骨干中继通信网络。该骨干中继通信网络,可以提升区块链网络中的区块链节点之间的数据传输的稳定性和实时性,实现区块链网络中的区块链节点之间的高速、安全互连。
61.在实际应用中,区块链中继通信网络,具体可以适用于各种类型的区块链网络,包括公有链、私有链和联盟链等。例如,应用于公有链的区块链中继通信网络主要包括falcon、fast bitcoin relay network(fbrn)、fast internet bitcoin relay engine(fibre)等,而应用于联盟链的区块链中继通信网络,可以包括blockchain transmission network(btn)网络等。因此,对于联盟链网络来说,位于联盟链网络边缘的与各个联盟成员对应的非共识节点,则可以通过btn网络中的btn节点与共识节点实现互联。
62.在图3示出的网络架构中,各个联盟成员可以基于实际的业务需求,在各自对应的非共识节点上,来部署分布式应用。也即,以上实施例提到的第一区块链节点和第二区块链节点,相当于是与联盟成员对应的非共识节点。例如,在一个例子中,与各个联盟成员对应的非共识节点,通常可以是各个联盟成员对应的服务器,各个联盟成员可以在各自的服务器上来分别部署分布式应用。
63.在这种场景下,各联盟成员除了可以在各自对应的非共识节点上,来部署分布式应用以外,还可以在各自对应的非共识节点上,为该分布式应用开发一个对应的应用中间件,并在该非共识节点上来运行该应用中间件。
64.请参见图4,图4为示出的另一种联盟链网络的网络架构图。
65.在图4示出的联盟链的网络架构图中,仍然可以包括共识节点和与各个联盟成员对应的非共识节点。但与图3示出的网络架构不同的是,图4示出的网络架构将采用由区块链共识节点网络和边缘计算网络构成的双层网络架构。
66.如图4所示,一方面,上述联盟链中的共识节点之间,仍然可以通过互联构成一个位于联盟链网络内层的共识网络。
67.另一方面,可以为与各个联盟成员对应的非共识节点,分别部署一个与其对应的边缘计算节点,各个边缘计算节点之间也可以通过互联构成一个位于联盟链网络边缘的边缘计算网络。与各个联盟成员对应的非共识节点,可以通过与其对应的边缘计算节点与共识节点实现互联。也即,与各个联盟成员对应的非共识节点,不再与共识节点直接互联,而是将与其对应的边缘计算节点作为中继,与共识节点实现互联。
68.而与各个非共识节点对应的边缘计算节点,仍然可以通过区块链中继通信网络中的中继节点与共识节点实现互联。例如,对于联盟链网络来说,上述边缘计算节点可以通过btn网络中的btn节点与共识节点实现互联。
69.在图4示出的网络架构中,各个联盟成员仍然可以基于实际的业务需求,在各自对应的非共识节点上,来部署分布式应用。为了提升联盟链的性能和可扩展性,各联盟成员除了可以在各自对应的非共识节点上,来部署分布式应用以外,还可以在与上述非共识节点对应的边缘计算节点上,为该分布式应用开发一个对应的应用中间件,并在该边缘计算节点上来运行该应用中间件。
70.例如,上述第一应用中间件具体可以运行在与第一区块链节点对应的第一边缘计
算节点上;上述第二应用中间件具体可以运行在与第二区块链节点对应的第二边缘计算节点上。
71.通过这种方式,可以在该边缘计算节点上,利用该边缘计算节点的处理资源和算力,来执行与该分布式应用相关的业务处理流程(比如,跨节点的发现其它分布式应用发布的接口服务的流程,跨节点的调用其它分布式应用发布的接口服务的流程,等等),在整个过程中并不消耗联盟链中的各个节点(包括共识节点和非共识节点)的处理资源。
72.而且,由于边缘计算节点是在联盟成员中的各个节点的基础上,扩展出的一台专用的计算节点,因此在实际应用中,可以基于分布式应用的具体需求,来灵活的对该边缘计算节点的处理资源和算力进行扩展。
73.步骤104,将所述服务信息发布至所述区块链进行存储,以由所述区块链网络中的与所述第一区块链节点之间进行了网络隔离的第二区块链节点上部署的第二分布式应用对应的第二应用中间件,获取所述区块链上存储的所述第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用。
74.上述第一应用中间件在获取到与上述第一接口服务相关的服务信息之后,可以进一步将该服务信息发布至区块链进行存储。
75.在示出的一种实施方式中,如果上述区块链网络采用图4示出双层的网络架构,此时上述第一应用中间件可以运行在与上述第一区块链节点对应的第一边缘计算设备上。在这种情况下,上述第一应用中间件在将获取到的与上述第一接口服务相关的服务信息发布至区块链进行存储时,具体可以先将该服务信息发送至与第一区块链节点对应的第一边缘计算节点上进行本地存储,并在该服务信息在第一边缘计算节点上存储完成之后,可以响应于该服务信息在所述第一边缘计算节点上存储完成,进一步将该服务信息发布至区块链进行存储。
76.例如,请继续参见图2,第一应用中间件可以先将该服务信息发送至与第一区块链节点对应的第一边缘计算节点上进行本地存储,并在收到第一边缘计算节点返回的在本地存储成功的存储结果后,可以响应于该存储结果,进一步将该服务信息发布至区块链进行存储。当然,在实际应用中,第一应用中间件也可以在未收到第一边缘计算节点返回的存储结果的情况下,直接将该服务信息发布至区块链进行存储。
77.请继续参见图2,上述第一应用中间件将上述服务信息发布至区块链进行存储时,具体可以将该服务信息传输给接入的共识节点(比如图2示出的共识节点a),再由该共识节点将该服务数据进一步传输至其他的共识节点(比如图2示出的共识节点b),由各个共识节点基于支持的共识算法对该服务数据进行共识处理,并在共识处理完成后,将该服务数据存储至区块链的分布式账本。
78.在本说明书中,当上述第一应用中间件在将上述服务信息发布至区块链进行存储以后,区块链网络中的第二区块链节点上部署的第二分布式应用对应的第二应用中间件,可以获取区块链上存储的该第一接口服务相关的服务信息,并将获取到的服务信息返回至第二分布式应用,以完成第二分布式应用针对该第一接口服务的跨节点的服务发现。
79.请继续参见图2,在示出的一种实施方式中,上述第二应用中间件,可以基于预设的时长间隔,定时从接入的区块链节点上来查询区块链上存储的由其它区块链节点上部署的分布式应用对应的应用中间件所发布的接口服务相关的服务信息。其中,在这些服务信
息中具体可以包括由上述第一应用中间件发布的与上述第一接口服务相关的服务信息。例如,图2示出的为第二应用中间件定时从接入的共识节点b处,定时查询由第一分布式应用发布的第一接口服务相关的服务信息。
80.上述第二应用中间件在接收到接入的区块链节点返回的服务信息后,可以先将查询到的该服务信息发送至与第二区块链节点对应的第二边缘计算节点上进行本地存储。例如,请参见图2,第二应用中间件可以先将该服务信息发送至与第二边缘计算节点,第二边缘节点设备在本地存储收到的服务信息,然后在本地存储成功后,向第二应用中间件返回在本地存储成功的存储结果。当然,在实际应用中,第二边缘计算节点也可以在本地存储成功后,不向第二应用中间件返回在本地存储成功的存储结果。
81.后续,第二分布式应用可以通过向第二应用中间件主动发现服务发现请求的方式,来发现由其它分布式应用发布的接口服务。请继续参见图2,第二应用中节点在接收到第二分布式应用提交的服务发现请求后,可以响应于该服务发现请求,查询第二边缘计算节点上存储的服务信息,并将查询到的服务信息返回至第二分布式应用。
82.当然,在实际应用中,上述第二应用中间件也可以在查询到区块链上存储的与上述第一接口服务相关的服务信息之后,主动将该服务信息推送到该第二分布式应用,在本说明书中不进行特别限定。在这种情况下,第二应用中节点在接收到第二分布式应用提交的服务发现请求后,可以响应于该服务发现请求,直接将与上述第一接口服务相关的服务信息返回给上述第二分布式应用。
83.在本说明书中,上述第一应用中间件,也可以基于预设的时长间隔,定时查询区块链上存储的由其它区块链节点上部署的分布式应用对应的应用中间件所发布的接口服务相关的服务信息;其中,在这些服务信息中具体可以包括由上述第二应用中间件发布的与上述第二接口服务相关的服务信息。
84.上述第一应用中间件在查询到区块链上存储的与上述第二接口服务相关的服务信息后,也可以先将查询到的该服务信息发送至与第一区块链节点对应的第一边缘计算节点上进行存储。后续,在接收到第一分布式应用提交的服务发现请求后,再响应于该服务发现请求,将所述第一边缘计算节点上存储的该服务信息返回至第一分布式应用。
85.当然,在实际应用中,对于上述第一应用中间件来说,也可以在查询到区块链上存储的与上述第二接口服务相关的服务信息之后,主动将该服务信息推送到该第一分布式应用,在本说明书中不进行特别限定。
86.在以上实施例中,以第一分布式应用发布第一接口服务,第二分布式应用通过应用中间件来跨节点的发现该第一接口服务为例进行了详细说明,需要补充说明的是,在实际应用中,上述区块链网络中的不同的分布式应用,均可以基于自身的业务需求来独立的发布新的接口服务,并跨节点的来发现由其它的分布式应用所发布的接口服务。
87.例如,在一个例子中,上述第二分布式应用也可以发布第二接口服务,上述第一分布式应用也可以通过应用中间件来跨节点的发现该第一接口服务。
88.其中,上述第一分布式应用来跨节点的发现由第二分布式应用所发布的第二接口服务的具体实施细节,在本说明书不再赘述,可以参见之前的实施例所描述的第二分布式应用跨节点的发现上述第一分布式应用所发布的第一接口服务相关的实施细节。
89.请参见图5,图5是本说明书根据一示例性实施例示出的一种跨节点的服务发现方
法的流程图;其中,区块链网络中的至少部分区块链节点上分别部署了分布式应用;所述方法可以应用于与区块链网络中的第二区块链节点上部署的第二分布式应用对应的第二应用中间件;所述方法包括:
90.步骤502:获取所述区块链中存储的与所述区块链网络中的第一区块链节点上部署的第一分布式应用包含的第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用;其中,所述第一区块链节点与所述第二区块链节点之间进行了网络隔离;
91.请参见图6,图6为第二分布式应用跨节点发现调用第一分布式应用所发布的第一接口服务的多方交互图。
92.如图6所示,在实际应用中,与第二分布式应用对应的第二应用中间件,可以获取区块链上存储的与上述第一接口服务相关的服务信息,并将获取到的服务信息返回至第二分布式应用,以完成第二分布式应用针对该第一接口服务的跨节点的服务发现。
93.其中,第二分布式应用针对上述第一接口服务的跨节点的服务发现的具体流程,请参考图5示出的记载,在本实施例中不再进行赘述。
94.步骤504:接收所述第二分布式应用基于所述服务信息发起的针对所述第一接口服务的服务调用请求;其中,所述服务信息包括所述第一区块链节点对应的地址信息;
95.请继续参见图6,第二分布式应用在获取到区块链上存储的与上述第一接口服务相关的服务信息之后,可以基于上述服务信息来发起针对上述第一接口服务的跨节点的服务调用;而上述第二中间件,可以接收上述第二分布式应用基于上述服务信息发起的针对上述第一接口服务的服务调用请求,然后对该服务调用请求进行进一步的处理。
96.其中,针对上述第一接口服务的跨节点的服务调用,具体可以是由用户发起的,也可以是由与上述第二分布式应用对接的第三方的业务系统来发起,在本说明书中不进行特别限定;
97.例如,在一个例子中,第二分布式应用可以将获取到的服务信息通过一个用户界面向用户输出,而用户可以在该用户界面中进行相关的业务操作,来基于该服务信息发起针对该第一接口服务的跨节点的服务调用。
98.在另一个例子中,第二分布式应用也可以将获取到的服务信息进一步转发至与其对接的第三方的业务系统,而该业务系统可以在其对应的业务流程中来引用上述第一接口服务,当该业务系统在执行该业务流程时,可以基于引用的该第一接口服务相关的服务信息,来发起针对该第一接口服务的跨节点的服务调用。
99.其中,上述服务信息中,具体可以包括部署上述第一接口服务的第一区块链节点的地址信息。例如,由于上述第一区块链节点具体可以是与联盟成员对应的不参与共识的服务器,而该地址信息则具体可以是上述服务器的域名地址。
100.需要说明的是,在上述服务信息中,除了可以包括部署上述第一接口服务的第一区块链节点的地址信息以外,在实际应用中,还可以包括与上述第一接口服务相关的其它形式的信息;
101.例如,可以包括上述第一分布式应用的应用标识、以及与上述第一接口服务对应的服务接口(比如api)等服务调用相关的调用信息;以及,还可以包括与上述服务调用请求的转发相关的寻址信息;比如,如果上述区块链网络采用图4示出的双层的网络架构,此时上述服务调用请求的转发下一跳设备通常为第一区块链节点对应的第一边缘计算节点接
入的第一中继节点,在这种情况下,上述服务信息中具体还可以包括上述第一中继节点的标识信息。
102.步骤506:响应于所述服务调用请求,基于所述地址信息将所述服务调用请求转发至所述第一区块链节点,以使所述第一区块链节点进一步将所述服务调用请求转发至与所述第一分布式应用对应的第一应用中间件,由所述第一应用中间件响应于所述服务调用请求,发起针对所述第一接口服务的服务调用。
103.请继续参见图6,上述第二中间件,在接收到上述第二分布式应用基于上述服务信息发起的针对上述第一接口服务的服务调用请求之后,可以获取上述服务信息中的上述第一区块链节点的地址信息,然后基于该地址信息将上述服务调用请求,进一步转发至第一区块链节点,由上述第一区块链节点进一步进行处理。
104.其中,上述第二中间件,在基于上述地址信息将上述服务调用请求转发至第一区块链节点时所采用的转发方式,通常取决于上述区块链网络所采用的具体的网络架构,在本说明书中不进行特别限定;
105.例如,在示出的一种实施方式中,如果上述区块链网络采用图3示出的网络架构,在这种网络架构下,上述第二区块链节点可以是位于联盟链网络边缘的与联盟成员对应的非共识节点(比如联盟成员的服务器),该第二区块链节点可以通过区块链中继通信网络中的中继节点与共识节点实现互联,而在上述服务信息中通常还包括上述第一区块链节点所接入的第一中继节点的标识信息。
106.在这种情况下,上述第二中间件通常运行在第二区块链节点上,此时上述第二中间件具体可以基于上述地址信息,先将上述服务调用请求转发至第二区块链节点接入的第二中继节点。而该第二中继节点收到该服务调用请求后,可以基于上述服务信息中的上述第一中继节点的标识信息,在区块链中继通信网络中进行路由寻址,然后基于寻址结果将该服务调用请求转发至第一中继节点。其中,在区块链中继通信网络中进行路由寻址的具体实施方式,在本说明书中不再进行详述。
107.第一中继节点在收到该服务调用请求后,可以进一步基于上述服务信息中的上述第一区块链节点的地址信息,将该服务调用请求转发至第一区块链节点,再由该第一区块链节点进一步将该服务调用请求转发至与第一分布式应用对应的第一应用中间件,由该第一应用中间件响应于该服务调用请求,发起针对上述第一接口服务的服务调用。
108.在示出的一种实施方式中,请继续参见图6,如果上述区块链网络采用图4示出的网络架构,在这种网络架构下,上述第二区块链节点也可以是位于联盟链网络边缘的与联盟成员对应的非共识节点(比如联盟成员的服务器),该第二区块链节点对应的第二边缘计算节点,可以通过区块链中继通信网络中的中继节点与共识节点实现互联,而在上述服务信息中通常还包括与上述第一区块链节点对应的第一边缘计算节点所接入的第一中继节点(图6示出的中继节点a)的标识信息。
109.在这种情况下,上述第二中间件通常运行在与第二区块链节点对应的第二边缘计算节点上,此时上述第二中间件具体可以基于上述地址信息,先将上述服务调用请求转发至第二边缘计算节点接入的第二中继节点(图6示出的中继节点b)。而该第二中继节点收到该服务调用请求后,可以基于上述服务信息中的上述第一中继节点的标识信息,在区块链中继通信网络中进行路由寻址,然后基于寻址结果将该服务调用请求转发至第一中继节
点。其中,在区块链中继通信网络中进行路由寻址的具体实施方式,在本说明书中不再进行详述。
110.请继续参见图6,第一中继节点在收到该服务调用请求后,可以进一步基于上述服务信息中的上述第一区块链节点的地址信息,将该服务调用请求通过第一边缘计算节点转发至第一区块链节点,再由该第一区块链节点进一步将该服务调用请求转发至与第一分布式应用对应的第一应用中间件,由该第一应用中间件响应于该服务调用请求,发起针对上述第一接口服务的服务调用。
111.需要说明的是,第一应用中间件响应于上述服务调用请求,发起针对上述第一接口服务的服务调用时的调用方式,通常跟上述第一接口服务的部署方式相关。
112.例如,在一种情况下,上述第一接口服务可以完全去中心化的部署在区块链上的智能合约中,在这种情况下,该智能合约相当于是该第一接口服务的服务后台。而在另一种情况下,上述第一接口服务也可以仅将与该第一接口服务的权限管理相关的权限管理逻辑,去中心化的部署在区块链上的智能合约中,而将该第一接口服务以服务接口的形式中心化的部署在第一区块链节点上;在这种情况下,该智能合约和第一区块链节点共同充当该第一接口服务的服务后台。
113.在示出的一种实施方式中,如果第一接口服务相关的服务逻辑以合约代码的形式去中心化的部署在区块链上的智能合约中,此时上述第一应用中间件可以响应于上述服务调用请求,直接发起针对该智能合约包含的与该第一接口服务相关的服务逻辑对应的合约代码的合约调用,就可以完成针对该第一接口服务的服务调用。
114.例如,上述第一应用中间件可以打包一笔针对该智能合约的智能合约调用交易,并在该智能合约调用交易中携带针对该智能合约包含的与该第一接口服务相关的服务逻辑对应的合约代码相关的调用参数,然后将该智能合约调用交易提交至共识节点,来发起针对该智能合约的合约调用。
115.在示出的一种实施方式中,如果仅将与该第一接口服务的服务权限相关的权限管理逻辑,去中心化的部署在区块链上的智能合约中,而将该第一接口服务以服务接口的形式中心化的部署在第一区块链节点上,此时上述第一应用中间件可以响应于上述服务调用请求,先调用发起针对该智能合约包含的与该第一接口服务的服务权限相关的权限管理逻辑对应的合约代码,然后通过获取针对该智能合约的调用结果,来确定发起该服务调用请求的第二分布式应用是否具有该第一接口服务的调用权限。
116.如果确定该第二分布式应用具有该第一接口服务的调用权限,此时再进一步发起针对该第一接口服务对应的服务接口的接口调用(比如api调用),以完成针对该第一接口服务的服务调用。
117.其中,需要说明的是,由于该第一接口服务的服务接口是部署在上述第一区块链节点上的,因此第一应用中间件在发起针对该第一接口服务对应的服务接口的接口调用时,除了需要了解待调用的该服务接口的接口标识以外,通常还需要了解该服务接口在上述第一区块链节点上的服务地址。
118.例如,以上述第一区块链节点为联盟成员对应的服务器为例,上述服务地址通常也称之为该服务接口在该服务器上的接口相对路径。
119.其中,需要强调的是,上述服务地址对应的地址类型,在本说明书中不进行特别限
定;例如,在一个例子中,上述服务地址具体可以是域名地址,采用域名地址可以很好的描述服务接口在服务器上的相对路径。
120.当然,在实际应用中,上述服务地址除了可以是域名地址以外,也可以是其它形式的地址类型;比如,服务器的ip地址,软件地址,等等。
121.在示出的一种实施方式中,由于该第一接口服务,是由第一分布式应用发布的接口服务,因此该第一接口服务对应的服务接口的服务地址,可以是由部署该接口服务的第一区块链节点的地址信息,和该第一分布式应用的地址信息拼接起来生成的一个地址。
122.其中,需要说明的是,对于第一分布式应用来说,由于其可能需要不断的发布新的接口服务,因此该第一分布式应用的地址信息,可能也会频繁的发生变化。第一分布式应用的地址信息频繁的发生变化,势必也可能会导致上述该第一接口服务对应的服务接口的服务地址频繁的发生变化,这就可能导致基于发生变化前的服务地址发起针对该服务接口的接口调用时出现调用失败的情况。
123.在示出的一种实施方式中,为了应对上述第一分布式应用的地址信息动态发生变化的情况,第一分布式应用在发布上述第一接口服务时,可以只将该第一区块链节点的地址信息发布至区块链进行存储,而并不需要将该第一接口服务在第一区块链节点上的真实的服务地址(即将上述第一区块链节点的地址和上述第一分布式应用的地址进行拼接得到的地址)发布出去。
124.在这种情况下,区块链上存储的与上述第一接口服务对应的服务信息中,除了可以包含上述第一区块链节点对应的地址信息以外,还可以包括上述第一接口服务对应的服务接口,以及上述第一分布式应用的应用标识。
125.第一应用中间件在发起针对该第一接口服务对应的服务接口的接口调用时,可以先基于上述应用标识查询该第一分布式应用的地址信息。
126.在查询到该第一分布式应用的地址信息之后,再将该第一分布式应用的地址信息与上述第一区块链节点对应的地址信息进行拼接处理,以得到该第一接口服务在上述第一区块链节点上的服务地址。
127.然后,再基于拼接出的该服务地址,发起针对与该第一接口服务对应的服务接口的接口调用。
128.通过这种方式,无论第一分布式应用的地址信息如何发生变化,都能实时的获取到该第一分布式应用的地址信息,并如实的拼接出该第一接口服务的真实的服务地址,从而很好的适应第一分布式应用的地址信息频繁发生变化的业务场景。
129.在以上的实施例中,以第一分布式应用发布第一接口服务,第二分布式应用通过应用中间件来跨节点的调用该第一接口服务为例进行了详细说明,需要补充说明的是,在实际应用中,上述区块链网络中的不同的分布式应用,均可以基于自身的业务需求来跨节点的调用由其它的分布式应用所发布的接口服务。
130.例如,在一个例子中,上述第二分布式应用也可以发布第二接口服务,上述第一分布式应用也可以通过应用中间件来跨节点的调用该第一接口服务。
131.其中,上述第一分布式应用来跨节点的调用由第二分布式应用所发布的第二接口服务的具体实施细节,在本说明书不再赘述,可以参见之前的实施例所描述的第二分布式应用跨节点的调用上述第一分布式应用所发布的第一接口服务相关的实施细节。
132.与前述方法的实施例相对应,本说明书还提供了装置、电子设备以及存储介质的实施例。
133.图7是一示例性实施例提供的一种电子设备的示意结构图。请参考图7,在硬件层面,该设备包括处理器702、内部总线704、网络接口706、内存708以及非易失性存储器810,当然还可能包括其他业务所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器702从非易失性存储器710中读取对应的计算机程序到内存708中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
134.如图8所示,图8是本说明书根据一示例性实施例示出的一种跨节点的服务发现装置的框图,该装置可以应用于如图7所示的电子设备中,以实现本说明书的技术方案。区块链网络中的至少部分区块链节点上分别部署了分布式应用;该装置可以应用于与所述区块链网络中的第一区块链节点上部署的第一分布式应用对应的第一应用中间件;所述装置80包括:
135.第一获取模块801,获取与所述第一分布式应用包含的第一接口服务相关的服务信息;
136.发布模块802,将所述服务信息发布至所述区块链进行存储,以由所述区块链网络中的与所述第一区块链节点之间进行了网络隔离的第二区块链节点上部署的第二分布式应用对应的第二应用中间件,获取所述区块链上存储的所述第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用。
137.上述装置80的各个模块的具体细节已经在之前描述的方法流程中进行了详细的描述,因此此处不再赘述。
138.如图9所示,图9是本说明书根据另一示例性实施例示出的一种跨节点的服务调用装置的框图,该装置也可以应用于如图7所示的电子设备中,以实现本说明书的技术方案。区块链网络中的至少部分区块链节点上分别部署了分布式应用;该装置可以应用于与所述区块链网络中的第二区块链节点上部署的第二分布式应用对应的第二应用中间件;所述装置90包括:
139.第二获取模块901,获取所述区块链中存储的与所述区块链网络中的第一区块链节点上部署的第一分布式应用包含的第一接口服务相关的服务信息,并将所述服务信息返回至所述第二分布式应用;其中,所述第一区块链节点与所述第二区块链节点之间进行了网络隔离;
140.接收模块902,接收所述第二分布式应用基于所述服务信息发起的针对所述第一接口服务的服务调用请求;其中,所述服务信息包括所述第一区块链节点对应的地址信息;
141.转发模块903,响应于所述服务调用请求,基于所述地址信息将所述服务调用请求转发至所述第一区块链节点,以使所述第一区块链节点进一步将所述服务调用请求转发至与所述第一分布式应用对应的第一应用中间件,由所述第一应用中间件响应于所述服务调用请求,发起针对所述第一接口服务的服务调用。
142.上述装置90的各个模块的具体细节已经在之前描述的方法流程中进行了详细的描述,因此此处不再赘述。
143.相应的,本说明书还提供一种电子设备,所述电子设备包括有处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为实现之前描述的全部的方法流程中的步骤。
144.相应的,本说明书还提供一种计算机可读存储介质,其上存储有可执行的指令;其中,该指令被处理器执行时,实现之前描述的全部的方法流程中的步骤。
145.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
146.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
147.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
148.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
149.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
150.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
151.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可
以的或者可能是有利的。
152.在本说明书一个或多个实施例使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
153.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
154.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1