CN111752641A - 微服务容器之间服务启动方法、装置、设备及存储介质 - Google Patents
微服务容器之间服务启动方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN111752641A CN111752641A CN202010602737.6A CN202010602737A CN111752641A CN 111752641 A CN111752641 A CN 111752641A CN 202010602737 A CN202010602737 A CN 202010602737A CN 111752641 A CN111752641 A CN 111752641A
- Authority
- CN
- China
- Prior art keywords
- service
- micro
- registered
- services
- preset
- 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.)
- Pending
Links
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/445—Program loading or initiating
- G06F9/44505—Configuring for program initiating, e.g. using registry, configuration files
-
- 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/95—Retrieval from the web
- G06F16/953—Querying, e.g. by the use of web search engines
-
- 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/445—Program loading or initiating
-
- 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
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)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Data Mining & Analysis (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种微服务容器之间服务启动方法、装置、设备及存储介质,该方法通过预设容器编排算法编排微服务架构系统,将微服务依赖关系配置在所述微服务架构系统的预设文件中,基于微服务架构系统配置多个微服务之间的依赖关系,提高微服务启动顺序的准确性;根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务,将所述第一微服务在预设注册中心进行注册,获得已注册微服务,获取未启动的多个第二微服务,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,基于研发管理,根据微服务依赖顺序对每个微服务进行部署环境配置、实施部署及启动服务,无需繁杂操作,提高微服务启动效率。
Description
技术领域
本发明涉及网络技术领域,尤其涉及一种微服务容器之间服务启动方法、装置、设备及存储介质。
背景技术
许多系统都采用微服务的架构,很多功能都被划分到一个个微服务中去。很多微服务在一起,启动的时候顺序是不确定的。有些微服务的启动,依赖数据库服务的正常启动,并且需要数据库表初始化完成;或者依赖另外一个微服务,在另外一个微服务启动完成之后才能启动成功。虽然容器编排(Docker-compose)有依赖关系的设置,但是它针对的是服务端口的监测。实际上,当一个汤姆猫(tomcat)容器启动之后,它的服务端口就会生效,但是其端口下的应用程序还在启动中。只是通过服务端口来解决依赖性,会出现很多不正常的启动。
目前,采用微服务提供健康检查接口,需要依赖的微服务,通过反复调用健康接口,是否返回服务正常的结果来决定是否要启动自己,要求所有的微服务都需要提供健康检查接口,实现繁琐,效率低。因此,在系统中存在多个微服务时,如何提高微服务启动效率是亟待解决的技术问题。
上述内容仅用于辅助理解本发明的技术方案,并不代表承认上述内容是现有技术。
发明内容
本发明的主要目的在于提供一种微服务容器之间服务启动方法、装置、设备及存储介质,旨在解决现有技术中系统中存在多个微服务时,微服务启动效率低的技术问题。
为实现上述目的,本发明提供一种微服务容器之间服务启动方法,所述微服务容器之间服务启动方法包括以下步骤:
通过预设容器编排算法编排微服务架构系统;
将微服务依赖关系配置在所述微服务架构系统的预设文件中;
根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务;
将所述第一微服务在预设注册中心进行注册,获得已注册微服务;
获取未启动的多个第二微服务;
根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
优选地,所述根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务之前,所述微服务容器之间服务启动方法还包括:
通过预设注册中心循环检查多个所述已注册微服务是否正常启动;
在所述已注册微服务正常启动时,执行所述根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务的步骤。
优选地,所述通过预设容器编排算法编排微服务架构系统,包括:
通过预设容器编排算法编排基于预设注册中心的微服务架构系统。
优选地,所述根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,包括:
根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务;
启动所述第三微服务,并将所述第三服务在所述预设注册中心进行注册,并返回所述获取未启动的多个第二微服务的步骤,直至所有依赖所述已注册微服务的微服务均被启动。
优选地,所述根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务,包括:
根据所述微服务依赖关系,获取与所述第二微服务存在依赖关系的依赖服务;
判断所述已注册微服务是否包括所述依赖服务;
若所述已注册微服务包括所述依赖服务,则将所述依赖服务对应的第二微服务认定为依赖所述已注册微服务的第三微服务。
优选地,所述判断所述已注册微服务是否包括所述依赖服务,包括:
通过面向对象的协议与所述预设注册中心的接口进行通信;
循环查询所述依赖服务是否在所述预设注册中心进行注册,直至查询到各所述依赖服务均在所述预设注册中心注册,认定所述已注册微服务包括所述依赖服务。
优选地,所述循环查询所述依赖服务是否在所述预设注册中心进行注册,包括:
通过面向对象的协议循环请求所述依赖服务的统一资源定位符;
接收返回的面向对象的协议状态码;
根据所述面向对象的协议状态码,判断所述依赖服务是否在所述预设注册中心进行注册。
此外,为实现上述目的,本发明还提出一种微服务容器之间服务启动设备,所述微服务容器之间服务启动设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的微服务容器之间服务启动程序,所述微服务容器之间服务启动程序配置为实现如上文所述的微服务容器之间服务启动方法的步骤。
此外,为实现上述目的,本发明还提出一种存储介质,所述存储介质上存储有微服务容器之间服务启动程序,所述微服务容器之间服务启动程序被处理器执行时实现如上文所述的微服务容器之间服务启动方法的步骤。
此外,为实现上述目的,本发明还提出一种微服务容器之间服务启动装置,所述微服务容器之间服务启动装置包括:
编排模块,用于通过预设容器编排算法编排微服务架构系统;
配置模块,用于将微服务依赖关系配置在所述微服务架构系统的预设文件中;
获取模块,用于根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务;
注册模块,用于将所述第一微服务在预设注册中心进行注册,获得已注册微服务;
所述获取模块,还用于获取未启动的多个第二微服务;
启动模块,用于根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
本发明中,通过预设容器编排算法编排微服务架构系统,将微服务依赖关系配置在所述微服务架构系统的预设文件中,基于微服务架构系统配置多个微服务之间的依赖关系,提高微服务启动顺序的准确性;根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务,将所述第一微服务在预设注册中心进行注册,获得已注册微服务,获取未启动的多个第二微服务,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,基于研发管理,根据微服务依赖顺序对每个微服务进行部署环境配置、实施部署及启动服务,无需繁杂操作,提高微服务启动效率。
附图说明
图1是本发明实施例方案涉及的硬件运行环境的微服务容器之间服务启动设备的结构示意图;
图2为本发明微服务容器之间服务启动方法第一实施例的流程示意图;
图3为本发明微服务容器之间服务启动方法第二实施例的流程示意图;
图4为本发明微服务容器之间服务启动方法第三实施例的流程示意图;
图5为本发明微服务容器之间服务启动装置第一实施例的结构框图。
本发明目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
应当理解,此处所描述的具体实施例仅仅用以解释本发明,并不用于限定本发明。
参照图1,图1为本发明实施例方案涉及的硬件运行环境的微服务容器之间服务启动设备结构示意图。
如图1所示,该微服务容器之间服务启动设备可以包括:处理器1001,例如中央处理器(Central Processing Unit,CPU),通信总线1002、用户接口1003,网络接口1004,存储器1005。其中,通信总线1002用于实现这些组件之间的连接通信。用户接口1003可以包括显示屏(Display),可选用户接口1003还可以包括标准的有线接口、无线接口,对于用户接口1003的有线接口在本发明中可为USB接口。网络接口1004可选的可以包括标准的有线接口、无线接口(如无线保真(WIreless-FIdelity,WI-FI)接口)。存储器1005可以是高速的随机存取存储器(Random Access Memory,RAM)存储器,也可以是稳定的存储器(Non-volatileMemory,NVM),例如磁盘存储器。存储器1005可选的还可以是独立于前述处理器1001的存储装置。
本领域技术人员可以理解,图1中示出的结构并不构成对微服务容器之间服务启动设备的限定,可以包括比图示更多或更少的部件,或者组合某些部件,或者不同的部件布置。
如图1所示,作为一种计算机存储介质的存储器1005中可以包括操作系统、网络通信模块、用户接口模块以及微服务容器之间服务启动程序。
在图1所示的微服务容器之间服务启动设备中,网络接口1004主要用于连接后台服务器,与所述后台服务器进行数据通信;用户接口1003主要用于连接用户设备;所述微服务容器之间服务启动设备通过处理器1001调用存储器1005中存储的微服务容器之间服务启动程序,并执行本发明实施例提供的微服务容器之间服务启动方法。
基于上述硬件结构,提出本发明微服务容器之间服务启动方法的实施例。
参照图2,图2为本发明微服务容器之间服务启动方法第一实施例的流程示意图,提出本发明微服务容器之间服务启动方法第一实施例。
在第一实施例中,所述微服务容器之间服务启动方法包括以下步骤:
步骤S10:通过预设容器编排算法编排微服务架构系统。
应理解的是,本实施例的执行主体是所述微服务容器之间服务启动设备,其中,所述微服务容器之间服务启动设备可为个人电脑或服务器等电子设备,本实施例对此不加以限制。所述预设容器编排算法为docker-compose容器编排算法,所述微服务架构系统,是由一个预设注册中心程序,以及多个微服务程序组成的以实现某种业务的系统。所述预设注册中心可以是Eureka注册中心,Eureka是一个简单的服务注册,服务发现架构,当所述预设注册中心故障,客户端之间依然可以通过原有的注册表进行调用;在所述预设注册中心重启后,客户端会继续注册进来。当一个新的Eureka服务(Server)出现时,它尝试从相邻节点获取所有实例注册表信息。如果从对等(Peer)节点获取信息时出现问题,Eureka Serve会尝试其他的Peer节点。如果服务器能够成功获取所有实例,则根据该信息设置应该接收的更新阈值。如果有任何时间,Eureka Serve接收到的续约低于为该值配置的百分比,比如15分钟内低于85%,则服务器开启自我保护模式,即不再剔除注册列表的信息。在本实施例中,所述步骤S10,包括:通过预设容器编排算法编排基于预设注册中心的微服务架构系统。
步骤S20:将微服务依赖关系配置在所述微服务架构系统的预设文件中。
需要说明的是,所述预设文件为docker-compose.yaml文件,docker-compose.yaml文件可以将多个docker容器整合。整合后,可以采用docker-compose up-d的命令启动多个整合在docker-compose.yaml文件中的docker容器服务。用docker-compose容器编排技术来解决的是微服务之间的依赖关系。如果不能正确的在docker-compose.yaml文件中配置好微服务之间的依赖关系,那整个系统将无法得到正确启动。传统的方式,在部署的时候通过人工干预的方式依照其规定的依赖顺序对每个微服务程序进行部署环境配置、实施部署和启动服务等流程,在本实施例中不需要繁杂操作,仅需要采用docker-compose编排算法将微服务及其之间的依赖关系进行编排,生成docker-compose.yaml配置文件,即所述预设文件。
步骤S30:根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务。
应理解的是,所述预设文件中在采用了其原本的容器端口依赖配置的基础上,增加了通过新增脚本利用Eureka注册中心提供的查询服务的接口能力循环检查其依赖服务是否正常启动的方式,解决了微服务之间启动的依赖关系。Eureka注册中心容器不依赖任何其他服务容器会率先启动完成。所述独立微服务容器是指没有任何服务依赖的微服务容器,所述独立微服务容器会在启动的时候直接将自己的所述第一微服务注册进Eureka注册中心。
步骤S40:将所述第一微服务在预设注册中心进行注册,获得已注册微服务。
可理解的是,采用docker-compose up-d命令启动微服务系统,会以编写好的docker-compose.yaml文件进行启动,Eureka注册中心容器不依赖任何其他服务容器会率先启动完成。没有任何服务依赖的微服务容器会在启动的时候直接将自己的所述第一微服务注册进Eureka注册中心。注册在Eureka中的所述已注册微服务,在Eureka服务中存储其提供微服务的名称、服务器网际互连协议地址(Internet Protocol,IP)、服务器域名以及服务端口的列表。
步骤S50:获取未启动的多个第二微服务。
在具体实现中,所述第二微服务为需要依赖其他服务的服务,所述第二微服务需要依赖其他服务,所以不能独立启动,则根据依赖关系,获取与所述第二微服务存在依赖关系的依赖服务,在所述依赖服务启动之后,所述第二微服务才能启动。
步骤S60:根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
需要说明的是,配置一个能够循环检查Eureka注册中心服务提供服务查询接口eureka/apps/的预设脚本,所述预设脚本目的是检查所述依赖服务是否正常注册进注册中心。所述第一微服务均在所述Eureka注册中心进行注册,获得已注册微服务,则只需判断所述已注册微服务中是否包括所述依赖服务,若包括,则说明所述第二微服务的依赖服务在所述Eureka注册中心注册,则所述第二微服务可进行启动。
在本实施例中,通过预设容器编排算法编排微服务架构系统,将微服务依赖关系配置在所述微服务架构系统的预设文件中,基于微服务架构系统配置多个微服务之间的依赖关系,提高微服务启动顺序的准确性;根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务,将所述第一微服务在预设注册中心进行注册,获得已注册微服务,获取未启动的多个第二微服务,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,基于研发管理,根据微服务依赖顺序对每个微服务进行部署环境配置、实施部署及启动服务,无需繁杂操作,提高微服务启动效率。
参照图3,图3为本发明微服务容器之间服务启动方法第二实施例的流程示意图,基于上述图2所示的第一实施例,提出本发明微服务容器之间服务启动方法的第二实施例。
在第二实施例中,所述步骤S60之前,还包括:
步骤S501:通过预设注册中心循环检查多个所述已注册微服务是否正常启动。
应理解的是,Eureka注册中心服务提供服务查询接口eureka/apps/,调用所述查询接口并且传入需要查询微服务的名字,可查询到该微服务是否在Eureka注册中心中注册成功。所述已注册微服务是已经注册在Eureka注册中心中的服务,在需要依赖所述已注册微服务的微服务的容器中,配置预设脚本,所述预设脚本能够循环检查Eureka注册中心服务提供的服务查询接口eureka/apps/。所述预设脚本的目的是检查其依赖的服务是否正常注册进注册中心。如果正常,则停止循环检查,并启动自己的服务/微服务,启动完成后将自己的服务/微服务也注册进所述预设注册中心。注册成功的微服务,说明该微服务启动正常。
在所述已注册微服务正常启动时,执行所述步骤S60。
需要说明的是,在所述已注册微服务正常启动时,停止循环检查,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。通过判断所述已注册微服务是否包括所述第二微服务依赖的所有服务,若包括,则可启动所述第二微服务。启动所述第二微服务后,将所述第二微服务也注册进所述预设注册中心。
在本实施例中,通过预设注册中心循环检查多个所述已注册微服务是否正常启动,在所述已注册微服务正常启动时,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,避免在依赖的微服务未正常启动时,进行第二微服务的启动,导致第二微服务无法启动,从而提高微服务启动效率。
参照图4,图4为本发明微服务容器之间服务启动方法第三实施例的流程示意图,基于上述第一实施例或第二实施例,提出本发明微服务容器之间服务启动方法的第三实施例。本实施例基于所述第一实施例进行说明。
在第三实施例中,所述步骤S60,包括:
步骤S601:根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务。
应理解的是,所述第二微服务是未启动的服务,所述微服务依赖关系描述了各微服务之间的关联关系,故可根据所述微服务依赖关系,确定所述第二微服务依赖的服务,若所述第二微服务依赖的服务是所述已注册微服务,则将其认定为第三微服务,所述已注册微服务通常为多个,所述第三微服务依赖至少一个所述已注册微服务。
进一步地,在本实施例中,所述步骤S601,包括:
根据所述微服务依赖关系,获取与所述第二微服务存在依赖关系的依赖服务;
判断所述已注册微服务是否包括所述依赖服务;
若所述已注册微服务包括所述依赖服务,则将所述依赖服务对应的第二微服务认定为依赖所述已注册微服务的第三微服务。
需要说明的是,未启动的所述第二微服务通常为多个,且所述第二微服务为需要依赖其他微服务的服务,根据所述微服务依赖关系,确定各所述第二微服务所依赖的所述依赖服务,所述依赖服务可以是一个,也可以是多个。通过将所述依赖服务于所述已注册微服务进行比对,从而判断所述已注册微服务是否包括所有的所述依赖服务,若所述已注册微服务包括所有的所述依赖服务,则说明对应的第二微服务所要依赖的服务均在所述预设注册中心注册完成,将所述依赖服务对应的第二微服务认定为依赖所述已注册微服务的第三微服务,在所述已注册服务均正常启动时,则可将所述第三微服务进行启动。
进一步地,在本实施例中,所述判断所述已注册微服务是否包括所述依赖服务,包括:
通过面向对象的协议与所述预设注册中心的接口进行通信;
循环查询所述依赖服务是否在所述预设注册中心进行注册,直至查询到各所述依赖服务均在所述预设注册中心注册,认定所述已注册微服务包括所述依赖服务。
在具体实现中,docker-compose.yaml文件中的depends_on配置项,针对的是服务端口的监测。当一个tomcat容器启动之后它的服务端口就会生效,但是其端口下的应用程序实际上还在启动中。所以很多情况下只是通过服务端口来解决微服务程序之间的依赖性往往会出现很多不正常的启动。在微服务启动前通过所述预设脚本的方式去Eureka注册中心去查询其依赖的服务是否正常启动。所述预设脚本如下:
http_code=`curl-I-s-w"%{http_code}\n"-o/dev/null xxx`
应理解的是,所述预设脚本是采用开源文件传输工具(curl)的方式,通过面向对象的协议(http),去请求依赖服务的统一资源定位符(Uniform Resource Locator,URL),通过其返回的http状态码来判断Eureka注册中心中其依赖的服务的状态。非200的状态码均会在间隔约定秒数后进行再次重试。在本实施例中,所述循环查询所述依赖服务是否在所述预设注册中心进行注册,包括:通过面向对象的协议循环请求所述依赖服务的统一资源定位符;接收返回的面向对象的协议状态码;根据所述面向对象的协议状态码,判断所述依赖服务是否在所述预设注册中心进行注册。
步骤S602:启动所述第三微服务,并将所述第三服务在所述预设注册中心进行注册,并返回所述获取未启动的多个第二微服务的步骤,直至所有依赖所述已注册微服务的微服务均被启动。
可理解的是,所述第三微服务的依赖服务是所述已注册微服务,则可启动所述第三微服务。若所述已注册微服务包括所述依赖服务,则说明所述第三微服务的依赖服务在所述Eureka注册中心注册,即所述第三微服务依赖的所述依赖服务已经启动,则可启动所述第三微服务,启动完成后将所述第三微服务也注册进所述Eureka注册中心。
需要说明的是,注册进所述Eureka注册中心的第三微服务成为新的已注册微服务,返回获取未启动的多个第二微服务的步骤,未启动的所述第二微服务若依赖所述第一微服务和所述第三微服务,则可继续进行启动。所述第一微服务和所述第三微服务均在所述Eureka注册中心注册,成为所述已注册微服务,则可将依赖所述第一微服务和所述第三微服务的未启动第二微服务进行启动,直至所有依赖所述已注册微服务的微服务均被启动,从而实现所有的微服务依次均被启动。
在本实施例中,根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务,启动所述第三微服务,并将所述第三服务在所述预设注册中心进行注册,并返回所述获取未启动的多个第二微服务的步骤,直至所有依赖所述已注册微服务的微服务均被启动,从而依次启动所有的微服务,利用整体架构的特点,通过Eureka注册中心提供的查询接口,实现docker-compose容器编排技术下容器之间服务依赖启动,无需要求各个服务增加健康检查接口,同时也实现服务容器按照预期的依赖逐一启动,提升了采用docker-compose容器编排技术进行快速部署的效率与准确性。
此外,本发明实施例还提出一种存储介质,所述存储介质上存储有微服务容器之间服务启动程序,所述微服务容器之间服务启动程序被处理器执行时实现如上文所述的微服务容器之间服务启动方法的步骤。
此外,参照图5,图5为本发明微服务容器之间服务启动装置第一实施例的结构框图,本发明实施例还提出一种微服务容器之间服务启动装置,所述微服务容器之间服务启动装置包括:
编排模块10,用于通过预设容器编排算法编排微服务架构系统。
应理解的是,所述预设容器编排算法为docker-compose容器编排算法,所述微服务架构系统,是由一个预设注册中心程序,以及多个微服务程序组成的以实现某种业务的系统。所述预设注册中心可以是Eureka注册中心,Eureka是一个简单的服务注册,服务发现架构,当所述预设注册中心故障,客户端之间依然可以通过原有的注册表进行调用;在所述预设注册中心重启后,客户端会继续注册进来。当一个新的Eureka服务(Server)出现时,它尝试从相邻节点获取所有实例注册表信息。如果从对等(Peer)节点获取信息时出现问题,Eureka Serve会尝试其他的Peer节点。如果服务器能够成功获取所有实例,则根据该信息设置应该接收的更新阈值。如果有任何时间,Eureka Serve接收到的续约低于为该值配置的百分比,比如15分钟内低于85%,则服务器开启自我保护模式,即不再剔除注册列表的信息。在本实施例中,所述编排模块10,还用于通过预设容器编排算法编排基于预设注册中心的微服务架构系统。
配置模块20,用于将微服务依赖关系配置在所述微服务架构系统的预设文件中。
需要说明的是,所述预设文件为docker-compose.yaml文件,docker-compose.yaml文件可以将多个docker容器整合。整合后,可以采用docker-compose up-d的命令启动多个整合在docker-compose.yaml文件中的docker容器服务。用docker-compose容器编排技术来解决的是微服务之间的依赖关系。如果不能正确的在docker-compose.yaml文件中配置好微服务之间的依赖关系,那整个系统将无法得到正确启动。传统的方式,在部署的时候通过人工干预的方式依照其规定的依赖顺序对每个微服务程序进行部署环境配置、实施部署和启动服务等流程,在本实施例中不需要繁杂操作,仅需要采用docker-compose编排算法将微服务及其之间的依赖关系进行编排,生成docker-compose.yaml配置文件,即所述预设文件。
获取模块30,用于根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务。
应理解的是,所述预设文件中在采用了其原本的容器端口依赖配置的基础上,增加了通过新增脚本利用Eureka注册中心提供的查询服务的接口能力循环检查其依赖服务是否正常启动的方式,解决了微服务之间启动的依赖关系。Eureka注册中心容器不依赖任何其他服务容器会率先启动完成。所述独立微服务容器是指没有任何服务依赖的微服务容器,所述独立微服务容器会在启动的时候直接将自己的所述第一微服务注册进Eureka注册中心。
注册模块40,用于将所述第一微服务在预设注册中心进行注册,获得已注册微服务。
可理解的是,采用docker-compose up-d命令启动微服务系统,会以编写好的docker-compose.yaml文件进行启动,Eureka注册中心容器不依赖任何其他服务容器会率先启动完成。没有任何服务依赖的微服务容器会在启动的时候直接将自己的所述第一微服务注册进Eureka注册中心。注册在Eureka中的所述已注册微服务,在Eureka服务中存储其提供微服务的名称、服务器网际互连协议地址(Internet Protocol,IP)、服务器域名以及服务端口的列表。
所述获取模块30,还用于获取未启动的多个第二微服务。
在具体实现中,所述第二微服务为需要依赖其他服务的服务,所述第二微服务需要依赖其他服务,所以不能独立启动,则根据依赖关系,获取与所述第二微服务存在依赖关系的依赖服务,在所述依赖服务启动之后,所述第二微服务才能启动。
启动模块50,用于根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
需要说明的是,配置一个能够循环检查Eureka注册中心服务提供服务查询接口eureka/apps/的预设脚本,所述预设脚本目的是检查所述依赖服务是否正常注册进注册中心。所述第一微服务均在所述Eureka注册中心进行注册,获得已注册微服务,则只需判断所述已注册微服务中是否包括所述依赖服务,若包括,则说明所述第二微服务的依赖服务在所述Eureka注册中心注册,则所述第二微服务可进行启动。
在本实施例中,通过预设容器编排算法编排微服务架构系统,将微服务依赖关系配置在所述微服务架构系统的预设文件中,基于微服务架构系统配置多个微服务之间的依赖关系,提高微服务启动顺序的准确性;根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务,将所述第一微服务在预设注册中心进行注册,获得已注册微服务,获取未启动的多个第二微服务,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,基于研发管理,根据微服务依赖顺序对每个微服务进行部署环境配置、实施部署及启动服务,无需繁杂操作,提高微服务启动效率。
在一实施例中,所述微服务容器之间服务启动装置还包括:
检查模块,用于通过预设注册中心循环检查多个所述已注册微服务是否正常启动;
所述启动模块50,还用于在所述已注册微服务正常启动时,根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
在一实施例中,所述启动模块50,还用于根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务;启动所述第三微服务,并将所述第三服务在所述预设注册中心进行注册,并返回所述获取未启动的多个第二微服务的步骤,直至所有依赖所述已注册微服务的微服务均被启动。
在一实施例中,所述启动模块50,还用于根据所述微服务依赖关系,获取与所述第二微服务存在依赖关系的依赖服务;判断所述已注册微服务是否包括所述依赖服务;若所述已注册微服务包括所述依赖服务,则将所述依赖服务对应的第二微服务认定为依赖所述已注册微服务的第三微服务。
在一实施例中,所述启动模块50,还用于通过面向对象的协议与所述预设注册中心的接口进行通信;循环查询所述依赖服务是否在所述预设注册中心进行注册,直至查询到各所述依赖服务均在所述预设注册中心注册,认定所述已注册微服务包括所述依赖服务。
在一实施例中,所述启动模块50,还用于通过面向对象的协议循环请求所述依赖服务的统一资源定位符;接收返回的面向对象的协议状态码;根据所述面向对象的协议状态码,判断所述依赖服务是否在所述预设注册中心进行注册。
本发明所述微服务容器之间服务启动装置的其他实施例或具体实现方式可参照上述各方法实施例,此处不再赘述。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者系统不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者系统所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、方法、物品或者系统中还存在另外的相同要素。
上述本发明实施例序号仅仅为了描述,不代表实施例的优劣。在列举了若干装置的单元权利要求中,这些装置中的若干个可以是通过同一个硬件项来具体体现。词语第一、第二、以及第三等的使用不表示任何顺序,可将这些词语解释为标识。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到上述实施例方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如只读存储器镜像(Read Only Memory image,ROM)/随机存取存储器(Random AccessMemory,RAM)、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,空调器,或者网络设备等)执行本发明各个实施例所述的方法。
以上仅为本发明的优选实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其他相关的技术领域,均同理包括在本发明的专利保护范围内。
Claims (10)
1.一种微服务容器之间服务启动方法,其特征在于,所述微服务容器之间服务启动方法包括以下步骤:
通过预设容器编排算法编排微服务架构系统;
将微服务依赖关系配置在所述微服务架构系统的预设文件中;
根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务;
将所述第一微服务在预设注册中心进行注册,获得已注册微服务;
获取未启动的多个第二微服务;
根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
2.如权利要求1所述的微服务容器之间服务启动方法,其特征在于,所述根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务之前,所述微服务容器之间服务启动方法还包括:
通过预设注册中心循环检查多个所述已注册微服务是否正常启动;
在所述已注册微服务正常启动时,执行所述根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务的步骤。
3.如权利要求1所述的微服务容器之间服务启动方法,其特征在于,所述通过预设容器编排算法编排微服务架构系统,包括:
通过预设容器编排算法编排基于预设注册中心的微服务架构系统。
4.如权利要求1~3中任一项所述的微服务容器之间服务启动方法,其特征在于,所述根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务,包括:
根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务;
启动所述第三微服务,并将所述第三服务在所述预设注册中心进行注册,并返回所述获取未启动的多个第二微服务的步骤,直至所有依赖所述已注册微服务的微服务均被启动。
5.如权利要求4所述的微服务容器之间服务启动方法,其特征在于,所述根据所述微服务依赖关系,从多个所述第二微服务中确定依赖所述已注册微服务的第三微服务,包括:
根据所述微服务依赖关系,获取与所述第二微服务存在依赖关系的依赖服务;
判断所述已注册微服务是否包括所述依赖服务;
若所述已注册微服务包括所述依赖服务,则将所述依赖服务对应的第二微服务认定为依赖所述已注册微服务的第三微服务。
6.如权利要求5所述的微服务容器之间服务启动方法,其特征在于,所述判断所述已注册微服务是否包括所述依赖服务,包括:
通过面向对象的协议与所述预设注册中心的接口进行通信;
循环查询所述依赖服务是否在所述预设注册中心进行注册,直至查询到各所述依赖服务均在所述预设注册中心注册,认定所述已注册微服务包括所述依赖服务。
7.如权利要求6所述的微服务容器之间服务启动方法,其特征在于,所述循环查询所述依赖服务是否在所述预设注册中心进行注册,包括:
通过面向对象的协议循环请求所述依赖服务的统一资源定位符;
接收返回的面向对象的协议状态码;
根据所述面向对象的协议状态码,判断所述依赖服务是否在所述预设注册中心进行注册。
8.一种微服务容器之间服务启动装置,其特征在于,所述微服务容器之间服务启动装置包括:
编排模块,用于通过预设容器编排算法编排微服务架构系统;
配置模块,用于将微服务依赖关系配置在所述微服务架构系统的预设文件中;
获取模块,用于根据所述预设文件中的所述微服务依赖关系,获取独立微服务容器的多个第一微服务;
注册模块,用于将所述第一微服务在预设注册中心进行注册,获得已注册微服务;
所述获取模块,还用于获取未启动的多个第二微服务;
启动模块,用于根据所述微服务依赖关系和所述已注册微服务,判断是否启动所述第二微服务。
9.一种微服务容器之间服务启动设备,其特征在于,所述微服务容器之间服务启动设备包括:存储器、处理器及存储在所述存储器上并可在所述处理器上运行的微服务容器之间服务启动程序,所述微服务容器之间服务启动程序被所述处理器执行时实现如权利要求1至7中任一项所述的微服务容器之间服务启动方法的步骤。
10.一种存储介质,其特征在于,所述存储介质上存储有微服务容器之间服务启动程序,所述微服务容器之间服务启动程序被处理器执行时实现如权利要求1至7中任一项所述的微服务容器之间服务启动方法的步骤。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010602737.6A CN111752641A (zh) | 2020-06-29 | 2020-06-29 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202010602737.6A CN111752641A (zh) | 2020-06-29 | 2020-06-29 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111752641A true CN111752641A (zh) | 2020-10-09 |
Family
ID=72677874
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202010602737.6A Pending CN111752641A (zh) | 2020-06-29 | 2020-06-29 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111752641A (zh) |
Cited By (13)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112416459A (zh) * | 2020-11-23 | 2021-02-26 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的系统 |
CN112540749A (zh) * | 2020-11-16 | 2021-03-23 | 南方电网数字电网研究院有限公司 | 微服务划分方法、装置、计算机设备和可读存储介质 |
CN112671861A (zh) * | 2020-12-15 | 2021-04-16 | 交控科技股份有限公司 | 提升微服务系统安全性的方法及装置 |
CN112698817A (zh) * | 2021-01-05 | 2021-04-23 | 深圳力维智联技术有限公司 | 基于微服务架构的消息接入方法、装置、系统及存储介质 |
CN113114639A (zh) * | 2021-03-29 | 2021-07-13 | 北京达佳互联信息技术有限公司 | 配置服务注册中心的方法、装置、电子设备及存储介质 |
CN113364831A (zh) * | 2021-04-27 | 2021-09-07 | 国网浙江省电力有限公司电力科学研究院 | 基于区块链的多域异构算网资源可信协同方法 |
CN113778568A (zh) * | 2021-09-09 | 2021-12-10 | 网易(杭州)网络有限公司 | 一种服务控制的方法和装置 |
CN113934446A (zh) * | 2021-12-16 | 2022-01-14 | 中电云数智科技有限公司 | 一种基于容器云平台的微服务配置系统及方法 |
CN114116068A (zh) * | 2021-12-02 | 2022-03-01 | 重庆紫光华山智安科技有限公司 | 服务启动优化方法、装置、电子设备和可读存储介质 |
CN114201314A (zh) * | 2021-12-10 | 2022-03-18 | 优维科技(深圳)有限公司 | 一种基于契约的实现服务依赖发现和服务访问的路由方法 |
CN114726911A (zh) * | 2022-04-02 | 2022-07-08 | 湖南大学 | 分布式工业机器人在线服务编排的路由参数传递方法 |
CN116107777A (zh) * | 2023-04-12 | 2023-05-12 | 霖济智云科技(苏州)有限公司 | 一种服务依赖挖掘方法及微服务的服务调用方法 |
CN116991472A (zh) * | 2023-09-27 | 2023-11-03 | 深圳鲲云信息科技有限公司 | 管理全局资源的方法及计算设备 |
-
2020
- 2020-06-29 CN CN202010602737.6A patent/CN111752641A/zh active Pending
Cited By (22)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112540749B (zh) * | 2020-11-16 | 2023-10-24 | 南方电网数字平台科技(广东)有限公司 | 微服务划分方法、装置、计算机设备和可读存储介质 |
CN112540749A (zh) * | 2020-11-16 | 2021-03-23 | 南方电网数字电网研究院有限公司 | 微服务划分方法、装置、计算机设备和可读存储介质 |
CN112416459B (zh) * | 2020-11-23 | 2024-03-01 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的系统 |
CN112416459A (zh) * | 2020-11-23 | 2021-02-26 | 杭州当虹科技股份有限公司 | 一种解决微服务之间版本强依赖的系统 |
CN112671861A (zh) * | 2020-12-15 | 2021-04-16 | 交控科技股份有限公司 | 提升微服务系统安全性的方法及装置 |
CN112671861B (zh) * | 2020-12-15 | 2023-03-24 | 交控科技股份有限公司 | 提升微服务系统安全性的方法及装置 |
CN112698817A (zh) * | 2021-01-05 | 2021-04-23 | 深圳力维智联技术有限公司 | 基于微服务架构的消息接入方法、装置、系统及存储介质 |
CN113114639A (zh) * | 2021-03-29 | 2021-07-13 | 北京达佳互联信息技术有限公司 | 配置服务注册中心的方法、装置、电子设备及存储介质 |
CN113114639B (zh) * | 2021-03-29 | 2023-01-20 | 北京达佳互联信息技术有限公司 | 配置服务注册中心的方法、装置、电子设备及存储介质 |
CN113364831A (zh) * | 2021-04-27 | 2021-09-07 | 国网浙江省电力有限公司电力科学研究院 | 基于区块链的多域异构算网资源可信协同方法 |
CN113364831B (zh) * | 2021-04-27 | 2022-07-19 | 国网浙江省电力有限公司电力科学研究院 | 基于区块链的多域异构算网资源可信协同方法 |
CN113778568A (zh) * | 2021-09-09 | 2021-12-10 | 网易(杭州)网络有限公司 | 一种服务控制的方法和装置 |
CN114116068A (zh) * | 2021-12-02 | 2022-03-01 | 重庆紫光华山智安科技有限公司 | 服务启动优化方法、装置、电子设备和可读存储介质 |
CN114116068B (zh) * | 2021-12-02 | 2023-06-02 | 重庆紫光华山智安科技有限公司 | 服务启动优化方法、装置、电子设备和可读存储介质 |
CN114201314A (zh) * | 2021-12-10 | 2022-03-18 | 优维科技(深圳)有限公司 | 一种基于契约的实现服务依赖发现和服务访问的路由方法 |
CN113934446B (zh) * | 2021-12-16 | 2022-04-22 | 中电云数智科技有限公司 | 一种基于容器云平台的微服务配置系统及方法 |
CN113934446A (zh) * | 2021-12-16 | 2022-01-14 | 中电云数智科技有限公司 | 一种基于容器云平台的微服务配置系统及方法 |
CN114726911B (zh) * | 2022-04-02 | 2023-09-19 | 湖南大学 | 分布式工业机器人在线服务编排的路由参数传递方法 |
CN114726911A (zh) * | 2022-04-02 | 2022-07-08 | 湖南大学 | 分布式工业机器人在线服务编排的路由参数传递方法 |
CN116107777A (zh) * | 2023-04-12 | 2023-05-12 | 霖济智云科技(苏州)有限公司 | 一种服务依赖挖掘方法及微服务的服务调用方法 |
CN116991472A (zh) * | 2023-09-27 | 2023-11-03 | 深圳鲲云信息科技有限公司 | 管理全局资源的方法及计算设备 |
CN116991472B (zh) * | 2023-09-27 | 2023-12-22 | 深圳鲲云信息科技有限公司 | 管理全局资源的方法及计算设备 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111752641A (zh) | 微服务容器之间服务启动方法、装置、设备及存储介质 | |
CN109597655B (zh) | 配置应用程序的方法及装置 | |
CN103905551B (zh) | 一种服务调用方法及装置 | |
CN109327490B (zh) | 一种部署云服务组件的方法和服务器 | |
CN112363775B (zh) | 动态修改微服务配置信息的方法及系统、存储介质 | |
WO2022057429A1 (zh) | 网络注册方法、装置、用户终端及存储介质 | |
US11570258B2 (en) | Profile based content and services | |
EP4092524B1 (en) | Ota differential upgrade method and system of master-slave architecture | |
CN113626225B (zh) | 程序调用方法、终端设备及介质 | |
CN113688183A (zh) | 多类型数据源抽取方法、系统、终端设备以及存储介质 | |
CN113014626A (zh) | 数据服务的管理方法及装置、存储介质及电子装置 | |
CN112527669A (zh) | 本地服务的自测方法及系统 | |
CN109639629B (zh) | 数据访问处理方法、装置、计算机设备和存储介质 | |
CN113709187B (zh) | 多服务器的数据请求方法、装置、设备及存储介质 | |
CN113704107B (zh) | 应用测试方法、装置、设备及计算机可读存储介质 | |
CN113992739B (zh) | 一种局域网ota固件升级装置、方法及系统 | |
CN115208951A (zh) | 请求处理方法、装置、电子设备及计算机可读存储介质 | |
CN112748937B (zh) | 更新eUICC操作系统的方法和装置 | |
CN114585055A (zh) | 车载WiFi接入方法、车辆控制器、云端服务器及移动终端 | |
KR20020081974A (ko) | 단말기를 위한 소프트웨어 다운로드 방법 | |
CN112698817A (zh) | 基于微服务架构的消息接入方法、装置、系统及存储介质 | |
CN111367550A (zh) | 物联网管理系统、方法和设备 | |
CN112685102B (zh) | 一种网关插件热加载方法、装置、设备及介质 | |
CN114245405B (zh) | 一种设备配网方法、电子设备及存储介质 | |
CN113835711B (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 |