CN111240732B - 分布式微服务的发布方法、装置、设备及存储介质 - Google Patents
分布式微服务的发布方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111240732B CN111240732B CN202010051338.5A CN202010051338A CN111240732B CN 111240732 B CN111240732 B CN 111240732B CN 202010051338 A CN202010051338 A CN 202010051338A CN 111240732 B CN111240732 B CN 111240732B
- Authority
- CN
- China
- Prior art keywords
- node
- service
- target
- blockchain system
- file
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Computer Security & Cryptography (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本申请实施例公开了一种分布式微服务的发布方法、装置、终端及存储介质,属于微服务技术领域,由于本申请实施例能够响应于开发节点的发布请求,从开发节点中拷贝目标微服务文件,目标微服务文件用于支持目标微服务的调用;获取目标微服务文件中的配置文件和可执行文件;按照配置文件中的参数执行可执行文件,得到启动结果,启动结果用于指示目标微服务的运行状态;将启动结果同步至区块链***中,区块链***中的节点共享启动结果,开发节点属于区块链***。由于微服务能够发布在区块链***中,且区块链***中的节点共享该微服务的发布结果,因此,提高了微服务发布到区块链***中的效率,使得微服务具有较高的可用性。
Description
技术领域
本申请实施例涉及微服务技术领域,特别涉及一种分布式微服务的发布方法、装置、设备及存储介质。
背景技术
微服务是一种将软件拆分为若干个可以独立调用的服务的软件架构。由于能够提高软件的可用性,微服务在开发领域中得到广泛的应用。
在一种实现方式中,本领域技术人员在完成微服务的开发后,可以将微服务对应的文件直接发布到公共服务器中。公共服务器保存该文件,在使用者调用该微服务时,向使用者提供该微服务的调用接口。
发明内容
本申请实施例提供了一种分布式微服务的发布方法、装置、设备及存储介质。所述技术方案如下:
根据本申请的一方面内容,提供了一种分布式微服务的发布方法,所述方法包括:
响应于开发节点的发布请求,从所述开发节点中拷贝目标微服务文件,所述目标微服务文件用于支持目标微服务的调用;
获取所述目标微服务文件中的配置文件和可执行文件;
按照所述配置文件中的参数执行所述可执行文件,得到启动结果,所述启动结果用于指示所述目标微服务的运行状态;
将所述启动结果同步至区块链***中,所述区块链***中的节点共享所述启动结果,所述开发节点属于所述区块链***。
根据本申请的另一方面内容,提供了一种分布式微服务的发布装置,所述装置包括:
拷贝单元,用于响应于开发节点的发布请求,从所述开发节点中拷贝目标微服务文件,所述目标微服务文件用于支持目标微服务的调用;
获取单元,用于获取所述目标微服务文件中的配置文件和可执行文件;
执行单元,用于按照所述配置文件中的参数执行所述可执行文件,得到启动结果,所述启动结果用于指示所述目标微服务的运行状态;
同步单元,用于将所述启动结果同步至区块链***中,所述区块链***中的节点共享所述启动结果,所述开发节点属于所述区块链***。
根据本申请的另一方面内容,提供了一种终端,所述终端包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如本申请实施提供的分布式微服务的发布方法。
根据本申请的另一方面内容,提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如本申请实施提供的分布式微服务的发布方法。
本申请实施例提供的技术方案带来的有益效果可以包括:
由于本申请实施例能够响应于开发节点的发布请求,从开发节点中拷贝目标微服务文件,目标微服务文件用于支持目标微服务的调用;获取目标微服务文件中的配置文件和可执行文件;按照配置文件中的参数执行可执行文件,得到启动结果,启动结果用于指示目标微服务的运行状态;将启动结果同步至区块链***中,区块链***中的节点共享启动结果,开发节点属于区块链***。由于微服务能够发布在区块链***中,且区块链***中的节点共享该微服务的发布结果,因此,提高了微服务发布到区块链***中的效率,使得微服务具有较高的可用性。
附图说明
为了更清楚地介绍本申请实施例中的技术方案,下面将对本申请实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图。
图1是本申请实施例提供的区块链***100应用于区块链***的一个可选的结构示意图;
图2是本申请实施例提供的区块结构(英文:Block Structure)一个可选的示意图;
图3是本申请一个示例性实施例提供的一种设备的结构框图;
图4是本申请一个示例性实施例提供的一种分布式微服务的发布方法的流程图;
图5是本申请另一个示例性实施例提供的一种分布式微服务的发布方法流程图;
图6是本申请一个示例性实施例提供的一种分布式微服务的发布装置的结构框图。
具体实施方式
为使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请实施方式作进一步地详细描述。
下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本申请相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本申请的一些方面相一致的装置和方法的例子。
在本申请的描述中,需要理解的是,术语“第一”、“第二”等仅用于描述目的,而不能理解为指示或暗示相对重要性。在本申请的描述中,需要说明的是,除非另有明确的规定和限定,术语“相连”、“连接”应做广义理解,例如,可以是固定连接,也可以是可拆卸连接,或一体地连接;可以是机械连接,也可以是电连接;可以是直接相连,也可以通过中间媒介间接相连。对于本领域的普通技术人员而言,可以具体情况理解上述术语在本申请中的具体含义。此外,在本申请的描述中,除非另有说明,“多个”是指两个或两个以上。“和/或”,描述关联对象的关联关系,表示可以存在三种关系,例如,A和/或B,可以表示:单独存在A,同时存在A和B,单独存在B这三种情况。字符“/”一般表示前后关联对象是一种“或”的关系。
为了本申请实施例所示方案易于理解,下面对本申请实施例中出现的若干名词进行介绍。
微服务:是一种开发软件的架构,也可以是一种开发软件的组织方法。在本申请实施例中,软件由能够互相通信的小型独立服务组成。小型独立服务可以通过明确定义的API进行通信。可选地,其中的小型独立服务可以由不同的独立团队进行开发。微服务架构能够令软件(也即应用程序更易于拓展和开发),从而缩短软件的开发周期。
一种应用场景的比较中,以整体式架构的软件为例,通过比较的方法介绍微服务框架的应用优势。
通过整体式框架,软件中的所有进程紧密耦合,其中,每一个进程都可以作为单项服务运行。也即,如果软件的一个进程遇到需求峰值,则该软件必须拓展整个架构。随着软件的代码库的增长,向代码库中添加或改进整体式软件的功能较为复杂。该整体式框架的复杂性限制了试验的可行性,并使实施新功能较为困难。整体式框架增加了软件可用性的风险,因为许多依赖且机密耦合的进程会扩大进程故障的影响。
通过微服务框架,软件将由独立的组件构建。在该微服务框架中,每一个进程作为一项服务运行。上述服务可以使用轻量级API(英文:Application ProgrammingInterface,中文:应用程序接口)通过明确定义的接口进行通信。上述服务是围绕业务功能购将的范围。每一项服务可以执行一项功能。由于上述功能两两之间是独立运行的,因此各项服务可以独立进行更新、部署和拓展,以满足软件特定功能的需求。
在一种可能的应用场景中,本申请实施例中所示的分布式微服务的发布方法,应用在分布式***中。示意性的,该分布式***可以是区块链***。
本申请实施例涉及的***可以是由客户端、多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)通过网络通信的形式连接形成的分布式***。
以分布式***为区块链***为例,参见图1,图1是本申请实施例提供的分布式***100应用于区块链***的一个可选的结构示意图,由多个节点(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端形成,节点之间形成组成的点对点(P2P,Peer ToPeer)网络,P2P 协议是一个运行在传输控制协议(TCP,Transmission Control Protocol)协议之上的应用层协议。在分布式***中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作***层和应用层。
参见图1示出的区块链***中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链***中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链***中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币;
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链***中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(英文:Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链***中节点提交的记录数据。
参见图2,图2是本申请实施例提供的区块结构一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(英文:Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
在本申请实施例中,节点120还可以包括开发节点、测试节点、服务节点和计费节点。需要说明的是,本申请实施例还可以包括对微服务发布相关的其它节点。也即,在图1所示的区块链架构中,节点120中的任意一个,可以是开发节点、测试节点、服务节点或计费节点,本申请实施例对此不作限定。
请参考图3,图3是本申请一个示例性实施例提供的一种设备的结构框图,如图3所示,该设备300包括处理器320和存储器340,所述存储器340中存储有至少一条指令,所述指令由所述处理器320加载并执行以实现如本申请中的方法实施例所述的分布式微服务的发布方法。
处理器320可以包括一个或者多个处理核心。处理器320利用各种接口和线路连接整个设备100内的各个部分,通过运行或执行存储在存储器340内的指令、程序、代码集或指令集,以及调用存储在存储器340内的数据,执行设备100的各种功能和处理数据。可选的,处理器320可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器320可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作***、用户界面和应用程序等;GPU用于负责显示屏所需要显示的内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器320中,单独通过一块芯片进行实现。
存储器340可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory,ROM)。可选的,该存储器340包括非瞬时性计算机可读介质(non-transitory computer-readable storage medium)。存储器340可用于存储指令、程序、代码、代码集或指令集。存储器340可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作***的指令、用于至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等;存储数据区可存储下面各个方法实施例中涉及到的数据等。
请参考图4,图4是本申请一个示例性实施例提供的分布式微服务的发布方法的流程图。该分布式微服务的发布方法可以应用在上述图3所示的设备中。在一种可能的实现方式中,图4所示实施例可以应用在图1所示的任意一个节点中。在图4中,以该方法应用在服务节点为例进行说明,该分布式微服务的发布方法包括:
步骤410,响应于开发节点的发布请求,从开发节点中拷贝目标微服务文件,目标微服务文件用于支持目标微服务的调用。
在本申请实施例中,服务节点能够协助开发节点进行目标微服务的发布。可选地,开发节点完成目标微服务的开发后,可以向服务节点发送发布请求,服务节点响应该发布请求,从开发节点中拷贝目标微服务文件,该目标微服务文件能够支持目标微服务的调用。
步骤420,获取目标微服务文件中的配置文件和可执行文件。
示意性的,服务节点将获取目标微服务文件中的配置文件和可执行文件。由于本申请实施例中的目标微服务是发布在区块链***中的服务。因此,服务节点在获取目标微服务文件后,将获取其中的配置文件和可执行文件,为目标微服务后续被调用打下基础。
可选地,可执行文件可以包括可执行的二进制文件。配置文件可以包括基础配置文件和目录文件。
步骤430,按照配置文件中的参数执行可执行文件,得到启动结果,启动结果用于指示目标微服务的运行状态。
可选的,服务节点将获取配置文件中的参数,按照配置文件中提供的参数来执行可执行文件,执行后将获得启动结果。其中,该启动结果将用于指示目标微服务的运行状态。例如,启动结果用于指示目标微服务能够运行成功。或者,启动结果用于指示目标微服务运行失败。
可选地,启动结果可以是一个逻辑值,取值为0或1。其中,0可以表示目标微服务运行失败,1可以表示目标微服务运行成功。
一种可能的方式中,目标微服务的运行状态可以指示目标微服务能够被调用。
另一种可能的方式中,目标微服务的运行状态可以指示目标微服务还在准备中,不能够被调用。
又一种可能的方式中,目标微服务的运行状态可以指示目标微服务初始化失败,不能够被调用。
步骤440,将启动结果同步至区块链***中,区块链***中的节点共享启动结果,开发节点属于区块链***。
示意性的,本申请实施例中的服务节点能够将启动结果同步至区块链***中,该区块链***中包括服务节点和开发节点。在该区块链***中,节点共享启动结果。从另一个角度介绍,目标微服务的发布行为将在区块链***中被各个节点知晓且不能篡改,保障了微服务发布行为的可靠性。
示意性的,本申请公开的微服务的发布过程可以通过以下方式进行发布。在区块链***中,开发节点可以先读取区块链中的空闲设备ID,该空闲设备是用于支持服务节点的设备。开发节点根据该空闲设备ID,向该空闲设备发送发布请求。该空闲设备支持的服务节点从开发节点中拷贝目标微服务文件,该文件中包括配置文件和可执行文件,服务节点将按照配置文件中的参数执行可执行文件,得到启动结果,该启动结果用于指示目标微服务能否正常运行。此时,服务节点可以新建一个区块,以存储本次需要发布的微服务。
例如,若服务节点新建的区块是图2中的区块3,则区块3中的数据可以包括目标微服务文件和启动结果。其中,启动结果可以存储在txt文档文件或者xml可扩展标记语言文件中。在服务节点确定区块3本区块哈希后,服务节点可以将区块3中的数据、前一区块哈希(也即区块2的哈希)和本区块哈希进行打包。随后,服务节点将该区块在区块链***中广播。相应的,区块链***中的其它节点在对区块3验证成功时,确认将该区块3链入到区块链中。当区块3链入到区块链后,本申请中涉及的微服务成功发布。
综上所述,由于本申请实施例能够响应于开发节点的发布请求,从开发节点中拷贝目标微服务文件,目标微服务文件用于支持目标微服务的调用;获取目标微服务文件中的配置文件和可执行文件;按照配置文件中的参数执行可执行文件,得到启动结果,启动结果用于指示目标微服务的运行状态;将启动结果同步至区块链***中,区块链***中的节点共享启动结果,开发节点属于区块链***。由于微服务能够发布在区块链***中,且区块链***中的节点共享该微服务的发布结果,因此,提高了微服务发布到区块链***中的效率,使得微服务具有较高的可用性。
请参见图5,图5是本申请另一个示例性实施例提供的分布式微服务的发布方法流程图。该分布式微服务的发布方法可以应用在上述所示的终端中。在图5中,该分布式微服务的发布方法包括:
步骤511,响应于开发节点的发布请求,从开发节点中拷贝目标微服务文件。
步骤512,获取目标微服务文件中的配置文件和可执行文件。
步骤513,按照配置文件中的参数执行可执行文件,得到启动结果。
步骤514,将启动结果同步至区块链***中。
步骤511至步骤514的执行过程,和,步骤410至步骤440的执行过程相同,此处不再赘述。
步骤521,调用测试节点中的测试集合。
示意性的,服务节点能够调用测试节点中的测试集合。
步骤522,通过测试集合对目标微服务进行目标测试。
其中,目标测试用于测试目标微服务的指定性能。
示意性的,服务节点能够指示测试集合对目标微服务进行目标测试,该目标测试可以是根据目标微服务的类型确定的测试。
步骤523,获取目标测试对应的测试结果。
步骤524,将测试结果同步至区块链***。
步骤531,接收使用节点的试用请求。
其中,试用请求用于申请在无智能合约的情况下使用目标微服务。
步骤532,响应于试用请求,向使用节点提供目标微服务。
步骤533,记录使用节点试用目标微服务的使用记录。
步骤534,将使用记录同步至区块链***。
步骤541,接收使用节点的签约请求。
其中,签约请求用于申请签订使用合约,使用合约用于授予使用节点使用目标微服务的权限。
步骤542,响应于签约请求,制订对应的使用合约。
在一种可能的实施方式中,服务节点可以通过执行步骤5a和步骤5b来替换步骤542所示的制订使用合约的操作。
步骤5a,响应于签约请求,获取使用节点的签名和服务节点的签名。
步骤5b,将使用节点的签名和服务节点的签名加入使用合约中,获得完成制订的使用合约。
步骤543,将使用合约同步至区块链***。
步骤551,接收使用节点的调用请求。
步骤552,响应于调用请求符合使用合约的规定,向使用节点返回目标微服务的调用接口。
步骤553,响应于调用请求不符合使用合约的规定,向使用节点返回报错信息。
综上所述,本申请实施例提供的分布式微服务的发布方法,能够令目标微服务提供广泛的被调用能力,并且由于目标微服务发布在区块链***中,经过了公测和使用节点的试用,使得目标微服务的服务质量能够得到监督和保障。同时,由于目标微服务的服务计费是通过区块链和智能合约计费的。因此,合约信息对使用节点和开发节点双方透明,提高了付费微服务在履行合约上的公正性。
在本申请实施例提供的另一种应用场景中。该分布式微服务的发布方法可以应用在区块链中的节点中。该方法可以包括节点注册流程、微服务开发流程、微服务发布流程、微服务公测流程和使用者接入流程,详情请参见下述介绍:
在本申请实施例中,节点注册流程可以是本申请实施例的准备工作。个人用户或者企业用户通过执行节点注册流程获得区块链中的节点。详情可参见步骤(a1)和步骤(a2)。
步骤(a1),接收未注册设备发送的节点注册请求,所述节点注册请求用于申请注册成为目标区块链***中的节点。
可选地,没有目标处于区块链***的未注册设备,可以是终端,也可以是服务器。若未注册设备需要在目标区块链中执行相应的操作,则该未注册设备需要在目标区块链中注册成为节点。
一种可能的方式中,未注册设备能够注册的节点包括但不限于开发节点、测试节点、计费节点和服务节点。
步骤(a2),响应于所述节点注册请求,在所述目标区块链中将所述未注册设备注册成为所述节点。
可选的,注册成功的节点包括唯一的公钥ID和私钥密码。一种可能的方式中,该节点拥有对应的资金账户。
在本申请实施例中,未注册设备在经过节点注册流程后,成为目标区块链中的一个节点。此时,该节点参与目标区块链中的数据的更新变化过程。在本申请中,若该节点是开发节点,则该节点可以执行微服务开发流程。详情可参见步骤(b1)和步骤(b2)。
步骤(b1),通过开发节点对目标微服务进行开发。
示意性的,开发者在开发节点进行目标微服务进行开发,该发开过程将符合区块链网络的相关协议。
步骤(b2),对目标微服务进行功能测试。
一种可能的方式中,本申请实施例在开发节点中对目标微服务进行功能测试。
另一种可能的方式中,本申请实施例在测试节点中对目标微服务进行功能测试。
在本申请实施例中,目标微服务完成开发后,可以进行微服务发布流程。示意性的,微服务发布流程可以包括如下步骤:
步骤(c1),开发节点向服务部署节点发送发布请求。
在一种实现方式中,开发节点可以从区块链***中获取服务节点上空闲的设备ID,并向区块链***发起请求,该请求用于将目标微服务发布到区块链***中的一台设备ID上。
步骤(c2),响应于发布请求,服务部署节点获取目标微服务文件中的配置文件和可执行文件。
步骤(c3),按照所述配置文件中的参数执行所述可执行文件,得到启动结果,所述启动结果用于指示所述目标微服务的运行状态。
步骤(c4),将所述启动结果同步至区块链***中,所述区块链***中的节点共享所述启动结果,所述开发节点属于所述区块链***。
在一种可能的方式中,开发节点还能够将目标微服务的信息同步至区块链***中。其中,目标微服务的信息包括服务名称、开发者ID和服务详情。可选地,服务详情包括微服务的功能、微服务的收费标准和其他信息。
示意性的,开发节点还能够与提供服务器的节点之间签订智能合约。该智能合约可以约定目标微服务后续的自动扩容方案。可选地,智能合约还可以约定服务器的资源使用量的计费标准。其中,开发节点和提供服务器的节点双方以私钥签名后,将智能合约中的信息同步至区块链***中。
在本申请实施例中,当目标微服务完成微服务发布流程后,该目标微服务可以执行微服务公测流程。微服务公测流程介绍如下:
步骤(d1),在测试集合中对所述目标微服务进行公测。
示意性的,公开测试集合是目标微服务的类型对应的集合。例如,若目标微服务时排序类型的微服务,则公开测试集合能够测试该目标微服务排列各类数据的排序速率、资源消耗等。
步骤(d2),将公测结果写入区块链***中。
示意性的,执行公测的节点将公测结果写入到区块链***中。
作为一种可能的实现方式,公测结果可以按照指定周期更新至区块链***中。其中,上传过程和同步过程一致,均是由执行公测的节点将公测结果上传至区块链***中的任意一个节点,并由该节点将公测结果扩散至整个区块链***中。示意性的,区块链***中的节点可以收集指定时长内收到的公测结果的信息整合在一起,从而形成区块链***中的存储的区块结构,并扩散至整个区块链***。
当区块链***中的任意一个节点接收到其它节点发送的数据后,该节点将与自己存储的数据进行比较,从而确定出自身认可的数据,并将自身认可的数据发送至网络。每一个节点均执行相同的操作,从而形成整个区块链网络的扩散迭代,最终网络中的所有节点的数据信息达成一致,使得公测结果一致。
在本申请实施例中,当目标微服务完成微服务公测流程后,该目标微服务即可进行使用者接入流程,被使用者调用而提供服务。下面介绍使用者接入流程。
步骤(e1),接收使用节点发送的测试请求。
示意性的,使用者可以通过区块链***中的使用节点调用目标微服务。目标微服务向每一个使用者提供n次免费测试的机会,n为正整数。该测试可以令使用者对目标微服务的性能有直观的认知。
步骤(e2),响应于测试请求,向使用节点提供目标微服务。
步骤(e3),获取使用节点调用目标微服务的测试结果。
步骤(e4),将测试结果记录到区块链***中。
在本申请实施例中,当使用节点需要正式使用目标微服务时,使用节点将和目标微服务对应的开发节点之间签订智能合约。可选地,该智能合约中包括使用节点的ID和开发节点的ID。另一种可能的方式中,智能合约还可以包括服务条款和扣费方式等内容。示意性的,该智能合约在使用节点进行签名且开发节点进行签名后,该智能合约将被写入区块链***中。
在目标微服务被调用的过程中,使用节点将配置目标微服务ID和对应的智能合约ID。当使用节点完成配置后,使用节点在调用该目标微服务之前,将先检查智能合约以及智能合约的履行情况。
一种可能的方式中,当使用节点履行智能合约时,使用节点将获得目标微服务的调用接口。
另一种可能的方式中,当使用节点未履行智能合约时,使用节点将获得错误信息。
综上所述,本申请实施例提供的分布式微服务的发布方法,能够令目标微服务提供广泛的被调用能力,并且由于目标微服务发布在区块链***中,经过了公测和使用节点的试用,使得目标微服务的服务质量能够得到监督和保障。同时,由于目标微服务的服务计费是通过区块链和智能合约计费的。因此,合约信息对使用节点和开发节点双方透明,提高了付费微服务在履行合约上的公正性。
下述为本申请装置实施例,可以用于执行本申请方法实施例。对于本申请装置实施例中未披露的细节,请参照本申请方法实施例。
请参考图6,图6是本申请一个示例性实施例提供的一种分布式微服务的发布装置的结构框图。该分布式微服务的发布装置可以通过软件、硬件或者两者的结合实现成为设备的全部或一部分。该装置包括:
拷贝单元610,用于响应于开发节点的发布请求,从所述开发节点中拷贝目标微服务文件,所述目标微服务文件用于支持目标微服务的调用;
获取单元620,用于获取所述目标微服务文件中的配置文件和可执行文件;
执行单元630,用于按照所述配置文件中的参数执行所述可执行文件,得到启动结果,所述启动结果用于指示所述目标微服务的运行状态;
同步单元640,用于将所述启动结果同步至区块链***中,所述区块链***中的节点共享所述启动结果,所述开发节点属于所述区块链***。
在一个可选的实施例中,所述装置还包括第一调用单元、第一测试单元、第一获取单元和第一同步单元,所述第一调用单元,用于调用测试节点中的测试集合;所述第一测试单元,用于通过所述测试集合对所述目标微服务进行目标测试,所述目标测试用于测试所述目标微服务的指定性能;所述第一获取单元,用于获取所述目标测试对应的测试结果;所述第一同步单元,用于将所述测试结果同步至所述区块链***。
在一个可选的实施例中,所述装置还包括第一接收单元、第一提供单元、第一记录单元和第二同步单元。所述第一接收单元,用于接收使用节点的试用请求,所述试用请求用于申请在无智能合约的情况下使用所述目标微服务;所述第一提供单元,用于响应于所述试用请求,向所述使用节点提供所述目标微服务;所述第一记录单元,用于记录所述使用节点试用所述目标微服务的使用记录;所述第二同步单元,用于将所述使用记录同步至所述区块链***。
在一个可选的实施例中,所述装置还包括第二接收单元、合约制订单元和第三同步单元。所述第二接收单元,用于接收所述使用节点的签约请求,所述签约请求用于申请签订使用合约,所述使用合约用于授予所述使用节点使用所述目标微服务的权限;所述合约制订单元,用于响应于所述签约请求,制订对应的所述使用合约;所述第三同步单元,用于将所述使用合约同步至所述区块链***。
在一个可选的实施例中,所述合约制订单元,用于响应于所述签约请求,获取所述使用节点的签名和服务节点的签名;将所述使用节点的签名和所述服务节点的签名加入所述使用合约中,获得完成制订的所述使用合约。
在一个可选的实施例中,所述装置还包括第三接收单元、第一返回单元和第二返回单元。所述第三接收单元,用于接收所述使用节点的调用请求;所述第一返回单元,用于响应于所述调用请求符合所述使用合约的规定,向所述使用节点返回所述目标微服务的调用接口;所述第二返回单元,用于响应于所述调用请求不符合所述使用合约的规定,向所述使用节点返回报错信息。
在一个可选的实施例中,所述装置中涉及到的可执行文件是二进制文件。
综上所述,本申请实施例提供的分布式微服务的发布装置,能够令目标微服务提供广泛的被调用能力,并且由于目标微服务发布在区块链***中,经过了公测和使用节点的试用,使得目标微服务的服务质量能够得到监督和保障。同时,由于目标微服务的服务计费是通过区块链和智能合约计费的。因此,合约信息对使用节点和开发节点双方透明,提高了付费微服务在履行合约上的公正性。
本申请实施例还提供了一种计算机可读介质,该计算机可读介质存储有至少一条指令,所述至少一条指令由所述处理器加载并执行以实现如上各个实施例所述的分布式微服务的发布方法。
需要说明的是:上述实施例提供的分布式微服务的发布装置在执行分布式微服务的发布方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将设备的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的分布式微服务的发布装置与分布式微服务的发布方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。
上述本申请实施例序号仅仅为了描述,不代表实施例的优劣。
本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。
以上所述仅为本申请的能够实现的示例性的实施例,并不用以限制本申请,凡在本申请的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本申请的保护范围之内。
Claims (10)
1.一种分布式微服务的发布方法,其特征在于,所述方法包括:
响应于开发节点的发布请求,从所述开发节点中拷贝目标微服务文件,所述目标微服务文件用于支持目标微服务的调用;
获取所述目标微服务文件中的配置文件和可执行文件;
按照所述配置文件中的参数执行所述可执行文件,得到启动结果,所述启动结果用于指示所述目标微服务的运行状态;
将所述启动结果同步至区块链***中,所述区块链***中的节点共享所述启动结果,所述开发节点属于所述区块链***。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
调用测试节点中的测试集合;
通过所述测试集合对所述目标微服务进行目标测试,所述目标测试用于测试所述目标微服务的指定性能;
获取所述目标测试对应的测试结果;
将所述测试结果同步至所述区块链***。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
接收使用节点的试用请求,所述试用请求用于申请在无智能合约的情况下使用所述目标微服务;
响应于所述试用请求,向所述使用节点提供所述目标微服务;
记录所述使用节点试用所述目标微服务的使用记录;
将所述使用记录同步至所述区块链***。
4.根据权利要求3所述的方法,其特征在于,所述方法还包括:
接收所述使用节点的签约请求,所述签约请求用于申请签订使用合约,所述使用合约用于授予所述使用节点使用所述目标微服务的权限;
响应于所述签约请求,制订对应的所述使用合约;
将所述使用合约同步至所述区块链***。
5.根据权利要求4所述的方法,其特征在于,所述响应于所述签约请求,制订对应的所述使用合约,包括:
响应于所述签约请求,获取所述使用节点的签名和服务节点的签名;
将所述使用节点的签名和所述服务节点的签名加入所述使用合约中,获得完成制订的所述使用合约。
6.根据权利要求5所述的方法,其特征在于,所述方法还包括:
接收所述使用节点的调用请求;
响应于所述调用请求符合所述使用合约的规定,向所述使用节点返回所述目标微服务的调用接口;
响应于所述调用请求不符合所述使用合约的规定,向所述使用节点返回报错信息。
7.根据权利要求1至6任一所述的方法,其特征在于,所述可执行文件是二进制文件。
8.一种分布式微服务的发布装置,其特征在于,所述装置包括:
拷贝单元,用于响应于开发节点的发布请求,从所述开发节点中拷贝目标微服务文件,所述目标微服务文件用于支持目标微服务的调用;
获取单元,用于获取所述目标微服务文件中的配置文件和可执行文件;
执行单元,用于按照所述配置文件中的参数执行所述可执行文件,得到启动结果,所述启动结果用于指示所述目标微服务的运行状态;
同步单元,用于将所述启动结果同步至区块链***中,所述区块链***中的节点共享所述启动结果,所述开发节点属于所述区块链***。
9.一种分布式微服务的发布设备,其特征在于,所述设备包括处理器、和与所述处理器相连的存储器,以及存储在所述存储器上的程序指令,所述处理器执行所述程序指令时实现如权利要求1至7任一所述的分布式微服务的发布方法。
10.一种计算机可读存储介质,所述存储介质中存储有程序指令,其特征在于,所述程序指令被处理器执行时实现如权利要求1至7任一所述的分布式微服务的发布方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010051338.5A CN111240732B (zh) | 2020-01-17 | 2020-01-17 | 分布式微服务的发布方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010051338.5A CN111240732B (zh) | 2020-01-17 | 2020-01-17 | 分布式微服务的发布方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111240732A CN111240732A (zh) | 2020-06-05 |
CN111240732B true CN111240732B (zh) | 2021-05-14 |
Family
ID=70879481
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010051338.5A Active CN111240732B (zh) | 2020-01-17 | 2020-01-17 | 分布式微服务的发布方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111240732B (zh) |
Families Citing this family (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112506680A (zh) * | 2020-12-21 | 2021-03-16 | 清华大学深圳国际研究生院 | 去中心化服务生态***的数据处理方法 |
CN112685012A (zh) * | 2020-12-23 | 2021-04-20 | 平安普惠企业管理有限公司 | 基于区块链的微服务架构实现方法、装置、设备及介质 |
CN113014666B (zh) * | 2021-03-17 | 2023-02-28 | 深圳壹账通智能科技有限公司 | 一种区块链协议栈架构方法、***、设备及存储介质 |
CN112995345B (zh) * | 2021-05-07 | 2021-08-10 | 南京铉盈网络科技有限公司 | 一种去中心化的分布式服务方法、***及装置 |
CN113127499B (zh) * | 2021-05-13 | 2023-04-18 | 重庆新致金服信息技术有限公司 | 一种基于区块链的微服务方法、设备及介质 |
CN113254203B (zh) * | 2021-05-18 | 2024-05-24 | 百果园技术(新加坡)有限公司 | 服务降级处理方法及装置 |
CN113596157A (zh) * | 2021-07-30 | 2021-11-02 | 绿漫科技有限公司 | 一种基于SpringCloud的联盟链无感发布方法 |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981716A (zh) * | 2017-12-28 | 2019-07-05 | 北京奇虎科技有限公司 | 一种微服务调用方法及装置 |
EP3537286A1 (en) * | 2018-01-18 | 2019-09-11 | Sap Se | Configuration for application using microservices |
CN110233823A (zh) * | 2019-05-06 | 2019-09-13 | 深圳壹账通智能科技有限公司 | 区块链实现方法、***及存储介质 |
CN110554927A (zh) * | 2019-09-12 | 2019-12-10 | 北京笔新互联网科技有限公司 | 基于区块链的微服务调用方法 |
CN110602208A (zh) * | 2019-09-12 | 2019-12-20 | 北京笔新互联网科技有限公司 | 一种分布式微服务治理***及***的构建方法 |
-
2020
- 2020-01-17 CN CN202010051338.5A patent/CN111240732B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109981716A (zh) * | 2017-12-28 | 2019-07-05 | 北京奇虎科技有限公司 | 一种微服务调用方法及装置 |
EP3537286A1 (en) * | 2018-01-18 | 2019-09-11 | Sap Se | Configuration for application using microservices |
CN110233823A (zh) * | 2019-05-06 | 2019-09-13 | 深圳壹账通智能科技有限公司 | 区块链实现方法、***及存储介质 |
CN110554927A (zh) * | 2019-09-12 | 2019-12-10 | 北京笔新互联网科技有限公司 | 基于区块链的微服务调用方法 |
CN110602208A (zh) * | 2019-09-12 | 2019-12-20 | 北京笔新互联网科技有限公司 | 一种分布式微服务治理***及***的构建方法 |
Also Published As
Publication number | Publication date |
---|---|
CN111240732A (zh) | 2020-06-05 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111240732B (zh) | 分布式微服务的发布方法、装置、设备及存储介质 | |
JP7454616B2 (ja) | 分散型元帳におけるdagベースのトランザクション処理方法およびシステム | |
CN108989389B (zh) | 一种建立智能合约微服务化的方法 | |
CN112492006B (zh) | 一种基于区块链的节点管理方法和装置 | |
US20190172026A1 (en) | Cross blockchain secure transactions | |
CN108510389B (zh) | 基于区块链的智能合约调用方法、设备及可读存储介质 | |
CN109218079B (zh) | 一种区块链网络、部署方法及存储介质 | |
CN109146679A (zh) | 基于区块链的智能合约调用方法及装置、电子设备 | |
WO2019021792A1 (ja) | 運用管理方法、運用管理システム、および、運用管理プログラム | |
WO2020173499A1 (zh) | 基于公链的区块链子链创建方法及*** | |
CN110430248B (zh) | 基于云服务的区块链构建方法、装置、介质及电子设备 | |
CN110417857B (zh) | 区块链协议处理装置、处理方法及区块链 | |
CN111639309B (zh) | 一种数据处理方法、装置、节点设备及存储介质 | |
CN111737104A (zh) | 区块链网络服务平台及其测试用例共享方法、存储介质 | |
CN112288423A (zh) | 一种分布式框架的聚合支付方法和*** | |
CN114710507B (zh) | 一种共识方法、区块链节点、介质和共识节点 | |
WO2023185054A1 (zh) | 联盟链中部署链码的方法和*** | |
CN114971827A (zh) | 一种基于区块链的对账方法、装置、电子设备及存储介质 | |
CN116150260A (zh) | 区块链***的数据处理方法、装置、介质及电子设备 | |
WO2023005500A1 (zh) | 跨链交易处理方法、装置、电子设备以及存储介质 | |
CN115099815A (zh) | 一种数据核验方法和区块链节点 | |
CN114936094A (zh) | 在区块链中执行交易的方法、区块链的主节点和从节点 | |
CN111311415A (zh) | 松散耦合的区块链交易方法、交易节点 | |
CN114936092A (zh) | 在区块链中执行交易的方法及区块链的主节点 | |
WO2021201827A1 (en) | Method and apparatus maintaining private data with consortium blockchain |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40024189 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |