CN111930448B - 用于服务发布的方法、电子设备和存储介质 - Google Patents
用于服务发布的方法、电子设备和存储介质 Download PDFInfo
- Publication number
- CN111930448B CN111930448B CN202011005974.0A CN202011005974A CN111930448B CN 111930448 B CN111930448 B CN 111930448B CN 202011005974 A CN202011005974 A CN 202011005974A CN 111930448 B CN111930448 B CN 111930448B
- Authority
- CN
- China
- Prior art keywords
- service
- services
- publishing
- nodes
- determined
- 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
- 238000000034 method Methods 0.000 title claims abstract description 43
- 238000003860 storage Methods 0.000 title claims abstract description 21
- 238000009826 distribution Methods 0.000 title description 6
- 230000001419 dependent effect Effects 0.000 claims description 8
- 239000000126 substance Substances 0.000 claims 1
- 230000010365 information processing Effects 0.000 abstract description 3
- 238000010586 diagram Methods 0.000 description 21
- 238000012545 processing Methods 0.000 description 17
- 238000004590 computer program Methods 0.000 description 9
- 230000006870 function Effects 0.000 description 9
- 230000008569 process Effects 0.000 description 5
- 230000005540 biological transmission Effects 0.000 description 4
- 238000004891 communication Methods 0.000 description 4
- 230000003287 optical effect Effects 0.000 description 3
- 239000000835 fiber Substances 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 230000001902 propagating effect Effects 0.000 description 2
- 230000004044 response Effects 0.000 description 2
- RYGMFSIKBFXOCR-UHFFFAOYSA-N Copper Chemical compound [Cu] RYGMFSIKBFXOCR-UHFFFAOYSA-N 0.000 description 1
- 238000013459 approach Methods 0.000 description 1
- 238000003491 array Methods 0.000 description 1
- 238000010276 construction Methods 0.000 description 1
- 229910052802 copper Inorganic materials 0.000 description 1
- 239000010949 copper Substances 0.000 description 1
- 238000007689 inspection Methods 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005096 rolling process Methods 0.000 description 1
- 239000004065 semiconductor Substances 0.000 description 1
- 230000003068 static effect Effects 0.000 description 1
Images
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/44—Arrangements for executing specific programs
- G06F9/448—Execution paradigms, e.g. implementations of programming paradigms
- G06F9/4482—Procedural
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/901—Indexing; Data structures therefor; Storage structures
- G06F16/9024—Graphs; Linked lists
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Debugging And Monitoring (AREA)
Abstract
本公开的实施例涉及用于服务发布的方法、电子设备和计算机存储介质,涉及信息处理领域。根据该方法,确定待发布的多个服务之间的依赖关系;基于依赖关系,生成有向图;在有向图中检测环;如果确定检测到环,则提示服务依赖异常;如果确定未检测到环,则:基于有向图,生成服务发布序列,服务发布序列中的元素包括多个服务中相互独立的至少两个服务,服务发布序列中的在后元素中包括的服务依赖于服务发布序列中的在前元素中包括的服务;以及先发布在前元素中包括的服务,后发布在后元素中包括的服务,以及并行发布相同元素中包括的至少两个服务。由此,能够检测待发布的多个服务之间是否存在依赖异常并且能够实现独立服务的并行发布,提高效率。
Description
技术领域
本公开的实施例总体涉及信息处理领域,具体涉及用于服务发布的方法、电子设备和计算机存储介质。
背景技术
传统上,在发布多个服务时,往往通过人工配置服务发布顺序一个服务接着一个服务发布,这导致服务发布的效率低下。由于服务之间可能存在调用关系,因此服务发布顺序的人工配置容易出错。此外,服务发布完成后,每次通过人工去检查发布的结果,费时费力。随着用于服务的业务节点的数量增加,这种人工发布方式往往会占用大量时间。
发明内容
提供了一种用于服务发布的方法、电子设备以及计算机存储介质,能够检测待发布的多个服务之间是否存在依赖异常并且能够实现独立服务的并行发布,提高服务发布的效率。
根据本公开的第一方面,提供了一种用于服务发布的方法。该方法包括:确定待发布的多个服务之间的依赖关系;基于依赖关系,生成有向图,有向图中的多个顶点表示多个服务,有向图中的边表示多个服务中的两个服务之间的依赖关系;在有向图中检测环;如果确定在有向图中检测到环,则提示服务依赖异常;如果确定在有向图中未检测到环,则:基于有向图,生成服务发布序列,服务发布序列中的元素包括多个服务中相互独立的至少两个服务,服务发布序列中的在后元素中包括的服务依赖于服务发布序列中的在前元素中包括的服务;以及基于服务发布序列,发布多个服务,其中发布多个服务包括先发布服务发布序列中的在前元素中包括的服务,后发布服务发布序列中的在后元素中包括的服务,以及并行发布服务发布序列中的相同元素中包括的至少两个服务。
根据本公开的第二方面,提供了一种电子设备。该电子设备包括:至少一个处理器,以及与至少一个处理器通信连接的存储器,其中,存储器存储有可被至少一个处理器执行的指令,指令被至少一个处理器执行,以使至少一个处理器能够执行根据第一方面所述的方法。
在本公开的第三方面中,提供了一种计算机可读存储介质,其上存储有计算机程序,该程序被处理器执行时实现根据本公开的第一方面的方法。
应当理解,本部分所描述的内容并非旨在标识本公开的实施例的关键或重要特征,也不用于限制本公开的范围。本公开的其它特征将通过以下的说明书而变得容易理解。
附图说明
结合附图并参考以下详细说明,本公开各实施例的上述和其他特征、优点及方面将变得更加明显。在附图中,相同或相似的附图标注表示相同或相似的元素。
图1是根据本公开的实施例的信息处理环境100的示意图。
图2是根据本公开的实施例的用于服务发布的方法200的示意图。
图3是根据本公开的实施例的用于发布多个服务的方法300的示意图。
图4是根据本公开的实施例的用于向第一业务节点发布第一服务的方法400的示意图。
图5是根据本公开的实施例的有向图500的示意图。
图6是用来实现本公开实施例的用于服务发布的方法的电子设备的框图。
具体实施方式
以下结合附图对本公开的示范性实施例做出说明,其中包括本公开实施例的各种细节以助于理解,应当将它们认为仅仅是示范性的。因此,本领域普通技术人员应当认识到,可以对这里描述的实施例做出各种改变和修改,而不会背离本公开的范围和精神。同样,为了清楚和简明,以下的描述中省略了对公知功能和结构的描述。
在本文中使用的术语“包括”及其变形表示开放性包括,即“包括但不限于”。除非特别申明,术语“或”表示“和/或”。术语“基于”表示“至少部分地基于”。术语“一个示例实施例”和“一个实施例”表示“至少一个示例实施例”。术语“另一实施例”表示“至少一个另外的实施例”。术语“第一”、“第二”等等可以指代不同的或相同的对象。下文还可能包括其他明确的和隐含的定义。
如上所述,传统方案通过人工配置服务发布顺序,由于服务之间可能存在调用关系,人工配置可能会忽略其中比较隐蔽的调用关系,使得服务发布失败,从而需要重新调整服务发布顺序,使得服务发布效率低下。此外,传统方案往往通过串行发布的方式,没有充分利用服务之间的独立性,效率不高。服务发布后的人工检查也比较费时费力。
为了至少部分地解决上述问题以及其他潜在问题中的一个或者多个,本公开的示例实施例提出了一种用于服务发布的方案。在该方案中,服务器确定待发布的多个服务之间的依赖关系。随后,服务器基于依赖关系,生成有向图,有向图中的多个顶点表示多个服务,有向图中的边表示多个服务中的两个服务之间的依赖关系。服务器在有向图中检测环。如果服务器确定在有向图中检测到环,则提示服务依赖异常;如果服务器确定在有向图中未检测到环,则:服务器基于有向图,生成服务发布序列,服务发布序列中的元素包括多个服务中相互独立的至少两个服务,服务发布序列中的在后元素中包括的服务依赖于服务发布序列中的在前元素中包括的服务。接着,服务器基于服务发布序列,发布多个服务,其中发布多个服务包括先发布服务发布序列中的在前元素中包括的服务,后发布服务发布序列中的在后元素中包括的服务,以及并行发布服务发布序列中的相同元素中包括的至少两个服务。以此方式,能够检测待发布的多个服务之间是否存在依赖异常并且能够实现独立服务的并行发布,提高服务发布的效率。
在下文中,将结合附图更详细地描述本方案的具体示例。
图1示出了根据本公开的实施例的信息处理环境100的示例的示意图。信息处理环境100可以包括服务器110、待发布的多个服务120-1到120-4(统称为120)。应当理解,虽然图1中示出了4个服务,但是这只是示例,服务的数量可以更多或者更少,本公开的范围在此不受限制。
服务器110例如包括但不限于服务器计算机、多处理器***、大型计算机、包括上述***或设备中的任意一个的分布式计算环境等。在一些实施例中,服务器110可以具有一个或多个处理单元,包括诸如图像处理单元GPU、现场可编程门阵列FPGA和专用集成电路ASIC等的专用处理单元以及诸如中央处理单元CPU的通用处理单元。
服务器110用于确定待发布的多个服务120之间的依赖关系;基于依赖关系,生成有向图,有向图中的多个顶点表示多个服务120,有向图中的边表示多个服务120中的两个服务之间的依赖关系;在有向图中检测环;如果确定在有向图中检测到环,则提示服务依赖异常;如果确定在有向图中未检测到环,则:基于有向图,生成服务发布序列,服务发布序列中的元素包括多个服务120中相互独立的至少两个服务,服务发布序列中的在后元素中包括的服务依赖于服务发布序列中的在前元素中包括的服务;以及基于服务发布序列,发布多个服务120,其中发布多个服务120包括先发布服务发布序列中的在前元素中包括的服务,后发布服务发布序列中的在后元素中包括的服务,以及并行发布服务发布序列中的相同元素中包括的至少两个服务。
由此,能够检测待发布的多个服务之间是否存在依赖异常并且能够实现多个服务中的独立服务的并行发布,提高服务发布的效率。
图2示出了根据本公开的实施例的用于服务发布的方法200的流程图。例如,方法200可以由如图1所示的服务器110来执行。应当理解的是,方法200还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框202处,服务器110确定待发布的多个服务120之间的依赖关系。例如,某一服务如果调用了另一服务,则认为前者依赖于后者。
在一些实施例中,服务器110基于服务依赖配置信息,确定待发布的多个服务120之间的依赖关系。服务依赖配置信息例如包括但不限于服务依赖配置文件,其中包括多个服务120之间的依赖关系,例如表1所示。
表1。
在另一些实施例中,服务器110可以通过分析与多个服务120相关联的多个源代码文件来确定多个服务120之间的依赖关系。具体来说,服务器110可以从与多个服务120中的第一服务相关联的源代码文件中获取第一调用接口标识。第一调用接口标识可以为一个或多个。
随后,服务器110可以基于调用接口标识与服务之间的关联,确定与第一调用接口标识相关联的第二服务。调用接口标识与服务之间的关联例如包括但不限于调用接口标识与服务标识之间的关联表。如果第一调用接口标识为多个,则相关联的第二服务可以为一个或多个。
如果服务器110确定第二服务位于多个服务120中,则将第一服务标记为依赖于第二服务。
由此,能够直接基于与第一服务相关联的源代码来确定第一服务依赖于多个服务中的哪些服务,能够相比于人工配置更准确地依赖关系。
在框204处,服务器110基于依赖关系,生成有向图,有向图中的多个顶点表示多个服务120,有向图中的边表示多个服务120中的两个服务之间的依赖关系。
例如,待发布的多个服务A、B、C和D,A依赖于C和D,B依赖于C和D,则生成的有向图如图5所示,表示服务C的顶点具有指向表示服务A和B的两个顶点的边,表示服务C的顶点具有指向表示服务A和B的两个顶点的边。
在框206处,服务器110在有向图中检测环。例如,可以通过深度遍历来检测环,如果在遍历过程中遇到以前访问过的顶点,则确定检测到环,否则确定未检测到环。
如果服务器110在框206处确定在有向图中检测到环,则在框208处提示服务依赖异常。
如果服务器110在框206处确定在有向图中未检测到环,则在框210处,服务器110基于有向图,生成服务发布序列,服务发布序列中的元素包括多个服务120中相互独立的至少两个服务,服务发布序列中的在后元素中包括的服务依赖于服务发布序列中的在前元素中包括的服务。例如,可以先确定有向图中入度为0(也就是没有入边)的顶点,将这些顶点作为一个元素添加到服务发布序列中,并从有向图中删除这些顶点以及这些顶点出来的边,随后继续上述步骤,直到有向图中不再有顶点。
还是以上面的多个服务A、B、C和D和图5的有向图为例,入度为0的顶点为C和D,则将C和D作为一个元素添加到服务发布序列中,并从有向图中删除顶点C和D,随后确定入度为0的顶点为A和B,并将A和B作为另一个元素添加到服务发布序列中,位于包括C和D的元素之后,最终得到服务发布序列为{(C,D),(A,B)}。
在框212处,服务器110基于服务发布序列,发布多个服务,其中发布多个服务包括先发布服务发布序列中的在前元素中包括的服务,后发布服务发布序列中的在后元素中包括的服务,以及并行发布服务发布序列中的相同元素中包括的至少两个服务。
以上述服务发布序列为例,可以向并行发布服务C和D,在服务C和D发布完成之后,再并行发布服务A和B。
由此,能够检测待发布的多个服务之间是否存在依赖异常并且能够实现多个服务中的独立服务的并行发布,提高服务发布的效率。
图3示出了根据本公开的实施例的用于发布多个服务的方法300的流程图。例如,方法300可以由如图1所示的服务器110来执行。应当理解的是,方法300还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框302处,服务器110确定与多个服务120中的第一服务相关联的业务节点列表。业务节点用于执行服务,与第一服务相关联的业务节点列表中包括的业务节点用于执行第一服务。业务节点列表中可以包括多个业务节点。服务不同,用于执行服务的多个业务节点可以相同或不同。
在框304处,服务器110确定业务节点列表中的业务节点的数量是否小于或等于预定数量。预定数量例如包括但不限于3个。
如果服务器110在框304处确定业务节点列表中的业务节点的数量小于或等于预定数量,则在框306处按照每次发布一个节点在预定次数内向业务节点列表中的业务节点发布第一服务。预定次数例如包括但不限于3次。例如,如果业务节点列表中的业务节点的数量为3个,则每次一个节点向这3个业务节点中的一个业务节点发布第一服务,如果在该业务节点的第一服务可用,则向这3个业务节点中的另一个业务节点发布第一服务,如果在这个业务节点的第一服务也可用,则向这3个业务节点中的剩余业务节点发布第一服务。
如果服务器110在框304处确定业务节点列表中的业务节点的数量大于预定数量,则在框308处向业务节点列表中的第一业务节点发布第一服务。第一业务节点例如可以是随机选择或者指定的。
在框310处,服务器110确定第一服务在第一业务节点是否可用。服务器110例如可以向第一业务节点发送关于第一服务的请求,如果从第一业务节点接收到正确响应,则确定第一服务在第一业务节点可用。此外,第一业务节点也可以在第一服务启动后主动向服务器110发送第一服务已启动的消息,服务器110可以基于该消息确定第一服务在第一业务节点可用。
如果服务器110在框310处确定第一服务在第一业务节点可用,则在框312处向业务节点列表中的多个第二业务节点发布第一服务,第一业务节点和多个第二业务节点的总数量小于业务节点列表中的业务节点的数量的一半。通过使得第一业务节点和多个第二业务节点的总数量小于业务节点列表中的业务节点的数量的一半,使得第一服务失败的节点控制在半数以内,不至于影响半数以上的业务节点的第一服务的可用性。
在框314处,服务器110确定第一服务在多个第二业务节点是否可用。
如果在框314处,服务器110确定第一服务在多个第二业务节点可用,则在框316处向业务节点列表中除第一业务节点和多个第二业务节点之外的业务节点发布第一服务。
由此,通过3次逐步地向多个业务节点发布第一服务,能够在确保向多个业务节点成功发布第一服务的情况下,提高发布第一服务的效率。
图4示出了根据本公开的实施例的用于向第一业务节点发布第一服务的方法400的流程图。例如,方法400可以由如图1所示的服务器110来执行。应当理解的是,方法400还可以包括未示出的附加框和/或可以省略所示出的框,本公开的范围在此方面不受限制。
在框402处,服务器110获取与第一服务相关联的源代码文件。
在框404处,服务器110确定源代码文件的编程语言。例如,可以通过源代码文件格式(例如,文件后缀、调用函数库名等等)来确定编程语言。
在框406处,服务器110按照与编程语言相关联的编译流程,编译源代码文件,以生成编译包。例如,如果编程语言为java语言,则按照java语言的编译流程,编译源代码文件,以生成字节码。应当理解,这只是举例,编程语言也可以为其他语言,例如go、python等等。本公开的范围在此不受限制。
在框408处,服务器110生成与编程语言相关联的启动指令。例如,如果编程语言为java,则启动指令为“java [options] -jar file.jar [arguments]”。
在框410处,服务器110向第一业务节点发送编译包和启动指令,以便第一业务节点基于启动指令启动编译包。
由此,能够无需用户经由终端输入与第一服务相关联的源代码的编程语言以及启动指令,自动实现源代码文件的编译和启动指令生成,提高了效率。
备选地或者附加地,在一些实施例中,服务器110如果确定第一服务已发布完成,则确定第一服务不可用的业务节点的数量占业务节点列表中的业务节点的数量的比例。这里“第一服务已发布完成”应当理解为“已经向与第一服务相关联的业务节点列表中的所有节点发送了与第一服务相关联的最新版本”。
如果服务器110确定该比例大于或等于预定比例,则向业务节点列表中的所有业务节点发送关于回滚第一服务的指令,以便业务节点列表中的所有业务节点将第一服务回滚到先前版本。
由此,能够在大于或等于预定比例的业务节点处的第一服务不可用时,将业务节点列表中的所有节点回滚到先前版本,确保第一服务的可用性。
备选地或者附加地,在一些实施例中,服务器110如果确定第一服务已发布完成,则从第一服务可用的业务节点获取与第一服务相关联的服务性能。服务性能例如包括但不限于每秒请求数量、响应时间等等。
如果服务器110确定服务性能小于或等于预定服务性能,则向业务节点列表中的所有业务节点发送关于回滚所述第一服务的指令,以便业务节点列表中的所有业务节点将第一服务回滚到先前版本。在一些实施例中,预定服务性能可以是基于历史平均服务性能确定的,例如预定服务性能可以为历史平均服务性能减去某一固定值的结果。应当理解,这只是举例说明,本公开的范围在此不受限制。
由此,能够在虽然服务可用但是服务性能小于或等于阈值时,将业务节点列表中的业务节点处的第一服务回滚,从而避免影响第一服务的性能。
备选地或者附加地,在一些实施例中,服务器110如果确定第一服务已发布完成,则从第一服务可用的业务节点获取与第一服务相关联的资源消耗量。资源消耗量例如包括但不限于计算资源消耗量(例如CPU消耗量)、存储资源消耗量(例如内存消耗量)等等。
如果服务器110确定资源消耗量大于或等于预定资源消耗量,则向业务节点列表中的所有业务节点发送关于回滚所述第一服务的指令,以便业务节点列表中的所有业务节点将第一服务回滚到先前版本。在一些实施例中,预定资源消耗量例如可以基于历史平均资源消耗量而确定,例如历预定资源消耗量可以为历史平均资源消耗量加上一个固定值的结果。
由此,能够在虽然服务可用但是资源消耗量大于或等于阈值时,将业务节点列表中的业务节点处的第一服务回滚,从而避免影响第一服务的性能。
备选地或者附加地,在一些实施例中,业务节点列表中的业务节点中存储有与第一服务相关联的先前版本的编译包。具体来说,业务节点列表中的业务节点中可以存储有与第一服务相关联的多个先前版本的编译包,例如10个。由此,通过存储服务的先前版本的编译包,避免了在服务回滚时重新拉取源代码进行编译的过程,提高了回滚效率。
图6示出了可以用来实施本公开内容的实施例的示例设备600的示意性框图。例如,如图1所示的服务器110可以由设备600来实施。如图所示,设备600包括中央处理单元(CPU)601,其可以根据存储在只读存储器(ROM)602中的计算机程序指令或者从存储单元608加载到随机访问存储器(RAM)603中的计算机程序指令,来执行各种适当的动作和处理。在RAM 603中,还可存储设备600操作所需的各种程序和数据。CPU 601、ROM 602以及RAM603通过总线604彼此相连。输入/输出(I/O)接口605也连接至总线604。
设备600中的多个部件连接至I/O接口605,包括:输入单元606,例如键盘、鼠标、麦克风等;输出单元607,例如各种类型的显示器、扬声器等;存储单元608,例如磁盘、光盘等;以及通信单元609,例如网卡、调制解调器、无线通信收发机等。通信单元609允许设备600通过诸如因特网的计算机网络和/或各种电信网络与其他设备交换信息/数据。
上文所描述的各个过程和处理,例如方法200-400,可由中央处理单元601执行。例如,在一些实施例中,方法200-400可被实现为计算机软件程序,其被有形地包含于机器可读介质,例如存储单元608。在一些实施例中,计算机程序的部分或者全部可以经由ROM 602和/或通信单元609而被载入和/或安装到设备600上。当计算机程序被加载到RAM 603并由中央处理单元 601执行时,可以执行上文描述的方法200-400的一个或多个动作。
本公开涉及方法、装置、***、电子设备、计算机可读存储介质和/或计算机程序产品。计算机程序产品可以包括用于执行本公开的各个方面的计算机可读程序指令。
计算机可读存储介质可以是可以保持和存储由指令执行设备使用的指令的有形设备。计算机可读存储介质例如可以是――但不限于――电存储设备、磁存储设备、光存储设备、电磁存储设备、半导体存储设备或者上述的任意合适的组合。计算机可读存储介质的更具体的例子(非穷举的列表)包括:便携式计算机盘、硬盘、随机存取存储器(RAM)、只读存储器(ROM)、可擦式可编程只读存储器(EPROM或闪存)、静态随机存取存储器(SRAM)、便携式压缩盘只读存储器(CD-ROM)、数字多功能盘(DVD)、记忆棒、软盘、机械编码设备、例如其上存储有指令的打孔卡或凹槽内凸起结构、以及上述的任意合适的组合。这里所使用的计算机可读存储介质不被解释为瞬时信号本身,诸如无线电波或者其他自由传播的电磁波、通过波导或其他传输媒介传播的电磁波(例如,通过光纤电缆的光脉冲)、或者通过电线传输的电信号。
这里所描述的计算机可读程序指令可以从计算机可读存储介质下载到各个计算/处理设备,或者通过网络、例如因特网、局域网、广域网和/或无线网下载到外部计算机或外部存储设备。网络可以包括铜传输电缆、光纤传输、无线传输、路由器、防火墙、交换机、网关计算机和/或边缘服务器。每个计算/处理设备中的网络适配卡或者网络接口从网络接收计算机可读程序指令,并转发该计算机可读程序指令,以供存储在各个计算/处理设备中的计算机可读存储介质中。
用于执行本公开操作的计算机程序指令可以是汇编指令、指令集架构(ISA)指令、机器指令、机器相关指令、微代码、固件指令、状态设置数据、或者以一种或多种编程语言的任意组合编写的源代码或目标代码,所述编程语言包括面向对象的编程语言—诸如Smalltalk、C++等,以及常规的过程式编程语言—诸如“C”语言或类似的编程语言。计算机可读程序指令可以完全地在用户计算机上执行、部分地在用户计算机上执行、作为一个独立的软件包执行、部分在用户计算机上部分在远程计算机上执行、或者完全在远程计算机或服务器上执行。在涉及远程计算机的情形中,远程计算机可以通过任意种类的网络—包括局域网(LAN)或广域网(WAN)—连接到用户计算机,或者,可以连接到外部计算机(例如利用因特网服务提供商来通过因特网连接)。在一些实施例中,通过利用计算机可读程序指令的状态信息来个性化定制电子电路,例如可编程逻辑电路、现场可编程门阵列(FPGA)或可编程逻辑阵列(PLA),该电子电路可以执行计算机可读程序指令,从而实现本公开的各个方面。
这里参照根据本公开实施例的方法、装置(***)和计算机程序产品的流程图和/或框图描述了本公开的各个方面。应当理解,流程图和/或框图的每个方框以及流程图和/或框图中各方框的组合,都可以由计算机可读程序指令实现。
这些计算机可读程序指令可以提供给通用计算机、专用计算机或其它可编程数据处理装置的处理单元,从而生产出一种机器,使得这些指令在通过计算机或其它可编程数据处理装置的处理单元执行时,产生了实现流程图和/或框图中的一个或多个方框中规定的功能/动作的装置。也可以把这些计算机可读程序指令存储在计算机可读存储介质中,这些指令使得计算机、可编程数据处理装置和/或其他设备以特定方式工作,从而,存储有指令的计算机可读介质则包括一个制造品,其包括实现流程图和/或框图中的一个或多个方框中规定的功能/动作的各个方面的指令。
也可以把计算机可读程序指令加载到计算机、其它可编程数据处理装置、或其它设备上,使得在计算机、其它可编程数据处理装置或其它设备上执行一系列操作步骤,以产生计算机实现的过程,从而使得在计算机、其它可编程数据处理装置、或其它设备上执行的指令实现流程图和/或框图中的一个或多个方框中规定的功能/动作。
附图中的流程图和框图显示了根据本公开的多个实施例的***、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段或指令的一部分,所述模块、程序段或指令的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个连续的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或动作的专用的基于硬件的***来实现,或者可以用专用硬件与计算机指令的组合来实现。
以上已经描述了本公开的各实施例,上述说明是示例性的,并非穷尽性的,并且也不限于所披露的各实施例。在不偏离所说明的各实施例的范围和精神的情况下,对于本技术领域的普通技术人员来说许多修改和变更都是显而易见的。本文中所用术语的选择,旨在最好地解释各实施例的原理、实际应用或对市场中的技术的技术改进,或者使本技术领域的其它普通技术人员能理解本文披露的各实施例。
Claims (8)
1.一种用于服务发布的方法,包括:
确定待发布的多个服务之间的依赖关系;
基于所述依赖关系,生成有向图,所述有向图中的多个顶点表示所述多个服务,所述有向图中的边表示所述多个服务中的两个服务之间的依赖关系;
在所述有向图中检测环;
如果确定在所述有向图中检测到所述环,则提示服务依赖异常;
如果确定在所述有向图中未检测到所述环,则:
基于所述有向图,生成服务发布序列,所述服务发布序列中的元素包括所述多个服务中相互独立的至少两个服务,所述服务发布序列中的在后元素中包括的服务依赖于所述服务发布序列中的在前元素中包括的服务;
基于所述服务发布序列,发布所述多个服务,其中发布所述多个服务包括先发布所述服务发布序列中的所述在前元素中包括的服务,后发布所述服务发布序列中的所述在后元素中包括的服务,以及并行发布所述服务发布序列中的相同元素中包括的所述至少两个服务;
确定与所述多个服务中的第一服务相关联的业务节点列表;
如果确定所述业务节点列表中的业务节点的数量小于或等于预定数量,则按照每次发布一个节点在预定次数内向所述业务节点列表中的业务节点发布所述第一服务;
如果确定所述业务节点列表中的业务节点的数量大于所述预定数量,则:
向所述业务节点列表中的第一业务节点发布所述第一服务;
如果确定所述第一服务在所述第一业务节点可用,则向所述业务节点列表中的多个第二业务节点发布所述第一服务,所述第一业务节点和所述多个第二业务节点的总数量小于所述业务节点列表中的业务节点的数量的一半;以及
如果确定所述第一服务在所述多个第二业务节点可用,则向所述业务节点列表中除所述第一业务节点和所述多个第二业务节点之外的业务节点发布所述第一服务。
2.根据权利要求1所述的方法,其中确定所述依赖关系包括:
从与所述多个服务中的第一服务相关联的源代码文件中获取第一调用接口标识;
基于调用接口标识与服务之间的关联,确定与所述第一调用接口标识相关联的第二服务;以及
如果确定所述第二服务位于所述多个服务中,则将所述第一服务标记为依赖于所述第二服务。
3.根据权利要求1所述的方法,其中向所述第一业务节点发布所述第一服务包括:
获取与所述第一服务相关联的源代码文件;
确定所述源代码文件的编程语言;
按照与所述编程语言相关联的编译流程,编译所述源代码文件,以生成编译包;
生成与所述编程语言相关联的启动指令;以及
向所述第一业务节点发送所述编译包和所述启动指令,以便所述第一业务节点基于所述启动指令启动所述编译包。
4.根据权利要求1所述的方法,还包括:
如果确定所述第一服务已发布完成,则确定所述第一服务不可用的业务节点的数量占所述业务节点列表中的业务节点的数量的比例;以及
如果确定所述比例大于或等于预定比例,则向所述业务节点列表中的所有业务节点发送关于回滚所述第一服务的指令,以便所述业务节点列表中的所有业务节点将所述第一服务回滚到先前版本。
5.根据权利要求1所述的方法,还包括:
如果确定所述第一服务已发布完成,则从所述第一服务可用的业务节点获取与所述第一服务相关联的服务性能和资源消耗量中的至少一项;以及
如果确定以下各项中的至少一项成立,则向所述业务节点列表中的所有业务节点发送关于回滚所述第一服务的指令,以便所述业务节点列表中的所有业务节点将所述第一服务回滚到先前版本:所述服务性能小于或等于预定服务性能,以及所述资源消耗量大于或等于预定资源消耗量。
6.根据权利要求4或5所述的方法,其中所述业务节点列表中的业务节点中存储有与所述第一服务相关联的所述先前版本的编译包。
7.一种电子设备,包括:
至少一个处理器;以及
与所述至少一个处理器通信连接的存储器;其中,
所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行权利要求1-6中任一项所述的方法。
8.一种存储有计算机指令的非瞬时计算机可读存储介质,其特征在于,所述计算机指令用于使所述计算机执行权利要求1-6中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011005974.0A CN111930448B (zh) | 2020-09-23 | 2020-09-23 | 用于服务发布的方法、电子设备和存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011005974.0A CN111930448B (zh) | 2020-09-23 | 2020-09-23 | 用于服务发布的方法、电子设备和存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN111930448A CN111930448A (zh) | 2020-11-13 |
CN111930448B true CN111930448B (zh) | 2020-12-25 |
Family
ID=73335031
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011005974.0A Active CN111930448B (zh) | 2020-09-23 | 2020-09-23 | 用于服务发布的方法、电子设备和存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930448B (zh) |
Families Citing this family (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN114531493B (zh) * | 2020-11-23 | 2024-03-26 | 北京达佳互联信息技术有限公司 | 一种请求处理方法、装置、电子设备及存储介质 |
CN112988190B (zh) * | 2021-03-12 | 2023-09-05 | 北京奇艺世纪科技有限公司 | 应用上线方法、装置、计算机设备和存储介质 |
CN112947896B (zh) * | 2021-03-26 | 2023-10-27 | 中国航空无线电电子研究所 | 一种基于有向图的组件依赖分析方法 |
CN113179329B (zh) * | 2021-05-24 | 2023-07-18 | 深圳平安智汇企业信息管理有限公司 | 服务发布方法及装置、服务器、存储介质 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109636304A (zh) * | 2018-10-29 | 2019-04-16 | 浙江口碑网络技术有限公司 | 业务***的发布方法及装置、存储介质、电子装置 |
CN109787858A (zh) * | 2018-12-29 | 2019-05-21 | 福建天泉教育科技有限公司 | 一种批量发布服务的方法及终端 |
Family Cites Families (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN108667641A (zh) * | 2017-03-30 | 2018-10-16 | 杭州海康威视数字技术股份有限公司 | 分布式***升级方法、分布式***及升级管理设备 |
US10318279B2 (en) * | 2017-05-30 | 2019-06-11 | Microsoft Technology Licensing, Llc | Autonomous upgrade of deployed resources in a distributed computing environment |
CN109067559A (zh) * | 2018-06-13 | 2018-12-21 | 四川斐讯信息技术有限公司 | 一种设备升级方法及装置 |
CN109561148B (zh) * | 2018-11-30 | 2021-03-23 | 湘潭大学 | 边缘计算网络中基于有向无环图的分布式任务调度方法 |
CN111104260B (zh) * | 2019-12-30 | 2023-04-14 | 北京三快在线科技有限公司 | 服务升级的监测方法、装置、服务器及存储介质 |
-
2020
- 2020-09-23 CN CN202011005974.0A patent/CN111930448B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN109636304A (zh) * | 2018-10-29 | 2019-04-16 | 浙江口碑网络技术有限公司 | 业务***的发布方法及装置、存储介质、电子装置 |
CN109787858A (zh) * | 2018-12-29 | 2019-05-21 | 福建天泉教育科技有限公司 | 一种批量发布服务的方法及终端 |
Also Published As
Publication number | Publication date |
---|---|
CN111930448A (zh) | 2020-11-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111930448B (zh) | 用于服务发布的方法、电子设备和存储介质 | |
CN110609872B (zh) | 用于同步节点数据的方法和装置 | |
EP3488337B1 (en) | Shared software libraries for computing devices | |
US10447814B2 (en) | Joint servicing of software packages | |
US10481898B2 (en) | Automated software package deployment | |
CN107643984B (zh) | 用于输出信息的方法和装置 | |
CN106055375B (zh) | 应用程序安装方法及装置 | |
CN113050984A (zh) | 资源调取方法、装置、电子设备及存储介质 | |
CN109918381B (zh) | 用于存储数据的方法和装置 | |
CN113330419A (zh) | 一种设备应用安装方法和装置 | |
CN113900721A (zh) | 操作***启动方法、装置和电子设备 | |
CN111506904B (zh) | 漏洞在线修复的方法和装置 | |
CN113138768A (zh) | 应用程序包生成方法、装置、电子设备以及可读存储介质 | |
CN111240987B (zh) | 移植程序检测方法、装置、电子设备及计算机可读存储介质 | |
CN110704050B (zh) | 模块初始化方法、装置、电子设备及计算机可读存储介质 | |
CN115167874B (zh) | 自动驾驶软件镜像部署方法、装置、电子设备和可读介质 | |
CN112395194B (zh) | 一种接入测试平台的方法和装置 | |
CN115167822A (zh) | 分支代码合并方法、装置、设备和存储介质 | |
CN113656050B (zh) | 用于生成版本号的方法和装置 | |
CN114115941A (zh) | 资源发送方法、页面渲染方法、装置、电子设备和介质 | |
CN113283891A (zh) | 信息处理方法、装置和电子设备 | |
CN108170557B (zh) | 用于输出信息的方法和装置 | |
CN113741913A (zh) | 图片配置方法、装置、***和存储介质 | |
CN113741951A (zh) | 本地打包方法和装置 | |
KR20150080310A (ko) | 어플리케이션 업데이트 서버 및 방법 |
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 | ||
TR01 | Transfer of patent right | ||
TR01 | Transfer of patent right |
Effective date of registration: 20231121 Address after: Room 201-3, 2nd Floor, No. 188 Yesheng Road, Lingang New Area, China (Shanghai) Pilot Free Trade Zone, Pudong New Area, Shanghai, June 2013 Patentee after: Shanghai Shangliang Information Technology Co.,Ltd. Address before: 211106 room 208, building 1, Shengtai Huafu, 36 Shengtai East Road, moling street, Jiangning District, Nanjing City, Jiangsu Province (Jiangning Development Zone) Patentee before: Nanjing dreampay Network Technology Co.,Ltd. |