CN113179329B - 服务发布方法及装置、服务器、存储介质 - Google Patents
服务发布方法及装置、服务器、存储介质 Download PDFInfo
- Publication number
- CN113179329B CN113179329B CN202110567460.2A CN202110567460A CN113179329B CN 113179329 B CN113179329 B CN 113179329B CN 202110567460 A CN202110567460 A CN 202110567460A CN 113179329 B CN113179329 B CN 113179329B
- Authority
- CN
- China
- Prior art keywords
- service
- services
- distributed
- sequence
- group
- 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
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/51—Discovery or management thereof, e.g. service location protocol [SLP] or web services
-
- Y—GENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
- Y02D10/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Abstract
本申请公开了一种服务发布方法及装置、服务器、存储介质,该方法包括:基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列;遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列;根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。采用本申请,可以提高服务发布效率。
Description
技术领域
本申请涉及互联网技术领域,尤其涉及一种服务发布方法及装置、服务器、存储介质。
背景技术
现有的服务发布方案主要是通过人工配置服务发布顺序,由于服务之间可能存在调用关系,人工配置可能会忽略其中比较隐蔽的调用关系,使得服务发布失败,从而需要重新调整服务发布顺序,使得服务发布效率低下。此外,传统方案往往通过串行发布的方式,没有充分利用服务之间的独立性,效率不高。
发明内容
本申请提供一种服务发布方法及装置、服务器、存储介质,可提高服务发布效率,适用性高。
第一方面,本申请提供了一种服务发布方法,包括:
基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列,其中,初始有向图中的多个顶点表示多个待发布服务,初始有向图中的边表示多个待发布服务中两个待发布服务之间的依赖关系;
遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列,其中,独立服务集合由初始有向图中没有入边的顶点组成;
根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。
结合第一方面,在一种可能的实施方式中,上述基于初始有向图确定多个待发布服务的初始串行发布序列,包括:
输出初始有向图中没有入边的第一顶点,并在初始有向图中删除第一顶点以及与第一顶点相连的边,将初始有向图的删除结果确定为第一有向图;
判断第一有向图中是否存在顶点,若存在,则输出第一有向图中没有入边的第二顶点,并在第一有向图中删除第二顶点以及与第二顶点相连的边,将第一有向图的删除结果确定为第一有向图;
根据各个顶点的输出顺序,确定各个顶点表示的各个待发布服务的初始发布顺序,根据初始发布顺序和各个待发布服务得到初始串行发布序列。
结合第一方面,在一种可能的实施方式中,上述根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,包括:
按照每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;
判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序;
根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序。
结合第一方面,在一种可能的实施方式中,上述每组待发布服务包括至少两个待发布服务;
上述根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序,包括:
若每组待发布服务中至少两个待发布服务之间不存在依赖关系,则确定每组待发布服务中各个待发布服务的组内发布顺序均为1。
结合第一方面,在一种可能的实施方式中,上述至少一组待发布服务包括至少两组待发布服务;
上述根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序,包括:
若至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则将第k+1组待发布服务中第i个待发布服务的组内发布顺序与m之间的和,确定为第i个待发布服务的目标发布顺序,其中,k为大于或者等于1的整数,第1组待发布服务中各个待发布服务的目标发布顺序为第1组待发布服务中各个待发布服务的组内发布顺序。
结合第一方面,在一种可能的实施方式中,上述基于多个待发布服务之间的依赖关系生成初始有向图之前,包括:
基于预设服务依赖配置信息,确定多个待发布服务之间的依赖关系。
结合第一方面,在一种可能的实施方式中,上述基于多个待发布服务之间的依赖关系生成初始有向图之前,包括:
通过全链路监控系统jaeger获取调用接口时的追踪信息span;
将追踪信息span传入分布式消息队到kafka中;
消费分布式消息队列kafka中的每个追踪信息span,得到每个span对应的服务和父span口,以及确定父span对应的服务;
根据每个span对应的服务和父span对应的服务得到每个span所代表的服务间依赖关系,服务间依赖关系包括多个待发布服务之间的依赖关系。
第二方面,本申请提供了一种服务发布装置,包括:
生成确定模块,用于基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列,其中,初始有向图中的多个顶点表示多个待发布服务,初始有向图中的边表示多个待发布服务中两个待发布服务之间的依赖关系;
遍历模块,用于遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列,其中,独立服务集合由初始有向图中没有入边的顶点组成;
确定发布模块,用于根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。
结合第二方面,在一种可能的实施方式中,上述生成确定模块包括:
输出删除单元,用于输出初始有向图中没有入边的第一顶点,并在初始有向图中删除第一顶点以及与第一顶点相连的边,将初始有向图的删除结果确定为第一有向图;
判断单元,用于判断第一有向图中是否存在顶点,若存在,则输出第一有向图中没有入边的第二顶点,并在第一有向图中删除第二顶点以及与第二顶点相连的边,将第一有向图的删除结果确定为第一有向图;
初始序列确定单元,用于根据各个顶点的输出顺序,确定各个顶点表示的各个待发布服务的初始发布顺序,根据初始发布顺序和各个待发布服务得到初始串行发布序列。
结合第二方面,在一种可能的实施方式中,上述确定发布模块包括:
获取单元,用于按照每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;
判断确定单元,用于判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序;
目标顺序确定单元,用于根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序。
结合第二方面,在一种可能的实施方式中,上述每组待发布服务包括至少两个待发布服务;
上述判断确定单元,用于:
若每组待发布服务中至少两个待发布服务之间不存在依赖关系,则确定每组待发布服务中各个待发布服务的组内发布顺序均为1。
结合第二方面,在一种可能的实施方式中,上述至少一组待发布服务包括至少两组待发布服务;
上述目标顺序确定单元,用于:
若至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则将第k+1组待发布服务中第i个待发布服务的组内发布顺序与m之间的和,确定为第i个待发布服务的目标发布顺序,其中,k为大于或者等于1的整数,第1组待发布服务中各个待发布服务的目标发布顺序为第1组待发布服务中各个待发布服务的组内发布顺序。
结合第二方面,在一种可能的实施方式中,上述装置还包括:
第一依赖关系确定模块,用于基于预设服务依赖配置信息,确定多个待发布服务之间的依赖关系。
结合第二方面,在一种可能的实施方式中,上述装置还包括:
第一依赖关系确定模块,用于通过全链路监控系统jaeger获取调用接口时的追踪信息span;
将追踪信息span传入分布式消息队到kafka中;
消费分布式消息队列kafka中的每个追踪信息span,得到每个span对应的服务和父span口,以及确定父span对应的服务;
根据每个span对应的服务和父span对应的服务得到每个span所代表的服务间依赖关系,服务间依赖关系包括多个待发布服务之间的依赖关系。
第三方面,本申请提供了一种服务器,包括处理器、存储器和收发器,上述处理器、存储器和收发器相互连接,其中,上述存储器用于存储支持上述服务发布装置执行上述服务发布方法的计算机程序,上述计算机程序包括程序指令;上述处理器被配置用于调用上述程序指令,执行如上述本申请第一方面中上述的服务发布方法。
第四方面,本申请提供了一种计算机可读存储介质,上述计算机可读存储介质存储有计算机程序,上述计算机程序包括程序指令;上述程序指令当被处理器执行时使上述处理器执行如本申请第一方面中上述的服务发布方法。
在本申请中,服务器基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列;遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列;根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。采用本申请,可以提高服务发布效率。
附图说明
为了更清楚地说明本申请的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本申请提供的服务发布方法的一流程示意图;
图2是本申请提供的初始有向图的示意图;
图3是本申请提供的根据初始有向图确定初始串行发布序列的流程示意图;
图4是本申请提供的服务发布方法的另一流程示意图;
图5是本申请提供的服务发布装置的结构示意图;
图6是本申请提供的服务器的结构示意图。
具体实施方式
下面将结合本申请中的附图,对本申请中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本申请保护的范围。
针对上述提出的服务发布效率低的问题,本申请提出一种服务发布方法,可通过由多个待发布服务之间的依赖关系所生成的有向图确定初始串行发布序列,遍历初始串行发布序列中各个待发布服务是否属于独立服务集合,并根据遍历结果得到至少一个发布序列,进而根据至少一个发布序列确定每个待发布服务的发布顺序,并基于发布顺序发布每个待发布服务,从而可提高服务发布效率。
为方便描述,下面将以服务器为执行主体,结合图1至图3对本申请提供的服务发布方法进行示例说明。
参见图1,是本申请提供的服务发布方法的一流程示意图。如图1所示,本申请提供的方法可包括如下步骤:
S101,基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列。
在一些可行的实施方式中,服务器在执行步骤S101之前,确定多个待发布服务之间的依赖关系。
在一可选实施例中,服务器可基于服务依赖配置信息,确定多个待发布服务之间的依赖关系。服务依赖配置信息包括但不限于服务依赖配置文件,该服务依赖配置文件包括多个待发布服务之间的依赖关系。
在另一可选实施例中,服务器可直接基于与多个待发布服务中的第一待发布服务相关联的源代码来确定第一待发布服务依赖于多个待发布服务中的哪些待发布服务,根据上述方式可得到多个待发布服务之间的依赖关系。
之后,服务器基于多个待发布服务之间的依赖关系生成初始有向图。其中,初始有向图中的多个顶点表示多个待发布服务,初始有向图中的边表示多个待发布服务中的两个待发布服务之间的依赖关系,具体来说,初始有向图中边有两端,即有箭头的一端和无箭头的一端,有箭头的一端所连接的待发布服务依赖于无箭头的一端所连接的待发布服务。
举例来说,待发布服务A、B、C、D、E、F和G,其中,A依赖B和C,B依赖C和D,C依赖E,D、E、F和G无依赖,则生成的初始有向图如图2所示,示例性的,C依赖E,对应图2中待发布服务E的顶点具有指向待发布服务C的顶点的边;F和G与A、B、C、D、E均不存在依赖关系,对应图2中的不具有边的待发布服务F的顶点和待发布服务G的顶点。
之后,服务器基于初始有向图,按照拓扑排序算法确定多个待发布服务的初始串行发布序列。
具体的,服务器输出初始有向图中没有入边的第一顶点,并在初始有向图中删除第一顶点以及与第一顶点相连的边,将初始有向图的删除结果确定为第一有向图;判断第一有向图中是否存在顶点,若存在,则输出第一有向图中没有入边的第二顶点,并在第一有向图中删除第二顶点以及与第二顶点相连的边,将第一有向图的删除结果确定为第一有向图;将各个顶点的输出顺序确定为各个顶点表示的各个待发布服务的初始发布顺序,根据初始发布顺序和各个待发布服务得到初始串行发布序列。
举例来说,如图3所示,初始有向图中没有入边的顶点分别为D、E、F和G,服务器随机从顶点D、E、F和G中选取顶点F,输出顶点F,并将初始有向图中的顶点F删除后得到第一有向图。在第一有向图中存在顶点的情况下,第一有向图中没有入边的顶点分别为D、E和G,服务器随机从顶点D、E和G中选取顶点G,输出顶点G,并将第一有向图中的顶点G删除后得到第一有向图。在第一有向图中存在顶点的情况下,第一有向图中没有入边的顶点分别为D和E,服务器随机从顶点D和E中选取顶点E,输出顶点E,并将第一有向图中的顶点E以及与顶点E相连的边删除后得到第一有向图。在第一有向图中存在顶点的情况下,第一有向图中没有入边的顶点分别为C和D,服务器随机从顶点C和D中选取顶点C,输出顶点C,并将第一有向图中的顶点C以及与顶点C相连的边删除后得到第一有向图。在第一有向图中存在顶点的情况下,服务器输出顶点D,并将第一有向图中的顶点D以及与顶点D相连的边删除后得到第一有向图。在第一有向图中存在顶点的情况下,服务器输出顶点B,并将第一有向图中的顶点B以及与顶点B相连的边删除后得到第一有向图。在第一有向图中存在顶点的情况下,服务器输出顶点A,并将第一有向图中的顶点A删除后得到第一有向图,此时第一有向图中已经不存在顶点。服务器将上述初始有向图中各个顶点的删除顺序确定为各个顶点表示的各个待发布服务的初始发布顺序,则得到待发布服务F、G、E、C、D、B和A的初始发布顺序分别为1、2、3、4、5、6和7,进而得到初始串行发布序列为{F,G,E,C,D,B,A}。
S102,遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列。
其中,独立服务集合由初始有向图中没有入边的顶点组成。
举例来说,初始串行发布序列为S0={F,G,E,C,D,B,A},图3所示的初始有向图中没有入边的顶点为D、E、F和G,则独立服务集合为T={F,G,E,D}。服务器遍历S0中的各个待发布服务,由于待发布服务F属于独立服务集合,则服务器根据待发布服务F创建第一发布序列S1={F};由于待发布服务G属于独立服务集合,则服务器根据待发布服务G创建第二发布序列S2={G};由于待发布服务E属于独立服务集合,则服务器根据待发布服务E创建第三发布序列S3={E};由于待发布服务C不属于独立服务集合,则服务器将待发布服务C加入待发布服务E所在的第三发布序列中后得到,S3={E,C};由于待发布服务D属于独立服务集合,则服务器根据待发布服务D创建第四发布序列S4={D};由于待发布服务B不属于独立服务集合,则服务器将待发布服务B加入待发布服务D所在的第四发布序列中后得到,S4={D,B};由于待发布服务A不属于独立服务集合,则服务器将待发布服务A加入待发布服务B所在的第四发布序列中后得到,S4={D,B,A}。因此,服务器根据初始串行发布序列S0的遍历结果得到S1,S2,S3和S4。
S103,根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。
在一些可行的实施方式中,服务器按照每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序;根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序。
具体的,若每组待发布服务中至少两个待发布服务之间不存在依赖关系,则服务器确定每组待发布服务中各个待发布服务的组内发布顺序均为1;若每组待发布服务中至少两个待发布服务之间存在依赖关系,则服务器按照先发布被依赖服务后发布依赖服务的发布顺序,确定每组待发布服务中各个待发布服务的组内发布顺序。需要说明的是,若每组待发布服务中仅包括一个待发布服务,则该待发布服务的组内发布顺序为1。进而,服务器根据上述方式可以得到每组待发布服务中各个待发布服务的组内发布顺序。若至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则服务器确定第k+1组待发布服务中第i个待发布服务的目标发布顺序为第i个待发布服务的组内发布顺序与m之间的和,其中,k为大于或者等于1的整数,第1组待发布服务中各个待发布服务的目标发布顺序为第1组待发布服务中各个待发布服务的组内发布顺序。
举例来说,假设根据初始串行发布序列S0={F,G,E,C,D,B,A}得到的第一发布序列S1={F},第二发布序列S2={G},第三发布序列S3={E,C},第四发布序列S4={D,B,A},待发布服务F在S1中的序号为1,待发布服务G在S2中的序号为1,待发布服务E和C在S3中的序号分别为1和2,待发布服务D,B,A在S4中的序号分别为1、2和3。服务器按照各个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取序号为1的待发布服务F,G,E和D,得到第1组待发布服务M1={F,G,E,D},获取序号为2的待发布服务C和B,得到第2组待发布服务M2={C,B},获取序号为3的待发布服务A,得到第3组待发布服务M3={A}。由于第1组待发布服务中F,G,E,D之间不存在依赖关系,则服务器确定F,G,E,D的组内发布顺序一致均为1,进而确定F,G,E,D的目标发布顺序一致均为1。由于第2组待发布服务中C和B之间存在依赖关系,且依赖关系为B依赖C,则服务器按照先发布被依赖服务后发布依赖服务的发布顺序,确定待发布服务B和C的组内发布顺序分别为2和1。由于第3组待发布服务中仅有待发布服务A,则服务器确定待发布服务A的组内发布顺序为1。之后,服务器根据第1组待发布服务中F,G,E,D的组内发布顺序中的最大目标发布顺序1与第2组待发布服务中B的组内发布顺序2的和,确定待发布服务B的目标发布顺序为3,并根据第1组待发布服务的最大目标发布顺序1与第2组待发布服务中C的组内发布顺序1之间的和,确定待发布服务C的目标发布顺序为2。服务器根据第2组待发布服务对应的最大目标发布顺序3与第3组待发布服务中A的组内发布顺序1之间的和,确定待发布服务A的目标发布顺序为4。之后,服务器先同时发布待发布服务F,G,E和D,在F,G,E和D发布完成后发布C,在C发布完成后发布B,在B发布完成后发布A。
在本申请中,在基于初始有向图和拓扑排序算法得到初始串行发布序列后,遍历初始串行发布序列中的待发布服务是否位于独立服务集合中,根据判断结果(即服务之间是否存在依赖关系)得到至少一个发布序列,判断至少一个发布序列中排序一致的至少一个待发布服务之间是否存在依赖关系,并根据判断结果确定至少一个发布序列中每个待发布服务的发布顺序,实现对至少一个发布序列中发布顺序一致的待发布服务的并行发布,相比现有技术中的串行发布方式,可提高服务的发布效率。此外,本实施例中,服务器在得到至少一个发布序列后,进一步判断至少一个发布序列中排序一致的待发布服务之间是否存在依赖关系,可提高服务发布的准确性。
请参见图4,是本申请提供的服务发布方法的另一流程示意图。如图4所示,本申请提供的方法可包括如下步骤:
S201,确定多个待发布服务之间的依赖关系。
在一可选实施例中,服务器部署了业务系统,该业务系统中部署了分布式全链路监控系统jaeger,因此,该服务器可以通过jaeger获取调用接口的追踪信息span。
需要说明的是,在接入了分布式全链路监控系统jaeger的业务系统中,发生接口调用请求时,会产生全局唯一的追踪标识trace ID,代表此次接口调用请求在jaeger中的唯一性,而接口调用请求过程中的组件进行处理时会产生一条追踪信息span,通过span ID来区分不同的span,这里的span会记录此次接口请求的全局追踪标识trace ID、当前的追踪标识spanID(即当次接口请求的追踪标识)、服务名、接口名、调用耗时等信息,如果是上游有其他的组件参与了本次调用,还会记录上游其他的组件调用的trace ID、span ID等信息。trace ID相同的span表示它们属于同一次接口调用请求中的不同调用处理。
服务器通过jaeger collector将追踪信息span传入分布式消息队列kafka中。服务器遍历所有span,获取span ID、service name(服务名)的映射关系,这个过程可以获得每个span对应的服务;以及遍历所有span,通过parent span id(t.lPparentID)查找service name,即确定父span对应的服务。针对新的数据流,按照parent+child进行分组。
服务器根据每个span对应的服务和父span对应的服务得到每个span所代表的服务间调用依赖关系。本申请实施例中,parent service name+child service name(即父span对应的服务的名称+子span对应的服务的名称)为一条边,表示一条服务依赖关系。根据上述方式,服务器可得到多个待发布服务之间的依赖关系。
可选的,从分布式消息队列kafka中消费到span时,可以考虑jaeger的span采集兼容分布式跟踪系统zipkin协议,为达到这个目的,本申请实施例会判断span中是否存在跟踪类别(spanKind)宇段,以处理zipkin在远程过程调用(Remote ProcedureCall,RPC)调用情况下,父子span ID相同的特殊场景,这种场景下,本申请实施例会以父span的服务名来更新子span的依赖关系,以子span的服务名(或者span ID)来更新依赖于此子span的所有span的依赖关系。
S202,基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列。
S203,遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列。
S204,根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。
这里,上述步骤S202至步骤S204所执行的实现方式可参见上述图1所示实施例中步骤S101至S103所提供的实现方式,在此不再赘述。
在本申请中,在基于初始有向图和拓扑排序算法得到初始串行发布序列后,遍历初始串行发布序列中的待发布服务是否位于独立服务集合中,根据判断结果得到至少一个发布序列,判断至少一个发布序列中排序一致的至少一个待发布服务之间是否存在依赖关系,并根据判断结果确定至少一个发布序列中每个待发布服务的发布顺序,实现对至少一个发布序列中发布顺序一致的待发布服务的并行发布,相比现有技术中的串行发布方式,可提高服务的发布效率。此外,本实施例中,服务器在得到至少一个发布序列后,进一步判断至少一个发布序列中排序一致的待发布服务之间是否存在依赖关系,可提高服务发布的准确性,在一定程度上解决了多服务(几十上百或者更多)发布的复杂度,可大大缩短发布时间,减少工作人员工作量,减少服务不可用的时间。
基于上述方法实施例的描述,本申请还提供了一种服务发布装置,该服务发布装置可以是上述方法实施例中的服务器。请参见图5,是本申请提供的一种服务发布装置的结构示意图。如图5所示,该服务发布装置5可以包括:生成确定模块51、遍历模块52和确定发布模块53。
生成确定模块51,用于基于多个待发布服务之间的依赖关系生成初始有向图,并基于所述初始有向图确定所述多个待发布服务的初始串行发布序列,其中,所述初始有向图中的多个顶点表示所述多个待发布服务,所述初始有向图中的边表示所述多个待发布服务中两个待发布服务之间的依赖关系;
遍历模块52,用于遍历所述初始串行发布序列中的待发布服务,若所述待发布服务属于独立服务集合,则根据所述待发布服务创建发布序列,若所述待发布服务不属于所述独立服务集合,则将所述待发布服务添加至所述待发布服务的前一个待发布服务所在的发布序列中,进而根据所述初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列,其中,所述独立服务集合由所述初始有向图中没有入边的顶点组成;
确定发布模块53,用于根据所述至少一个发布序列确定所述多个待发布服务中每个待发布服务的目标发布顺序,并基于所述目标发布顺序发布所述每个待发布服务。
在一些可行的实施方式中,上述生成确定模块51包括:
输出删除单元511,用于输出初始有向图中没有入边的第一顶点,并在初始有向图中删除第一顶点以及与第一顶点相连的边,将初始有向图的删除结果确定为第一有向图;
判断单元512,用于判断第一有向图中是否存在顶点,若存在,则输出第一有向图中没有入边的第二顶点,并在第一有向图中删除第二顶点以及与第二顶点相连的边,将第一有向图的删除结果确定为第一有向图;
初始序列确定单元513,用于根据各个顶点的输出顺序,确定各个顶点表示的各个待发布服务的初始发布顺序,根据初始发布顺序和各个待发布服务得到初始串行发布序列。
在一些可行的实施方式中,上述确定发布模块53包括:
获取单元531,用于按照每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;
判断确定单元532,用于判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序;
目标顺序确定单元533,用于根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序。
在一些可行的实施方式中,上述每组待发布服务包括至少两个待发布服务;
上述判断确定单元532,用于:
若每组待发布服务中至少两个待发布服务之间不存在依赖关系,则确定每组待发布服务中各个待发布服务的组内发布顺序均为1。
在一些可行的实施方式中,上述至少一组待发布服务包括至少两组待发布服务;
上述目标顺序确定单元533,用于:
若至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则将第k+1组待发布服务中第i个待发布服务的组内发布顺序与m之间的和,确定为第i个待发布服务的目标发布顺序,其中,k为大于或者等于1的整数,第1组待发布服务中各个待发布服务的目标发布顺序为第1组待发布服务中各个待发布服务的组内发布顺序。
在一些可行的实施方式中,上述装置还包括:
第一依赖关系确定模块54,用于基于预设服务依赖配置信息,确定多个待发布服务之间的依赖关系。
在一些可行的实施方式中,上述装置还包括:
第一依赖关系确定模块55,用于通过全链路监控系统jaeger获取调用接口时的追踪信息span;
将追踪信息span传入分布式消息队到kafka中;
消费分布式消息队列kafka中的每个追踪信息span,得到每个span对应的服务和父span口,以及确定父span对应的服务;
根据每个span对应的服务和父span对应的服务得到每个span所代表的服务间依赖关系,服务间依赖关系包括多个待发布服务之间的依赖关系。
可以理解的,该服务发布装置5用于实现图1和图4实施例中服务器所执行的步骤。关于图5的服务发布装置5包括的功能块的具体实现方式及相应的有益效果,可参考前述图1和图4的实施例的具体介绍,这里不赘述。
上述图5所示实施例中的服务发布装置5可以以图6所示的服务器600来实现。请参见图6,是本申请提供的一种服务器的结构示意图。如图6所示,上述服务器600可以包括:一个或多个处理器601、存储器602和收发器603。上述处理器601、存储器602和收发器603通过总线604连接。其中,上述收发器603用于接收或者发送数据,上述存储器602用于存储计算机程序,该计算机程序包括程序指令;处理器601用于执行存储器602存储的程序指令,执行如下操作:
基于多个待发布服务之间的依赖关系生成初始有向图,并基于初始有向图确定多个待发布服务的初始串行发布序列,其中,初始有向图中的多个顶点表示多个待发布服务,初始有向图中的边表示多个待发布服务中两个待发布服务之间的依赖关系;
遍历初始串行发布序列中的待发布服务,若待发布服务属于独立服务集合,则根据待发布服务创建发布序列,若待发布服务不属于独立服务集合,则将待发布服务添加至待发布服务的前一个待发布服务所在的发布序列中,进而根据初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列,其中,独立服务集合由初始有向图中没有入边的顶点组成;
根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,并基于目标发布顺序发布每个待发布服务。
在一些可行的实施方式中,上述处理器601在一种可能的实施方式中,上述基于初始有向图确定多个待发布服务的初始串行发布序列,包括:
输出初始有向图中没有入边的第一顶点,并在初始有向图中删除第一顶点以及与第一顶点相连的边,将初始有向图的删除结果确定为第一有向图;
判断第一有向图中是否存在顶点,若存在,则输出第一有向图中没有入边的第二顶点,并在第一有向图中删除第二顶点以及与第二顶点相连的边,将第一有向图的删除结果确定为第一有向图;
根据各个顶点的输出顺序,确定各个顶点表示的各个待发布服务的初始发布顺序,根据初始发布顺序和各个待发布服务得到初始串行发布序列。
在一些可行的实施方式中,上述处理器601根据至少一个发布序列确定多个待发布服务中每个待发布服务的目标发布顺序,包括:
按照每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;
判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序;
根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序。
在一些可行的实施方式中,上述每组待发布服务包括至少两个待发布服务;
上述处理器601根据每组待发布服务的判断结果确定每组待发布服务中各个待发布服务的组内发布顺序,包括:
若每组待发布服务中至少两个待发布服务之间不存在依赖关系,则确定每组待发布服务中各个待发布服务的组内发布顺序均为1。
在一些可行的实施方式中,上述至少一组待发布服务包括至少两组待发布服务;
上述处理器601根据每组待发布服务中各个待发布服务的组内发布顺序确定每个待发布服务的目标发布顺序,包括:
若至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则将第k+1组待发布服务中第i个待发布服务的组内发布顺序与m之间的和,确定为第i个待发布服务的目标发布顺序,其中,k为大于或者等于1的整数,第1组待发布服务中各个待发布服务的目标发布顺序为第1组待发布服务中各个待发布服务的组内发布顺序。
在一些可行的实施方式中,上述处理器601基于多个待发布服务之间的依赖关系生成初始有向图之前,包括:
基于预设服务依赖配置信息,确定多个待发布服务之间的依赖关系。
在一些可行的实施方式中,上述处理器601基于多个待发布服务之间的依赖关系生成初始有向图之前,包括:
通过全链路监控系统jaeger获取调用接口时的追踪信息span;
将追踪信息span传入分布式消息队到kafka中;
消费分布式消息队列kafka中的每个追踪信息span,得到每个span对应的服务和父span口,以及确定父span对应的服务;
根据每个span对应的服务和父span对应的服务得到每个span所代表的服务间依赖关系,服务间依赖关系包括多个待发布服务之间的依赖关系。
此外,这里需要指出的是:本申请还提供了一种计算机可读存储介质,且上述计算机可读存储介质中存储有前文提及的服务发布装置5所执行的计算机程序,且上述计算机程序包括程序指令,当上述处理器执行上述程序指令时,能够执行前文图1或图4对应实施例中对上述服务发布方法的描述,因此,这里将不再进行赘述。另外,对采用相同方法的有益效果描述,也不再进行赘述。对于本申请所涉及的计算机可读存储介质实施例中未披露的技术细节,请参照本申请方法实施例的描述。作为示例,程序指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行,分布在多个地点且通过通信网络互连的多个计算设备可以组成区块链系统。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,上述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,上述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
本申请提供的方法及相关装置是参照本申请提供的方法流程图和/或结构示意图来描述的,具体可由计算机程序指令实现方法流程图和/或结构示意图的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或结构示意一个方框或多个方框中指定的功能的步骤。
以上所揭露的仅为本申请较佳实施例而已,当然不能以此来限定本申请之权利范围,因此依本申请权利要求所作的等同变化,仍属本申请所涵盖的范围。
Claims (7)
1.一种服务发布方法,其特征在于,包括:
基于多个待发布服务之间的依赖关系生成初始有向图,并基于所述初始有向图确定所述多个待发布服务的初始串行发布序列,其中,所述初始有向图中的多个顶点表示所述多个待发布服务,所述初始有向图中的边表示所述多个待发布服务中两个待发布服务之间的依赖关系;
遍历所述初始串行发布序列中的待发布服务,若所述待发布服务属于独立服务集合,则根据所述待发布服务创建发布序列,若所述待发布服务不属于所述独立服务集合,则将所述待发布服务添加至所述待发布服务的前一个待发布服务所在的发布序列中,进而根据所述初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列,其中,所述独立服务集合由所述初始有向图中没有入边的顶点组成;
按照所述每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取所述至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;
判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,所述每组待发布服务包括至少两个待发布服务;若所述每组待发布服务中至少两个待发布服务之间不存在依赖关系,则确定所述每组待发布服务中各个待发布服务的组内发布顺序均为1;所述至少一组待发布服务包括至少两组待发布服务;
若所述至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则将第k+1组待发布服务中第i个待发布服务的组内发布顺序与所述m之间的和,确定为所述第i个待发布服务的目标发布顺序,并基于所述目标发布顺序发布所述每个待发布服务,其中,所述k为大于或者等于1的整数,所述第1组待发布服务中各个待发布服务的目标发布顺序为所述第1组待发布服务中各个待发布服务的组内发布顺序。
2.根据权利要求1所述的方法,其特征在于,所述基于所述初始有向图确定所述多个待发布服务的初始串行发布序列,包括:
输出所述初始有向图中没有入边的第一顶点,并在所述初始有向图中删除所述第一顶点以及与所述第一顶点相连的边,将所述初始有向图的删除结果确定为第一有向图;
判断所述第一有向图中是否存在顶点,若存在,则输出所述第一有向图中没有入边的第二顶点,并在所述第一有向图中删除所述第二顶点以及与所述第二顶点相连的边,将所述第一有向图的删除结果确定为所述第一有向图;
根据各个顶点的输出顺序,确定所述各个顶点表示的各个待发布服务的初始发布顺序,根据所述初始发布顺序和所述各个待发布服务得到所述初始串行发布序列。
3.根据权利要求1或2所述的方法,其特征在于,所述基于多个待发布服务之间的依赖关系生成初始有向图之前,包括:
基于预设服务依赖配置信息,确定所述多个待发布服务之间的依赖关系。
4.根据权利要求1或2所述的方法,其特征在于,所述基于多个待发布服务之间的依赖关系生成初始有向图之前,包括:
通过全链路监控系统jaeger获取调用接口时的追踪信息span;
将所述追踪信息span传入分布式消息队列kafka中;
消费所述分布式消息队列kafka中的每个追踪信息span,得到每个span对应的服务和父span口,以及确定所述父span对应的服务;
根据所述每个span对应的服务和所述父span对应的服务得到每个span所代表的服务间依赖关系,所述服务间依赖关系包括所述多个待发布服务之间的依赖关系。
5.一种服务发布装置,其特征在于,包括:
生成确定模块,用于基于多个待发布服务之间的依赖关系生成初始有向图,并基于所述初始有向图确定所述多个待发布服务的初始串行发布序列,其中,所述初始有向图中的多个顶点表示所述多个待发布服务,所述初始有向图中的边表示所述多个待发布服务中两个待发布服务之间的依赖关系;
遍历模块,用于遍历所述初始串行发布序列中的待发布服务,若所述待发布服务属于独立服务集合,则根据所述待发布服务创建发布序列,若所述待发布服务不属于所述独立服务集合,则将所述待发布服务添加至所述待发布服务的前一个待发布服务所在的发布序列中,进而根据所述初始串行发布序列中各个待发布服务的遍历结果得到至少一个发布序列,其中,所述独立服务集合由所述初始有向图中没有入边的顶点组成;
确定发布模块,用于按照所述每个待发布服务在其所在发布序列中从小到大的序号顺序,依次获取所述至少一个发布序列中序号一致的至少一个待发布服务,得到至少一组待发布服务;判断每组待发布服务中的至少一个待发布服务之间是否存在依赖关系,所述每组待发布服务包括至少两个待发布服务;若所述每组待发布服务中至少两个待发布服务之间不存在依赖关系,则确定所述每组待发布服务中各个待发布服务的组内发布顺序均为1;所述至少一组待发布服务包括至少两组待发布服务;若所述至少两组待发布服务的第k组待发布服务对应的最大目标发布顺序为m,则将第k+1组待发布服务中第i个待发布服务的组内发布顺序与所述m之间的和,确定为所述第i个待发布服务的目标发布顺序,并基于所述目标发布顺序发布所述每个待发布服务,其中,所述k为大于或者等于1的整数,所述第1组待发布服务中各个待发布服务的目标发布顺序为所述第1组待发布服务中各个待发布服务的组内发布顺序。
6.一种服务器,其特征在于,包括处理器、存储器和收发器,所述处理器、存储器和收发器相互连接,其中,所述收发器用于接收或发送数据,所述存储器用于存储程序代码,所述处理器用于调用所述程序代码,执行如权利要求1-4任一项所述的方法。
7.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机程序,所述计算机程序被处理器执行以实现权利要求1-4任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110567460.2A CN113179329B (zh) | 2021-05-24 | 2021-05-24 | 服务发布方法及装置、服务器、存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202110567460.2A CN113179329B (zh) | 2021-05-24 | 2021-05-24 | 服务发布方法及装置、服务器、存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN113179329A CN113179329A (zh) | 2021-07-27 |
CN113179329B true CN113179329B (zh) | 2023-07-18 |
Family
ID=76930004
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202110567460.2A Active CN113179329B (zh) | 2021-05-24 | 2021-05-24 | 服务发布方法及装置、服务器、存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN113179329B (zh) |
Families Citing this family (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN115396498A (zh) * | 2022-07-12 | 2022-11-25 | 青岛云天励飞科技有限公司 | 信息发布方法、装置、系统、电子设备及存储介质 |
CN117289951B (zh) * | 2023-11-22 | 2024-04-02 | 华信咨询设计研究院有限公司 | 一种基于递归原则的软件系统多应用自动部署方法 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109636304A (zh) * | 2018-10-29 | 2019-04-16 | 浙江口碑网络技术有限公司 | 业务系统的发布方法及装置、存储介质、电子装置 |
CN109787858A (zh) * | 2018-12-29 | 2019-05-21 | 福建天泉教育科技有限公司 | 一种批量发布服务的方法及终端 |
CN111913818A (zh) * | 2020-08-07 | 2020-11-10 | 平安科技(深圳)有限公司 | 一种确定服务间依赖关系的方法及相关装置 |
CN111930448A (zh) * | 2020-09-23 | 2020-11-13 | 南京梦饷网络科技有限公司 | 用于服务发布的方法、电子设备和存储介质 |
-
2021
- 2021-05-24 CN CN202110567460.2A patent/CN113179329B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109636304A (zh) * | 2018-10-29 | 2019-04-16 | 浙江口碑网络技术有限公司 | 业务系统的发布方法及装置、存储介质、电子装置 |
CN109787858A (zh) * | 2018-12-29 | 2019-05-21 | 福建天泉教育科技有限公司 | 一种批量发布服务的方法及终端 |
CN111913818A (zh) * | 2020-08-07 | 2020-11-10 | 平安科技(深圳)有限公司 | 一种确定服务间依赖关系的方法及相关装置 |
CN111930448A (zh) * | 2020-09-23 | 2020-11-13 | 南京梦饷网络科技有限公司 | 用于服务发布的方法、电子设备和存储介质 |
Also Published As
Publication number | Publication date |
---|---|
CN113179329A (zh) | 2021-07-27 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
US10747780B2 (en) | Blockchain-based data processing method and device | |
CN111142867B (zh) | 微服务架构下的服务可视化编排系统及方法 | |
CN113179329B (zh) | 服务发布方法及装置、服务器、存储介质 | |
US9189270B2 (en) | Realizing jumps in an executing process instance | |
JP6045134B2 (ja) | アプリケーション性能試験のための並列作業負荷シミュレーション | |
WO2018145559A1 (zh) | 持续集成流水线的生成方法和系统 | |
CN107729138B (zh) | 一种高性能分布式矢量空间数据的分析方法和装置 | |
CN107623731B (zh) | 一种任务调度方法、客户端、服务集群及系统 | |
CN107423893B (zh) | 一种业务流程的全覆盖测试方法和装置 | |
CN112348518B (zh) | 一种区块链交易证明的方法及装置 | |
CN110764839A (zh) | 一种业务处理流程配置方法、业务请求处理方法及装置 | |
CN111444077A (zh) | 一种生成流程节点测试数据的方法和装置 | |
CN106708822A (zh) | 一种文件存储方法和装置 | |
CN107273193A (zh) | 一种基于dag的面向多计算框架的数据处理方法及系统 | |
CN111435329A (zh) | 一种自动化测试方法和装置 | |
CN104636397B (zh) | 用于分布式计算的资源分配方法、计算加速方法以及装置 | |
CN109389271B (zh) | 应用性能管理方法及系统 | |
CN110083351B (zh) | 用于生成代码的方法和装置 | |
CN116012485A (zh) | 一种时序路径处理方法及装置、存储介质 | |
CN111160403B (zh) | 一种api接口复用发现的方法及装置 | |
CN112711588B (zh) | 多表连接的方法和装置 | |
CN114860566A (zh) | 源代码测试方法、装置、电子设备及存储介质 | |
CA3138141A1 (en) | Method and apparatus for allocating real-time storm tasks | |
CN113741868A (zh) | 业务计算任务处理方法、装置、计算机设备和存储介质 | |
CN113760836B (zh) | 一种宽表计算方法和装置 |
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 | ||
GR01 | Patent grant | ||
GR01 | Patent grant |