基于区块链的应用发布方法、装置、电子设备及存储介质与流程
未命名
08-06
阅读:96
评论:0
1.本说明书一个或多个实施例涉及云应用技术领域,尤其涉及一种应用发布方法、装置、电子设备及存储介质。
背景技术:
2.云应用市场是一种软件交易及交付平台。isv(independent software vendors,独立软件开发商)可以入驻公有云平台的云应用市场,并可以将其开发的云应用部署在公有云平台的服务端上,由公有云平台对应的云服务提供商对云应用进行管理与维护;公有云平台通常是以saas(software as a service,软件即服务)化的方式,将云应用提供给用户,也即,用户可以调用在公有云平台的服务端上部署的云应用。
3.在实际应用中,各个isv开发的服务可能有对外输出的需求,但是其本身并不具备对外开放的条件。
技术实现要素:
4.本技术提供一种基于区块链的应用发布方法,应用于在私有化服务端上运行的第一服务管理程序;所述私有化服务端上部署有待发布至公有云平台的私有化服务;所述方法包括:
5.生成与所述私有化服务对应的去中心化应用;
6.在所述私有化服务端上部署所述去中心化应用;
7.响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述服务实例用于面向用户提供所述私有化服务。
8.本技术还提供另一种基于区块链的应用发布方法,应用于在公有云平台上运行的第二服务管理程序;所述方法包括:
9.获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示;其中,所述私有化服务端上部署有待发布至所述公有云平台的私有化服务,以及与所述私有化服务对应的所述去中心化应用;所述服务实例用于面向用户提供所述私有化服务;所述去中心化应用的执行代码已存证至区块链上;
10.响应于所述指示,在所述公有云平台上为所述去中心化应用创建服务实例。
11.本技术还提供一种基于区块链的应用发布装置,应用于在私有化服务端上运行的第一服务管理程序;所述私有化服务端上部署有待发布至公有云平台的私有化服务;所述装置包括:
12.生成单元,用于生成与所述私有化服务对应的去中心化应用;
13.第一部署单元,用于在所述私有化服务端上部署所述去中心化应用;
14.指示单元,用于响应于所述去中心化应用在所述私有化服务端上部署完成,将所
述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述服务实例用于面向用户提供所述私有化服务。
15.本技术还提供另一种基于区块链的应用发布装置,应用于在公有云平台上运行的第二服务管理程序;所述装置包括:
16.获得单元,用于获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示;其中,所述私有化服务端上部署有待发布至所述公有云平台的私有化服务,以及与所述私有化服务对应的所述去中心化应用;所述服务实例用于面向用户提供所述私有化服务;所述源代码文件至少包括所述去中心化应用的执行代码;
17.创建单元,用于响应于所述指示,在所述公有云平台上为所述去中心化应用创建服务实例。
18.本技术还提供一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;
19.所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行上述任一方法。
20.本技术还提供一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现上述任一方法。
21.通过以上实施例,一方面,由于可以先将私有化服务转化为去中心化应用,再将所述去中心化应用发布至公有云平台,而去中心化应用可以按照统一的标准协议进行定义,因此在应用发布的过程中,私有化服务的提供方无需按照不同公有云平台的云应用市场的相关协议进行适配,有利于减少接入成本和运维成本,还可以快速实现私有化服务的对外输出。
22.另一方面,由于与私有化服务对应的去中心化应用可以部署在私有化服务端上,并且在私有化服务端上运行的第一服务管理程序可以指示在公有云平台上运行的第二服务管理程序在公有云平台上为所述去中心化应用创建服务实例,使得外部用户可以通过所述服务实例来调用所述去中心化应用,进而使能所述私有化服务,因此在将与私有化服务对应的去中心化应用发布至公有云平台之后,能够保证私有化服务的提供方对部署在私有化服务端上的私有化服务与去中心化应用的管控力度。
23.再一方面,由于将与私有化服务对应的去中心化应用部署在私有化服务端上,并将所述去中心化应用的执行代码存证至链上,因此可以基于区块链不可篡改、可追溯等特性,保证去中心化应用的执行结果的可信性,同时可以提高去中心化应用的执行效率。
附图说明
24.为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本说明书中记载的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
25.图1是一示例性的实施例示出的一种应用发布系统的架构示意图;
26.图2是一示例性的实施例示出的一种应用发布方法的流程图;
27.图3是一示例性的实施例示出的另一种应用发布方法的流程图;
28.图4是一示例性的实施例示出的一种应用发布过程的多方交互图;
29.图5是一示例性的实施例示出的一种应用调用过程的多方交互图;
30.图6是一示例性的实施例示出的一种应用发布装置所在电子设备的结构示意图;
31.图7是一示例性的实施例示出的一种应用发布装置的框图;
32.图8是一示例性的实施例示出的另一种应用发布装置的框图。
具体实施方式
33.为了使本技术领域的人员更好地理解本说明书中的技术方案,下面将结合本说明书实施例中的附图,对本说明书实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本说明书一部分实施例,而不是全部的实施例。基于本说明书中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都应当属于本说明书保护的范围。
34.需要说明的是:在其他实施例中并不一定按照本说明书示出和描述的顺序来执行相应方法的步骤。在一些其他实施例中,其方法所包括的步骤可以比本说明书所描述的更多或更少。此外,本说明书中所描述的单个步骤,在其他实施例中可能被分解为多个步骤进行描述;而本说明书中所描述的多个步骤,在其他实施例中也可能被合并为单个步骤进行描述。
35.云应用市场是一种软件交易及交付平台。isv(independent software vendors,独立软件开发商)可以入驻公有云平台的云应用市场,并可以将其开发的云应用部署在公有云平台的服务端上,由公有云平台对应的云服务提供商对云应用进行管理与维护;公有云平台通常是以saas(software as a service,软件即服务)化的方式,将云应用提供给用户,也即,用户可以调用在公有云平台的服务端上部署的云应用。
36.在一些可能的实施例中,私有化部署的服务(本说明书中也称作“私有化服务”)可能有对外输出的需求,但是私有化服务本身不具备对外开放的条件,也即,不支持公有云平台或公有云用户直接访问私有化服务。
37.在这种情况下,如果需要通过云应用市场将私有化服务提供给外部用户,私有化服务的提供方需要按照云应用市场的相关协议,在公有云平台的服务端上重新部署私有化服务(也即:在公有云平台的服务端上部署私有化服务的复制版本),以在所述公有云平台的云应用市场中发布所述私有化服务,使得外部用户可以调用在所述公有云平台的服务端上重新部署的私有化服务。
38.在另一些可能的实施例中,各个isv可能希望将其开发的软件或服务在公有云平台的云应用市场中发布,从而获得更多的用户。在这种情况下,各个isv开发的软件或服务,同样需要按照云应用市场的相关协议,在公有云平台的服务端上重新部署,以在所述公有云平台的云应用市场中发布各个isv开发的软件或服务,使得外部用户可以调用在所述公有云平台的服务端上重新部署的软件或服务。
39.由此可见,在以上示出的实施例中,一方面,由于不同的中心化云应用市场通常采用不同协议,同一服务在不同的中心化云应用市场中发布时,需要分别按照不同云应用市场的相关协议,在不同云应用市场的服务端上重新部署,导致接入成本和运维成本较高。
40.另一方面,在将服务重新部署至云应用市场的服务端之后,由公有云平台对应的云服务提供商对已发布的云应用进行管理与维护,云应用的版本更新、监测、技术栈等都依赖于中心化云应用市场,导致原服务提供方的自主管控力度变弱。
41.有鉴于此,本说明书旨在提出一种分布式的混合云应用市场,能够将私有化服务去中心化地发布至公有云平台的技术方案。
42.由于私有化服务无法直接对外开放,因此可以先将私有化服务转化为去中心化应用(dapp,decentralized application),再将所述去中心化应用发布至公有云平台,以使外部用户通过调用在公有云平台的云应用市场中发布的去中心化应用,使能所述私有化服务的能力。
43.请参见图1,图1是一示例性的实施例示出的一种应用发布系统的架构示意图。如图1所示,所述应用发布系统可以包括私有化服务端公有云平台和区块链;所述私有化服务端上部署有待发布至公有云平台的私有化服务。
44.在实现时,所述私有化服务端上可以运行有第一服务管理程序,所述公有云平台上可以运行有第二服务管理程序,所述第一服务管理程序与所述第二服务管理程序之间可以进行跨域通信;所述第一服务管理程序可以生成与在所述私有化服务端上部署的私有化服务对应的去中心化应用(如dapp_1),并可以在所述私有化服务端上部署所述去中心化应用;响应于所述去中心化应用在所述私有化服务端上部署完成,所述第一服务管理程序可以将所述去中心化应用的执行代码存证至区块链上,并指示所述第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例(如服务实例a),以将所述去中心化应用发布至所述公有云平台。
45.可选地,响应于所述服务实例创建完成,所述第二服务管理程序在可以将所述服务实例注册至所述公有云平台的能力中心,以使所述能力中心为所述服务实例生成对外开放的sdk(software development kit,软件开发工具包)。
46.可选地,在将所述去中心化应用发布至所述公有云平台之后,响应于用户针对所述服务实例的调用,所述第二服务管理程序可以向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求,其中,所述远程调用请求可以携带有所述用户针对所述服务实例提交的输入参数;进一步地,所述第一服务管理程序响应于所述远程调用请求,可以基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用,以得到与所述远程调用请求对应的远程调用结果;进一步地,所述第二服务管理程序可以获得所述远程调用结果,并可以将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。
47.可选地,所述第一服务管理程序和所述第二服务管理程序可以作为区块链节点加入所述区块链。基于区块链的去中心化、不可篡改、可追溯等特性,在应用发布、应用调用的过程中,可以进行发布行为存证、发布通知、调用行为存证、调用结果存证、计量计费等,为跨域的多方协作提供可信基础。
48.由此可见,在本说明书中的技术方案中,一方面,由于可以先将私有化服务转化为去中心化应用,再将所述去中心化应用发布至公有云平台,而去中心化应用可以按照统一的标准协议进行定义,因此在应用发布的过程中,私有化服务的提供方无需按照不同公有云平台的云应用市场的相关协议进行适配,有利于减少接入成本和运维成本,还可以快速实现私有化服务的对外输出。
49.另一方面,由于与私有化服务对应的去中心化应用可以部署在私有化服务端上,并且在私有化服务端上运行的第一服务管理程序可以指示在公有云平台上运行的第二服务管理程序在公有云平台上为所述去中心化应用创建服务实例,使得外部用户可以通过所述服务实例来调用所述去中心化应用,进而使能所述私有化服务,因此在将与私有化服务对应的去中心化应用发布至公有云平台之后,能够保证私有化服务的提供方对部署在私有化服务端上的私有化服务与去中心化应用的管控力度。
50.再一方面,由于将与私有化服务对应的去中心化应用部署在私有化服务端上,并将所述去中心化应用的执行代码存证至链上,因此可以基于区块链不可篡改、可追溯等特性,保证去中心化应用的执行结果的可信性,同时可以提高去中心化应用的执行效率。
51.下面通过具体实施例,并结合具体的应用场景对本技术进行描述。
52.请参见图2,图2是一示例性的实施例示出的一种应用发布方法的流程图。所述应用发布方法可以应用于如图1所示的第一服务管理程序。
53.需要说明的是,在本说明书示出的一个或多个实施例中,所述服务管理程序也可以被称作技术底座、能力底座、中间件等,本说明书对此不作特别限定。另外,所述第一服务管理程序中的“第一”用于表示在私有化服务端一侧运行的服务管理程序,所述第二服务管理程序中的“第二”用于表示在公有云平台一侧运行的服务管理程序,所述“第一”、“第二”并无其他特殊含义。
54.如图2所示,所述应用发布方法可以执行以下步骤:
55.步骤202:生成与待发布至公有云平台的私有化服务对应的去中心化应用。
56.步骤204:在私有化服务端上部署所述去中心化应用。
57.例如,如图1所示的私有化服务端上可以部署有多种私有化服务,如果需要将其中的至少部分私有化服务发布至公有云平台,则第一服务管理程序可以生成与待发布至公有云平台的私有化服务对应的dapp_1,并可以在私有化服务端上部署dapp_1。
58.在示出的一种实施方式中,所述私有化服务端可以为私有云平台;所述公有云平台可以为公有云应用市场。
59.在示出的一种实施方式中,所述私有化服务端上可以部署有用于生成去中心化应用的转换插件。在这种情况下,所述生成与所述私有化服务对应的去中心化应用,具体可以包括:获得所述私有化服务的提供方上传的应用配置信息;根据所述应用配置信息,利用所述转换插件生成与所述私有化服务对应的所述去中心化应用。
60.例如,如图1所示的私有化服务端上还可以部署有dapp转换插件,dapp转换插件的内容具体可以包括但不限于能力市场标准协议、服务身份定义协议、服务授权协议、服务计量计费协议、服务日志协议等等;私有化服务的提供方(也即owner)可以按照dapp转换插件进行配置与自定义实现,得到应用配置信息;第一服务管理程序可以获得私有化服务的提供方上传的应用配置信息,并可以根据获得的应用配置信息,利用dapp转换插件生成与待发布至公有云平台的私有化服务对应的dapp_1。
61.需要说明的是,在本说明书中示出的各个实施例中,所述去中心化应用与所述私有化服务可以为一对多的对应关系;也即,所述第一服务应用程序可以将多种私有化服务封装为一种能力,并生成用于实现这种能力的去中心化应用。其中,所述多种私有化服务可以是由一方提供的,也可以是由多方提供的,也即可以由多方协同实现与所述去中心化应
用对应的能力。
62.在相关技术中,通常可以将dapp部署在区块链上,并通过调用智能合约来执行部署在链上的dapp。也即,通常可以在区块链中部署用于存储dapp后端代码的智能合约,前端可以调用链上部署的智能合约,以执行dapp后端代码。
63.而在所述步骤204中,通过将所述去中心化应用部署在私有化服务端上,而不是部署在区块链上,避免了在执行dapp时调用智能合约的过程,可以提高dapp的执行效率。需要说明的是,在本说明书中,仍然可以将所述去中心化应用的后端代码及相关的应用配置信息存证至链上,以向各个协作参与方保证dapp的执行结果的可信性。
64.步骤206:响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述服务实例用于面向用户提供所述私有化服务。
65.例如,响应于dapp_1在私有化服务端上部署完成,第一服务管理程序可以将dapp_1的执行代码存证至链上;以及,第一服务管理程序还可以发布与dapp_1对应的服务上线消息,所述服务上线消息可以用于指示第二服务管理程序在公有云平台上为dapp_1创建服务实例。
66.在本说明书中,所述第二服务管理程序响应于所述第一服务管理程序发起的为所述去中心化应用创建服务实例的指示,可以在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述去中心化应用的执行代码已存证至区块链上。
67.例如,第二服务管理程序可以订阅第一服务管理程序发布的服务上线消息;响应于与dapp_1对应的服务上线消息,第二服务管理程序可以获得第一服务管理程序发起的为dapp_1创建服务实例的指示,并可以在公有云平台上为dapp_1创建服务实例a。
68.在示出的一种实施方式中,所述第一服务管理程序和所述第二服务管理程序可以作为区块链节点加入区块链;所述区块链中可以部署有用于管理去中心化应用的智能合约。
69.例如,所述第一服务管理程序和所述第二服务管理程序可以在区块链中注册节点身份,注册信息可以包括但不限于域主体did、公钥、市场主页url(uniform resource locator,统一资源定位符)、ip地址白名单、订阅域主体did等
70.在这种情况下,所述响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例,具体可以包括:响应于所述去中心化应用在所述私有化服务端上部署完成,调用所述区块链中部署的智能合约所包含的发布逻辑,生成与所述去中心化应用对应的发布事件;其中,所述发布事件包含所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息;所述源代码文件至少包括所述去中心化应用的执行代码;将生成的所述发布事件存储至所述区块链,以使所述第二服务管理程序获得所述发布事件。
71.相应地,所述第二服务管理程序获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示,具体可以包括:从区块链中获得与所述去中心化应用对应的发布事件;其中,所述发布事件为所述第一服务管理程序响应于所述去中
心化应用在所述私有化服务端上部署完成,调用所述区块链中部署的智能合约所包含的发布逻辑而生成并存储至所述区块链的;所述发布事件包含所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息。
72.例如,响应于dapp_1在私有化服务端上部署完成,第一服务管理程序可以调用区块链中部署的智能合约所包含的发布逻辑,生成与dapp_1对应的发布事件,并可以将与dapp_1对应的发布事件存储至区块链;第二服务管理程序可以对存储至区块链的发布事件进行监听,响应于监听到与dapp_1对应的发布事件,第二服务管理程序可以获得第一服务管理程序发起的为dapp_1创建服务实例的指示。
73.又例如,响应于dapp_1在私有化服务端上部署完成,第一服务管理程序可以调用区块链中部署的智能合约所包含的发布逻辑,生成与dapp_1对应的发布事件,并可以将与dapp_1对应的发布事件存储至区块链;第一服务管理程序所搭载的事件通知程序可以向第二服务管理程序推送与dapp_1对应的发布事件;响应于获得所述事件通知程序推送的与dapp_1对应的发布事件,第二服务管理程序可以获得第一服务管理程序发起的为dapp_1创建服务实例的指示。
74.需要说明的是,在以上示出的实施例中,所述发布事件还可以包括但不限于:所述去中心化应用的应用标识、所述去中心化应用的输入参数、所述去中心化应用的输出参数、服务异常类别、服务sla(service level agreement,服务等级协议)配置信息、服务可见策略、服务鉴权策略等等,本说明书对此不作特别限定。其中,所述服务sla配置信息是指针对不同的域主体能够承诺的服务指标,如tps(transaction per second,每秒事务数)、响应时间等;所述服务鉴权策略是指ip地址白名单、能被调用的did、能被调用的通信协议等。
75.在本说明书中,为了减少第二服务管理程序针对部署在所述私有化服务端的去中心化应用的远程调用,提高服务调用效率,除了可以在所述私有化服务端部署所述去中心化应用,还可以在所述公有云平台部署所述去中心化应用,并优先执行在所述公有云平台部署的去中心化应用。
76.在示出的一种实施方式中,所述第二服务管理程序可以向所述第一服务管理程序发起针对所述去中心化应用的部署请求。在这种情况下,所述方法还可以包括:接收所述第二服务管理程序发起的针对所述去中心化应用的部署请求;响应于所述部署请求,向所述第二服务管理程序返回所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息,以使所述第二服务管理程序基于所述源代码文件和所述应用配置信息在所述公有云平台上部署所述去中心化应用。
77.例如,响应于与dapp_1对应的发布事件,第二服务管理程序可以向第一服务管理程序发起针对dapp_1的部署请求;响应于所述部署请求,第一服务管理程序可以向第二服务管理程序返回dapp_1的源代码文件和dapp_1的应用配置信息;第二服务管理程序在获得dapp_1的源代码文件和dapp_1的应用配置信息之后,可以在公有云平台上部署dapp_2(可以理解为dapp_1的副本)。
78.在示出的一种实施方式中,在基于所述源代码文件和所述应用配置信息,在所述公有云平台上部署所述去中心化应用之前,所述方法还可以包括:确定获得的源代码文件与所述发布事件中包含的源代码文件是否一致,以及确定获得的应用配置信息与所述发布事件中包含的应用配置信息是否一致;如果均一致,则进一步基于所述源代码文件和所述
应用配置信息,在所述公有云平台上部署所述去中心化应用。
79.例如,第二服务管理程序在获得dapp_1的源代码文件和dapp_1的应用配置信息之后,可以调用区块链中部署的智能合约所包含的部署确认逻辑,确定获得的dapp_1的源代码文件与在链上存证的dapp_1的源代码文件是否一致,以及确定获得的dapp_1的应用配置信息与在链上存证的dapp_1的应用配置信息是否一致;如果均一致,则第二服务管理程序可以基于获得的dapp_1的源代码文件和dapp_1的应用配置信息,在公有云平台上部署dapp_2。
80.又例如,响应于与dapp_1对应的发布事件,第二服务管理程序可以获得所述发布事件中包含的dapp_1的源代码文件和dapp_1的应用配置信息,并可以向第一服务管理程序发起针对dapp_1的部署请求;进一步地,第二服务管理程序在获得第一服务管理程序响应于所述部署请求返回的dapp_1的源代码文件和dapp_1的应用配置信息之后,可以确定所述发布事件中包含的dapp_1的源代码文件与所述第一服务管理程序响应于所述部署请求返回的dapp_1的源代码文件是否一致,以及确定所述发布事件中包含的dapp_1的应用配置信息与所述第一服务管理程序响应于所述部署请求返回的dapp_1的应用配置信息是否一致;如果均一致,则第二服务管理程序可以基于获得的dapp_1的源代码文件和dapp_1的应用配置信息,在公有云平台上部署dapp_2。
81.在示出的一种实施方式中,所述第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例之后,所述第二服务管理程序可以将与所述去中心化应用对应的服务实例注册至能力中心,实现统一的对外输出。在这种情况下,所述方法还可以包括:响应于所述服务实例创建完成,将所述服务实例注册至所述公有云平台的能力中心,以使所述能力中心为所述服务实例生成对外开放的sdk。
82.例如,响应于与dapp_1对应的服务实例a在公有云平台上创建完成,第二服务管理程序可以将服务实例a注册至公有云平台的能力中心,以使能力中心为服务实例a生成对外开放的sdk,所述sdk还可以支持不同的计算机语言。除此之外,所述公有云平台的能力中心还可以生成服务对外接口文档,生成接入demo代码,提供在线联调的环境与能力等,本说明书对此不作特别限定。
83.在本说明书中,所述第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例之后,响应于用户针对所述服务实例的调用,所述第二服务管理程序可以向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求;其中,所述远程调用请求携带有所述用户针对所述服务实例提交的输入参数。
84.例如,外部用户可以向公有云平台发起针对服务实例a的调用请求,所述调用请求中可以携带服务实例a的实例标识和服务实例a的输入参数,或者,所述调用请求中可以携带dapp_1的应用标识和dapp_1的输入参数;响应于针对服务实例a的调用请求,第二服务管理程序可以对针对服务实例a的调用请求进行二次封装,得到针对dapp_1的远程调用请求,所述远程调用请求中可以携带dapp_1的应用标识和dapp_1的输入参数;进一步地,第二服务管理程序可以通过与第一服务管理程序之间跨域互通的rpc(remote procedure call,远程过程调用协议)通道,将针对dapp_1的远程调用请求发送给第一服务管理程序。
85.其中,针对dapp_1的远程调用请求中还可以携带:第二服务管理程序的did(decentralized identifier,去中心化身份标识)、第二服务管理程序的数字签名、远程调
用请求的时间戳,等等。
86.在示出的一种实施方式中,所述公有云平台上部署有所述去中心化应用。在这种情况下,在向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求之前,所述方法还可以包括:基于所述输入参数执行在所述公有云平台上部署的所述去中心化应用,以得到所述服务实例的调用结果;如果执行成功,则将执行结果作为所述服务实例的调用结果返回给所述用户;如果执行失败,则向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求。
87.例如,响应于外部用户发起的针对服务实例a的调用请求,第二服务管理程序可以基于所述调用请求中携带的服务实例a的输入参数,执行在公有云平台上部署的dapp_2,以得到针对服务实例a的调用结果;如果执行成功,则第二服务管理程序可以将执行结果作为针对服务实例a的调用结果返回给外部用户;如果执行失败,则第二服务管理程序可以对针对服务实例a的调用请求进行二次封装,得到针对dapp_1的远程调用请求,向第一服务管理程序发起针对dapp_1的远程调用请求。
88.在本说明书中,所述方法还可以包括:
89.步骤208:接收所述第二服务管理程序响应于用户针对所述服务实例的调用而发起的针对所述去中心化应用的远程调用请求;其中,所述远程调用请求携带有所述用户针对所述服务实例提交的输入参数。
90.步骤210:响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用,以得到与所述远程调用请求对应的远程调用结果。
91.例如,第二服务管理程序响应于外部用户针对服务实例a的调用请求,可以向第一服务管理程序发起针对dapp_1的远程调用请求,所述远程调用请求中可以携带dapp_1的应用标识和dapp_1的输入参数;第一服务管理程序可以接收针对dapp_1的所述远程调用请求;进一步地,第一服务管理程序可以基于所述远程调用请求中携带的dapp_1的输入参数,执行在私有化服务端上部署的与所述远程调用请求中携带的应用标识对应的dapp_1,以得到与所述远程调用请求对应的远程调用结果。
92.在一些可能的实施例中,在基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用之前,所述第一服务管理程序可以先对接收到的远程调用请求进行合理性校验;如果对所述远程调用请求进行合理性校验通过,再基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用。
93.例如,响应于第二服务管理程序发起的针对dapp_1的远程调用请求,第一服务管理程序可以基于所述远程调用请求中携带的第二服务管理程序的did,验证第二服务管理程序是否具备dapp_1的访问权限,以及,第一服务管理程序可以基于所述远程调用请求中携带的第二服务管理程序的数字签名,验证第二服务管理程序的身份真实性。另外,第一服务管理程序还可以根据dapp_1的应用配置信息,确定所述远程调用请求是否符合sla范畴,等等,本说明书中不再一一列举。
94.在示出的一种实施方式中,执行在所述私有化服务端上部署的所述去中心化应用的过程中,可以实时调用与所述去中心化应用对应的私有化服务。在这种情况下,所述响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用,以得到与所述远程调用请求对应的远程调用结果,具体可以包括:响应于所述远程调
用请求,将所述输入参数作为调用参数,调用在所述私有化服务端上部署的与所述去中心化应用对应的所述私有化服务;获得所述私有化服务返回的服务调用结果,并将所述服务调用结果作为与所述远程调用请求对应的远程调用结果。
95.在示出的一种实施方式中,所述第一服务管理程序可以将针对所述去中心化应用的远程调用结果存证至链上,以使第二服务管理程序可以基于链上存证的远程调用结果,对所述第一服务管理程序返回的远程调用结果进行真实性验证;另外,链上存证的远程调用结果也可以用于计量计费,在此不作赘述。
96.在这种情况下,所述方法还可以包括:响应于与所述远程调用请求对应的远程调用结果,调用所述区块链中部署的智能合约所包含的调用结果存证逻辑,将所述远程调用结果存储至所述区块链。
97.其中,在将所述远程调用结果存证至链上时,具体可以将所述远程调用结果的哈希值存证至链上。另外,还可以将输入参数的哈希值、远程调用请求的时间戳、返回远程调用结果的时间戳、第二服务管理程序的身份标识、第一服务管理程序的身份标识、第一服务管理程序的数字签名等信息也存证至链上。
98.步骤212:将所述远程调用结果返回给所述第二服务管理程序,以使所述第二服务管理程序进一步将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。
99.例如,第一服务管理程序在得到与针对dapp_1的远程调用请求对应的远程调用结果之后,可以将得到的远程调用结果返回给第二服务管理程序;进一步地,第二服务管理程序在获得与针对dapp_1的远程调用请求对应的远程调用结果之后,可以将获得的远程调用结果作为与针对服务实例a的调用请求对应的调用结果返回给外部用户。
100.在示出的一种实施方式中,所述第一服务管理程序可以将针对所述去中心化应用的远程调用结果存证至链上,在这种情况下,在将所述远程调用结果作为所述服务实例的调用结果返回给所述用户之前,所述方法还可以包括:响应于所述远程调用结果,调用所述区块链中部署的智能合约所包含的调用结果确认逻辑,确定所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果是否一致;如果所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果一致,则进一步将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。
101.需要说明的是,在以上示出的实施方式中,所述调用结果确认逻辑还可以包含:如果确定所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果一致,则生成所述第二服务管理程序针对所述去中心化应用的调用记录,并将生成的调用记录存储至所述区块链,用于证明所述第二服务管理程序已经获取到了真实的远程调用结果。
102.在示出的一种实施方式中,所述第二服务管理程序针对所述去中心化应用的调用记录可以用于计量计费;具体地,所述第二服务管理程序在执行所述公有云平台上部署的去中心化应用,或者发起针对所述私有化服务端上部署的去中心化应用时,可以基于所述区块链中部署的计量计费合约,异步地生成账单,后续可以将生成的账单分别同步给所述第一服务管理程序和/或所述第二服务管理程序,以使外部用户或私有化服务的提供方可以获得账单。
103.在这种情况下,所述方法还可以包括:调用所述区块链中部署的智能合约所包含
的计费合约,根据所述第二服务管理程序针对所述去中心化应用的调用记录,获得与所述去中心化应用对应的费用信息。
104.其中,所述费用信息可以为基于应用发布时配置的计费策略与应用调用时的计量记录,在链上计算得到的。所述费用信息具体可以包括但不限于:账单标识、私有化服务的提供方的身份标识、外部用户或公有云平台对应的云服务提供商的身份标识、账单周期、账单金额、调用记录明细对账单等等。
105.在示出的一种实施方式中,所述私有化服务端上可以集成ci/di(continuous integration/continuous deployment,持续集成/持续部署)运行环境。在这种情况下,所述方法还可以包括:获得所述私有化服务的提供方上传的应用更新信息;根据所述应用更新信息,对与所述私有化服务对应的所述去中心化应用进行持续集成与持续部署。
106.需要说明的是,在相关技术中,当已发布至公有云应用市场的私有化服务发生更新时,私有化服务的提供方需要向云服务商提供应用更新信息,以使云服务提供商在审核通过后,对在云应用市场的服务端上部署的云应用进行更新,导致更新效率变低、维护成本较高等。
107.而在以上示出的实施方式中,当已发布至公有云应用市场的私有化服务发生更新时,在私有化服务端上部署的与所述私有化服务对应的去中心化应用可以自动进行应用更新;进一步地,基于与所述去中心化应用的上线过程类似的过程,已订阅的相关域主体可以获知所述去中心化应用已发生更新,并对在所述公有云平台上部署的所述去中心化应用、为所述去中心化应用创建的服务实例自动进行适应性更新,在此不做赘述。通过以上方式,可以降低私有化服务提供方与云服务提供商针对已发布应用的维护成本,还可以提高更新效率和私有化服务提供方的自主管控力度。
108.通过以上技术方案可知,一方面,由于可以先将私有化服务转化为去中心化应用,再将所述去中心化应用发布至公有云平台,而去中心化应用可以按照统一的标准协议进行定义,因此在应用发布的过程中,私有化服务的提供方无需按照不同公有云平台的云应用市场的相关协议进行适配,有利于减少接入成本和运维成本,还可以快速实现私有化服务的对外输出。
109.另一方面,由于与私有化应用对应的去中心化应用可以部署在私有化服务端上,并且在私有化服务端上运行的第一服务管理程序可以指示在公有云平台上运行的第二服务管理程序在公有云平台上为所述去中心化应用创建服务实例,使得外部用户可以通过所述服务实例来调用所述去中心化应用,进而使能所述私有化服务,因此在将与私有化服务对应的去中心化应用发布至公有云平台之后,能够保证私有化服务的提供方对部署在私有化服务端上的私有化服务与去中心化应用的管控力度。
110.请参见图3,图3是一示例性的实施例示出的另一种应用发布方法的流程图。所述应用发布方法可以应用于如图1所示的第二服务管理程序。如图3所示,所述应用发布方法可以执行以下步骤:
111.步骤302:获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示;其中,所述私有化服务端上部署有待发布至所述公有云平台的私有化服务,以及与所述私有化服务对应的所述去中心化应用;所述服务实例用于面向用户提供所述私有化服务;所述去中心化应用的执行代码已存证至区块链上;
112.步骤304:响应于所述指示,在所述公有云平台上为所述去中心化应用创建服务实例。
113.在本说明书中,步骤302-步骤304的具体实现方式与所述步骤202-步骤206相似,在此不再赘述。
114.为了使本技术领域的人员更好地理解本说明书实施例中的技术方案,下面结合如图4和图5所示的多方交互图对本说明书中的实施例进行说明。请参见图4,图4是一示例性的实施例示出的一种应用发布过程的多方交互图。
115.如图4所示,运行在私有化服务端上的第一服务管理程序,可以生成与待发布至公有云平台的私有化服务对应的去中心化应用;第一服务管理程序可以在私有化服务端上部署与私有化服务对应的去中心化应用;第一服务管理程序可以调用区块链中部署的智能合约所包含的发布逻辑,生成与去中心化应用对应的发布事件;
116.进一步地,运行在公有云平台上的第二服务管理程序在获得与去中心化应用对应的发布事件之后,可以向第一服务管理程序发起的针对去中心化应用的部署请求,并获得第一服务管理程序返回的去中心化应用的安装包;第二服务管理程序可以调用区块链中部署的智能合约所包含的部署确认逻辑,确定获得的安装包与链上存证的安装包是否一致;如果一致,则第二服务管理程序可以在公有云平台上部署去中心化应用;第二服务管理程序可以为去中心化应用创建服务实例,并可以将服务实例注册至公有云平台的能力中心。
117.在将服务实例注册至能力中心之后,外部用户可以通过能力中心查看已注册的服务实例,还可以针对任意服务实例发起调用。
118.请参见图5,图5是一示例性的实施例示出的一种应用调用过程的多方交互图。
119.如图5所示,响应于用户针对服务实例的调用,第二服务管理程序可以先执行在公有云平台上部署的去中心化应用,以得到所述服务实例的调用结果;如果执行失败,则进一步向第一服务管理程序发起针对去中心化应用的远程调用请求;
120.进一步地,第一服务管理程序响应于针对去中心化应用的远程调用请求,可以执行在私有化服务端上部署的去中心化应用,以得到远程调用结果;第一服务管理程序可以将远程调用结果返回给第二服务管理程序,以及,第一服务管理程序可以异步地将远程调用结果存证至区块链;
121.第二服务管理程序可以响应于第一服务管理程序返回的远程调用结果,可以调用区块链中部署的智能合约所包含的调用结果确认逻辑,确定第一服务管理程序返回的远程调用结果与区块链中存储的远程调用结果是否一致;如果一致,则第二服务管理程序可以将远程调用结果作为针对服务实例的调用结果返回给用户。
122.与所述应用发布方法的实施例对应的,本说明书还提供了应用发布装置的实施例。
123.请参见图6,图6是一示例性的实施例示出的一种应用发布装置所在电子设备的硬件结构图。在硬件层面,该设备包括处理器602、内部总线604、网络接口606、内存608以及非易失性存储器610,当然还可能包括其他所需要的硬件。本说明书一个或多个实施例可以基于软件方式来实现,比如由处理器602从非易失性存储器610中读取对应的计算机程序到内存608中然后运行。当然,除了软件实现方式之外,本说明书一个或多个实施例并不排除其他实现方式,比如逻辑器件抑或软硬件结合的方式等等,也就是说以下处理流程的执行主
体并不限定于各个逻辑单元,也可以是硬件或逻辑器件。
124.请参见图7,图7是一示例性的实施例示出的一种应用发布装置的框图。该应用发布装置可以应用于如图6所示的电子设备中,以实现本说明书的技术方案。其中,所述应用发布装置700可以应用于在私有化服务端上运行的第一服务管理程序;所述私有化服务端上部署有待发布至公有云平台的私有化服务;所述应用发布装置700可以包括:
125.生成单元702,用于生成与所述私有化服务对应的去中心化应用;
126.第一部署单元704,用于在所述私有化服务端上部署所述去中心化应用;
127.指示单元706,用于响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述服务实例用于面向用户提供所述私有化服务。
128.在本实施例中,所述应用发布装置700还包括:
129.第一调用单元,用于接收所述第二服务管理程序响应于用户针对所述服务实例的调用而发起的针对所述去中心化应用的远程调用请求;其中,所述远程调用请求携带有所述用户针对所述服务实例提交的输入参数;
130.第一执行单元,用于响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用,以得到与所述远程调用请求对应的远程调用结果;
131.所述第一调用单元,还用于将所述远程调用结果返回给所述第二服务管理程序,以使所述第二服务管理程序进一步将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。
132.在本实施例中,所述第一执行单元,具体用于:
133.响应于所述远程调用请求,将所述输入参数作为调用参数,调用在所述私有化服务端上部署的与所述去中心化应用对应的所述私有化服务;
134.获得所述私有化服务返回的服务调用结果,并将所述服务调用结果作为与所述远程调用请求对应的远程调用结果。
135.在本实施例中,所述私有化服务端上部署有用于生成去中心化应用的转换插件;
136.所述生成单元702,具体用于:
137.获得所述私有化服务的提供方上传的应用配置信息;
138.根据所述应用配置信息,利用所述转换插件生成与所述私有化服务对应的所述去中心化应用。
139.在本实施例中,所述第一服务管理程序和所述第二服务管理程序作为区块链节点加入了区块链;所述区块链中部署有用于管理去中心化应用的智能合约;
140.所述指示单元706,具体用于:
141.响应于所述去中心化应用在所述私有化服务端上部署完成,调用所述区块链中部署的智能合约所包含的发布逻辑,生成与所述去中心化应用对应的发布事件;其中,所述发布事件包含所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息;所述源代码文件至少包括所述去中心化应用的执行代码;
142.将生成的所述发布事件存储至所述区块链,以使所述第二服务管理程序获得所述
发布事件。
143.在本实施例中,所述第一部署单元704还用于:
144.接收所述第二服务管理程序发起的针对所述去中心化应用的部署请求;
145.响应于所述部署请求,向所述第二服务管理程序返回所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息,以使所述第二服务管理程序基于所述源代码文件和所述应用配置信息在所述公有云平台上部署所述去中心化应用。
146.在本实施例中,所述应用发布装置700还包括:
147.调用结果存证单元,用于响应于与所述远程调用请求对应的远程调用结果,调用所述区块链中部署的智能合约所包含的调用结果存证逻辑,将所述远程调用结果存储至所述区块链。
148.在本实施例中,所述私有化服务端上集成了ci/di运行环境;
149.所述应用发布装置700还包括更新单元,用于:
150.获得所述私有化服务的提供方上传的应用更新信息;
151.根据所述应用更新信息,对与所述私有化服务对应的所述去中心化应用进行持续集成与持续部署。
152.在本实施例中,所述私有化服务端为私有云平台;所述公有云平台为公有云应用市场。
153.在本实施例中,所述去中心化应用与所述私有化服务为一对多的对应关系。
154.请参见图8,图8是一示例性的实施例示出的一种应用发布装置的框图。该应用发布装置可以应用于如图6所示的电子设备中,以实现本说明书的技术方案。其中,所述应用发布装置800可以应用于在公有云平台上运行的第二服务管理程序;所述应用发布装置800可以包括:
155.获得单元802,用于获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示;其中,所述私有化服务端上部署有待发布至所述公有云平台的私有化服务,以及与所述私有化服务对应的所述去中心化应用;所述去中心化应用的执行代码已存证至区块链上;所述服务实例用于面向用户提供所述私有化服务;
156.创建单元804,用于响应于所述指示,在所述公有云平台上为所述去中心化应用创建服务实例。
157.在本实施例中,所述应用发布装置800还包括第二调用单元,用于:
158.响应于用户针对所述服务实例的调用,向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求;其中,所述远程调用请求携带有所述用户针对所述服务实例提交的输入参数;
159.获得所述第一服务管理程序返回的与所述远程调用请求对应的远程调用结果,并将所述远程调用结果作为所述服务实例的调用结果返回给所述用户;其中,所述远程调用结果为所述第一服务管理程序响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用而得到的。
160.在本实施例中,所述公有云平台上部署有所述去中心化应用;
161.所述应用发布装置800还包括第二执行单元,用于:
162.基于所述输入参数执行在所述公有云平台上部署的所述去中心化应用,以得到所
述服务实例的调用结果;
163.如果执行成功,则所述第二执行单元将执行结果作为所述服务实例的调用结果返回给所述用户;
164.如果执行失败,则所述第二调用单元向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求。
165.在本实施例中,所述第一服务管理程序和所述第二服务管理程序作为区块链节点加入了区块链;所述区块链中部署有用于管理去中心化应用的智能合约;
166.所述获得单元802,具体用于:
167.从区块链中获得与所述去中心化应用对应的发布事件;其中,所述发布事件为所述第一服务管理程序响应于所述去中心化应用在所述私有化服务端上部署完成,调用所述区块链中部署的智能合约所包含的发布逻辑而生成并存储至所述区块链的;所述发布事件包含所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息。
168.在本实施例中,所述应用发布装置800还包括第二部署单元,用于:
169.向所述第一服务管理程序发起针对去中心化应用的部署请求;
170.获得所述第一服务管理程序响应于所述部署请求返回的所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息;
171.基于所述源代码文件和所述应用配置信息,在所述公有云平台上部署所述去中心化应用。
172.在本实施例中,所述第二部署单元,还用于:
173.确定获得的源代码文件与所述发布事件中包含的源代码文件是否一致,以及确定获得的应用配置信息与所述发布事件中包含的应用配置信息是否一致;
174.如果均一致,则进一步基于所述源代码文件和所述应用配置信息,在所述公有云平台上部署所述去中心化应用。
175.在本实施例中,所述应用发布装置800还包括调用结果确认单元,用于:
176.响应于所述远程调用结果,调用所述区块链中部署的智能合约所包含的调用结果确认逻辑,确定所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果是否一致;
177.如果所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果一致,则所述第二调用单元将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。
178.在本实施例中,所述应用发布装置800还包括:
179.计费单元,用于调用所述区块链中部署的智能合约所包含的计费合约,根据所述第二服务管理程序针对所述去中心化应用的调用记录,获得与所述去中心化应用对应的费用信息。
180.在本实施例中,所述应用发布装置800还包括:
181.注册单元,用于响应于所述服务实例创建完成,将所述服务实例注册至所述公有云平台的能力中心,以使所述能力中心为所述服务实例生成对外开放的sdk。
182.在本实施例中,所述私有化服务端为私有云平台;所述公有云平台为公有云应用市场。
183.上述装置中各个单元的功能和作用的实现过程具体详见上述方法中对应步骤的实现过程,在此不再赘述。
184.对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例只是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
185.上述实施例阐明的系统、装置、模块或单元,具体可以由计算机芯片或实体实现,或者由具有某种功能的产品来实现。一种典型的实现设备为计算机,计算机的具体形式可以是个人计算机、膝上型计算机、蜂窝电话、相机电话、智能电话、个人数字助理、媒体播放器、导航设备、电子邮件收发设备、游戏控制台、平板计算机、可穿戴设备或者这些设备中的任意几种设备的组合。
186.在一个典型的配置中,计算机包括一个或多个处理器(cpu)、输入/输出接口、网络接口和内存。
187.内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(ram)和/或非易失性内存等形式,如只读存储器(rom)或闪存(flash ram)。内存是计算机可读介质的示例。
188.计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(pram)、静态随机存取存储器(sram)、动态随机存取存储器(dram)、其他类型的随机存取存储器(ram)、只读存储器(rom)、电可擦除可编程只读存储器(eeprom)、快闪记忆体或其他内存技术、只读光盘只读存储器(cd-rom)、数字多功能光盘(dvd)或其他光学存储、磁盒式磁带、磁盘存储、量子存储器、基于石墨烯的存储介质或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。按照本文中的界定,计算机可读介质不包括暂存电脑可读媒体(transitory media),如调制的数据信号和载波。
189.本技术所涉及的用户信息(包括但不限于用户设备信息、用户个人信息等)和数据(包括但不限于用于分析的数据、存储的数据、展示的数据等),均为经用户授权或者经过各方充分授权的信息和数据,并且相关数据的收集、使用和处理需要遵守相关国家和地区的相关法律法规和标准,并提供有相应的操作入口,供用户选择授权或者拒绝。
190.还需要说明的是,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、商品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、商品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、商品或者设备中还存在另外的相同要素。
191.上述对本说明书特定实施例进行了描述。其它实施例在所附权利要求书的范围内。在一些情况下,在权利要求书中记载的动作或步骤可以按照不同于实施例中的顺序来执行并且仍然可以实现期望的结果。另外,在附图中描绘的过程不一定要求示出的特定顺
序或者连续顺序才能实现期望的结果。在某些实施方式中,多任务处理和并行处理也是可以的或者可能是有利的。
192.在本说明书一个或多个实施例中使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书一个或多个实施例。在本说明书一个或多个实施例和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
193.应当理解,尽管在本说明书一个或多个实施例可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书一个或多个实施例范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在
……
时”或“当
……
时”或“响应于确定”。
194.以上所述仅为本说明书一个或多个实施例的较佳实施例而已,并不用以限制本说明书一个或多个实施例,凡在本说明书一个或多个实施例的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书一个或多个实施例保护的范围之内。
技术特征:
1.一种基于区块链的应用发布方法,应用于在私有化服务端上运行的第一服务管理程序;所述私有化服务端上部署有待发布至公有云平台的私有化服务;所述方法包括:生成与所述私有化服务对应的去中心化应用;在所述私有化服务端上部署所述去中心化应用;响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述服务实例用于面向用户提供所述私有化服务。2.根据权利要求1所述的方法,所述方法还包括:接收所述第二服务管理程序响应于用户针对所述服务实例的调用而发起的针对所述去中心化应用的远程调用请求;其中,所述远程调用请求携带有所述用户针对所述服务实例提交的输入参数;响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用,以得到与所述远程调用请求对应的远程调用结果;将所述远程调用结果返回给所述第二服务管理程序,以使所述第二服务管理程序进一步将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。3.根据权利要求2所述的方法,所述响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用,以得到与所述远程调用请求对应的远程调用结果,包括:响应于所述远程调用请求,将所述输入参数作为调用参数,调用在所述私有化服务端上部署的与所述去中心化应用对应的所述私有化服务;获得所述私有化服务返回的服务调用结果,并将所述服务调用结果作为与所述远程调用请求对应的远程调用结果。4.根据权利要求1所述的方法,所述私有化服务端上部署有用于生成去中心化应用的转换插件;所述生成与所述私有化服务对应的去中心化应用,包括:获得所述私有化服务的提供方上传的应用配置信息;根据所述应用配置信息,利用所述转换插件生成与所述私有化服务对应的所述去中心化应用。5.根据权利要求2所述的方法,所述第一服务管理程序和所述第二服务管理程序作为区块链节点加入了区块链;所述区块链中部署有用于管理去中心化应用的智能合约;所述响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例,包括:响应于所述去中心化应用在所述私有化服务端上部署完成,调用所述区块链中部署的智能合约所包含的发布逻辑,生成与所述去中心化应用对应的发布事件;其中,所述发布事件包含所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息;所述源代码文件至少包括所述去中心化应用的执行代码;将生成的所述发布事件存储至所述区块链,以使所述第二服务管理程序获得所述发布
事件。6.根据权利要求5所述的方法,所述方法还包括:接收所述第二服务管理程序发起的针对所述去中心化应用的部署请求;响应于所述部署请求,向所述第二服务管理程序返回所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息,以使所述第二服务管理程序基于所述源代码文件和所述应用配置信息在所述公有云平台上部署所述去中心化应用。7.根据权利要求5所述的方法,所述方法还包括:响应于与所述远程调用请求对应的远程调用结果,调用所述区块链中部署的智能合约所包含的调用结果存证逻辑,将所述远程调用结果存储至所述区块链。8.根据权利要求1所述的方法,所述私有化服务端上集成了ci/di运行环境;所述方法还包括:获得所述私有化服务的提供方上传的应用更新信息;根据所述应用更新信息,对与所述私有化服务对应的所述去中心化应用进行持续集成与持续部署。9.根据权利要求1所述的方法,所述私有化服务端为私有云平台;所述公有云平台为公有云应用市场。10.根据权利要求1所述的方法,所述去中心化应用与所述私有化服务为一对多的对应关系。11.一种基于区块链的应用发布方法,应用于在公有云平台上运行的第二服务管理程序;所述方法包括:获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示;其中,所述私有化服务端上部署有待发布至所述公有云平台的私有化服务,以及与所述私有化服务对应的所述去中心化应用;所述去中心化应用的执行代码已存证至区块链上;所述服务实例用于面向用户提供所述私有化服务;响应于所述指示,在所述公有云平台上为所述去中心化应用创建服务实例。12.根据权利要求11所述的方法,所述方法还包括:响应于用户针对所述服务实例的调用,向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求;其中,所述远程调用请求携带有所述用户针对所述服务实例提交的输入参数;获得所述第一服务管理程序返回的与所述远程调用请求对应的远程调用结果,并将所述远程调用结果作为所述服务实例的调用结果返回给所述用户;其中,所述远程调用结果为所述第一服务管理程序响应于所述远程调用请求,基于所述输入参数执行在所述私有化服务端上部署的所述去中心化应用而得到的。13.根据权利要求12所述的方法,所述公有云平台上部署有所述去中心化应用;在向所述第一服务管理程序发起针对所述去中心化应用的远程调用请求之前,所述方法还包括:基于所述输入参数执行在所述公有云平台上部署的所述去中心化应用,以得到所述服务实例的调用结果;如果执行成功,则将执行结果作为所述服务实例的调用结果返回给所述用户;如果执行失败,则向所述第一服务管理程序发起针对所述去中心化应用的远程调用请
求。14.根据权利要求12所述的方法,所述第一服务管理程序和所述第二服务管理程序作为区块链节点加入了区块链;所述区块链中部署有用于管理去中心化应用的智能合约;所述获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示,包括:从区块链中获得与所述去中心化应用对应的发布事件;其中,所述发布事件为所述第一服务管理程序响应于所述去中心化应用在所述私有化服务端上部署完成,调用所述区块链中部署的智能合约所包含的发布逻辑而生成并存储至所述区块链的;所述发布事件包含所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息。15.根据权利要求14所述的方法,所述方法还包括:向所述第一服务管理程序发起针对去中心化应用的部署请求;获得所述第一服务管理程序响应于所述部署请求返回的所述去中心化应用的源代码文件和所述去中心化应用的应用配置信息;基于所述源代码文件和所述应用配置信息,在所述公有云平台上部署所述去中心化应用。16.根据权利要求15所述的方法,在基于所述源代码文件和所述应用配置信息,在所述公有云平台上部署所述去中心化应用之前,所述方法还包括:确定获得的源代码文件与所述发布事件中包含的源代码文件是否一致,以及确定获得的应用配置信息与所述发布事件中包含的应用配置信息是否一致;如果均一致,则进一步基于所述源代码文件和所述应用配置信息,在所述公有云平台上部署所述去中心化应用。17.根据权利要求14所述的方法,在将所述远程调用结果作为所述服务实例的调用结果返回给所述用户之前,所述方法还包括:响应于所述远程调用结果,调用所述区块链中部署的智能合约所包含的调用结果确认逻辑,确定所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果是否一致;如果所述第一服务管理程序返回的远程调用结果与所述区块链中存储的远程调用结果一致,则进一步将所述远程调用结果作为所述服务实例的调用结果返回给所述用户。18.根据权利要求14所述的方法,所述方法还包括:调用所述区块链中部署的智能合约所包含的计费合约,根据所述第二服务管理程序针对所述去中心化应用的调用记录,获得与所述去中心化应用对应的费用信息。19.根据权利要求11所述的方法,所述方法还包括:响应于所述服务实例创建完成,将所述服务实例注册至所述公有云平台的能力中心,以使所述能力中心为所述服务实例生成对外开放的sdk。20.根据权利要求11所述的方法,所述私有化服务端为私有云平台;所述公有云平台为公有云应用市场。21.一种基于区块链的应用发布装置,应用于在私有化服务端上运行的第一服务管理程序;所述私有化服务端上部署有待发布至公有云平台的私有化服务;所述装置包括:生成单元,用于生成与所述私有化服务对应的去中心化应用;
第一部署单元,用于在所述私有化服务端上部署所述去中心化应用;指示单元,用于响应于所述去中心化应用在所述私有化服务端上部署完成,将所述去中心化应用的执行代码存证至区块链上,并指示在所述公有云平台上运行的第二服务管理程序在所述公有云平台上为所述去中心化应用创建服务实例;其中,所述服务实例用于面向用户提供所述私有化服务。22.一种基于区块链的应用发布装置,应用于在公有云平台上运行的第二服务管理程序;所述装置包括:获得单元,用于获得在私有化服务端上运行的第一服务管理程序发起的为去中心化应用创建服务实例的指示;其中,所述私有化服务端上部署有待发布至所述公有云平台的私有化服务,以及与所述私有化服务对应的所述去中心化应用;所述服务实例用于面向用户提供所述私有化服务;所述去中心化应用的执行代码已存证至区块链上;创建单元,用于响应于所述指示,在所述公有云平台上为所述去中心化应用创建服务实例。23.一种电子设备,包括通信接口、处理器、存储器和总线,所述通信接口、所述处理器和所述存储器之间通过总线相互连接;所述存储器中存储机器可读指令,所述处理器通过调用所述机器可读指令,执行权利要求1-10或11-12任一项所述的方法。24.一种机器可读存储介质,所述机器可读存储介质存储有机器可读指令,所述机器可读指令在被处理器调用和执行时,实现权利要求1-10或11-12任一项所述的方法。
技术总结
本说明书一个或多个实施例提供一种基于区块链的应用发布方法、装置、电子设备及存储介质。在私有化服务端上运行有第一服务管理程序,在公有云平台上运行有第二服务管理程序;私有化服务端上部署有待发布至公有云平台的私有化服务;所述方法包括:第一服务管理程序生成与私有化服务对应的去中心化应用,并在私有化服务端上部署去中心化应用;响应于去中心化应用在私有化服务端上部署完成,第一服务管理程序将去中心化应用的执行代码存证至区块链上,并指示第二服务管理程序在公有云平台上为去中心化应用创建服务实例。通过以上方式,能够将私有化服务去中心化地发布至公有云平台,有利于减少私有化服务的接入成本和运维成本。本。本。
技术研发人员:魏亚文 王志伟 张志栋 李宏旭
受保护的技术使用者:蚂蚁区块链科技(上海)有限公司
技术研发日:2023.03.27
技术公布日:2023/8/5
版权声明
本文仅代表作者观点,不代表航空之家立场。
本文系作者授权航家号发表,未经原创作者书面授权,任何单位或个人不得引用、复制、转载、摘编、链接或以其他任何方式复制发表。任何单位或个人在获得书面授权使用航空之家内容时,须注明作者及来源 “航空之家”。如非法使用航空之家的部分或全部内容的,航空之家将依法追究其法律责任。(航空之家官方QQ:2926969996)
飞行汽车 https://www.autovtol.com/
上一篇:一种供水管网压力补偿装置的制作方法 下一篇:一种啮齿类实验动物固定装置
