CN112416459B - 一种解决微服务之间版本强依赖的系统 - Google Patents
一种解决微服务之间版本强依赖的系统 Download PDFInfo
- Publication number
- CN112416459B CN112416459B CN202011322091.2A CN202011322091A CN112416459B CN 112416459 B CN112416459 B CN 112416459B CN 202011322091 A CN202011322091 A CN 202011322091A CN 112416459 B CN112416459 B CN 112416459B
- Authority
- CN
- China
- Prior art keywords
- module
- service
- starting
- version
- services
- 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
- 230000001419 dependent effect Effects 0.000 claims abstract description 29
- 210000001503 joint Anatomy 0.000 claims description 9
- 238000000034 method Methods 0.000 claims description 9
- 230000001360 synchronised effect Effects 0.000 claims description 3
- 238000011835 investigation Methods 0.000 claims 1
- 230000009286 beneficial effect Effects 0.000 abstract description 2
- 238000007689 inspection Methods 0.000 description 2
- 230000007547 defect Effects 0.000 description 1
- 238000010586 diagram Methods 0.000 description 1
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
- G06F8/00—Arrangements for software engineering
- G06F8/70—Software maintenance or management
- G06F8/71—Version control; Configuration management
-
- 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
技术领域
本发明涉及微服务相关技术领域,尤其是指一种解决微服务之间版本强依赖的系统。
背景技术
由于微服务迭代升级过程中对其依赖的其他服务有对应的版本要求,如果版本不匹配会直接导致服务应用不可用。目前比较常用的做法是服务启动后进行检查(人工/自动),无法做到在服务启动时进行检查。
发明内容
本发明是为了克服现有技术中存在上述的不足,提供了一种快速有效进行排查的解决微服务之间版本强依赖的系统。
为了实现上述目的,本发明采用以下技术方案:
一种解决微服务之间版本强依赖的系统,包括定义模块、服务启动模块、解析模块、注册中心模块、计算模块、判断模块、记录模块、启动成功模块、启动失败模块,
定义模块用于声明当前服务所依赖的服务的版本信息,与服务启动模块对接;
服务启动模块用于应用程序启动,与解析模块对接;
解析模块用于读取定义模块中的依赖信息,分别与注册中心模块以及计算模块对接;
注册中心模块用于存储所有服务的版本信息;
计算模块用于读取注册中心模块中的其所依赖的服务版本信息,与判断模块对接;
判断模块用于校验其所依赖的服务版本,分别与气动成功模块和记录模块对接;
记录模块用于输出本次不匹配依赖服务的详细信息,与启动失败模块对接;
启动成功模块用于程序正常启动,并且同步当前服务版本至注册中心模块;
启动失败模块用于程序停止,并且给出记录模块中的提示信息。
根据本发明提供的一种解决微服务之间版本强依赖的方案,通过服务启动过程中的自动检查其强依赖服务的版本,从而能够快速有效的排查、规避问题,使整个系统能够正常工作。
作为优选,所述的定义模块在应用程序中采用配置文件方式定义其依赖服务信息;所述的服务启动模块启动带有定义模块中的配置项的应用程序;所述的解析模块在服务启动模块后读取定义模块中的配置文件,加载至内存中,同时转换配置为集合。
作为优选,在注册中心模块中,每个服务在启动后都会将自身服务及版本写入注册中心模块,供其他服务读取,注册中心采用开源的eureka及zookeeper实现。
作为优选,所述的计算模块先从解析模块中获取已经转换好的依赖服务集合,包括服务名称、要求的版本,然后再从注册中心模块读取每个依赖服务的当前版本,最后进行对比计算得出结果交由判断模块。
作为优选,在判断模块中,根据计算模块得出的结果分为三种情况:
(1)依赖的服务不存在,这种情况交由启动成功模块执行,主要是为了解决两个服务之间相互依赖,如果执行启动失败会造成死循环,最终服务全都启动失败;
(2)依赖的服务存在并且版本不匹配,这种情况交由记录模块,最终需要执行启动失败模块;
(3)依赖的服务存在并且版本匹配,这种情况交由启动成功模块执行。
作为优选,所述的记录模块是处理判断模块中的(1)依赖的服务存在并且版本不匹配这种情况,需要记录具体的依赖服务名称、当前版本、需要的版本至内存中;所述的启动成功模块是处理判断模块中的(2)依赖的服务不存在以及(3)依赖的服务存在并且版本匹配这两种情况,在启动成功后需要将当前服务的服务名称、版本号同步至注册中心模块。
作为优选,所述的启动失败模块是阻止程序启动,同时把记录模块记录在内存中的信息输出至日志中,便于启动人员排查问题。
本发明的有益效果是:通过服务启动过程中的自动检查其强依赖服务的版本,从而能够快速有效的排查、规避问题,使整个系统能够正常工作。
附图说明
图1是本发明的系统框图。
具体实施方式
下面结合附图和具体实施方式对本发明做进一步的描述。
如图1所述的实施例中,一种解决微服务之间版本强依赖的系统,包括定义模块、服务启动模块、解析模块、注册中心模块、计算模块、判断模块、记录模块、启动成功模块、启动失败模块,
定义模块用于声明当前服务所依赖的服务的版本信息,与服务启动模块对接;具体地,在应用程序中采用配置文件方式定义其依赖服务信息,格式采用:服务名:[>][>=][<][<=][=]v版本号。范例:程序中创建一个dependencies.yml,内容如下:
#强依赖服务列表
dependencies:
#用户模块
avap-user:">v1.03"
#数据统计模块
avap-data-statistics:"=v3.1"
#内容管理模块
avap-content-manager:"<=v2.5.8"。
服务启动模块用于应用程序启动,与解析模块对接;具体地,启动带有定义模块中的配置项的应用程序,例如spring-boot微服务启动:java–jar xxx.jar,其中jar内需要包含dependencies.yml文件。
解析模块用于读取定义模块中的依赖信息,分别与注册中心模块以及计算模块对接;具体地,在服务启动模块后读取定义模块中的dependencies.yml配置文件,加载至内存中,同时转换配置为集合,集合类型表示为Map<String,String>类型。
注册中心模块用于存储所有服务的版本信息;具体地,每个服务在启动后都会将自身服务及版本写入注册中心模块,供其他服务读取,注册中心采用开源的eureka及zookeeper实现,重点在于写入格式:服务名:当前版。
计算模块用于读取注册中心模块中的其所依赖的服务版本信息,与判断模块对接;具体地,先从解析模块中获取已经转换好的依赖服务集合,包括服务名称、要求的版本,然后再从注册中心模块读取每个依赖服务的当前版本,最后进行对比计算得出结果交由判断模块。
判断模块用于校验其所依赖的服务版本,分别与气动成功模块和记录模块对接;具体地,根据计算模块得出的结果分为三种情况:
(1)依赖的服务不存在,这种情况交由启动成功模块执行,主要是为了解决两个服务之间相互依赖,如果执行启动失败会造成死循环,最终服务全都启动失败;
(2)依赖的服务存在并且版本不匹配,这种情况交由记录模块,最终需要执行启动失败模块;
(3)依赖的服务存在并且版本匹配,这种情况交由启动成功模块执行。
记录模块用于输出本次不匹配依赖服务的详细信息,与启动失败模块对接;具体地,记录模块是处理判断模块中的(1)依赖的服务存在并且版本不匹配这种情况,需要记录具体的依赖服务名称、当前版本、需要的版本至内存中。
启动成功模块用于程序正常启动,并且同步当前服务版本至注册中心模块;具体地,启动成功模块是处理判断模块中的(2)依赖的服务不存在以及(3)依赖的服务存在并且版本匹配这两种情况,在启动成功后需要将当前服务的服务名称、版本号同步至注册中心模块,格式为:服务名:当前版本。
启动失败模块用于程序停止,并且给出记录模块中的提示信息;具体地,启动失败模块是阻止程序启动,同时把记录模块记录在内存中的信息输出至日志中,便于启动人员排查问题。
综上,根据本发明提供的一种解决微服务之间版本强依赖的方案,通过服务启动过程中的自动检查其强依赖服务的版本,从而能够快速有效的排查、规避问题,使整个系统能够正常工作,已应用于某产品的统一平台中,在升级部署过程中大大减少了系统出错的概率。
Claims (3)
1.一种解决微服务之间版本强依赖的系统,其特征是,包括定义模块、服务启动模块、解析模块、注册中心模块、计算模块、判断模块、记录模块、启动成功模块、启动失败模块,
定义模块用于声明当前服务所依赖的服务的版本信息,与服务启动模块对接;
服务启动模块用于应用程序启动,与解析模块对接;
解析模块用于读取定义模块中的依赖信息,分别与注册中心模块以及计算模块对接;
注册中心模块用于存储所有服务的版本信息;
计算模块用于读取注册中心模块中的其所依赖的服务版本信息,与判断模块对接;
判断模块用于校验其所依赖的服务版本,分别与启动成功模块和记录模块对接;
记录模块用于输出本次不匹配依赖服务的详细信息,与启动失败模块对接;
启动成功模块用于程序正常启动,并且同步当前服务版本至注册中心模块;
启动失败模块用于程序停止,并且给出记录模块中的提示信息;
所述的定义模块在应用程序中采用配置文件方式定义其依赖服务信息;所述的服务启动模块启动带有定义模块中的配置项的应用程序;所述的解析模块在服务启动模块后读取定义模块中的配置文件,加载至内存中,同时转换配置为集合;所述的计算模块先从解析模块中获取已经转换好的依赖服务集合,包括服务名称、要求的版本,然后再从注册中心模块读取每个依赖服务的当前版本,最后进行对比计算得出结果交由判断模块;
在判断模块中,根据计算模块得出的结果分为三种情况:
(1)依赖的服务不存在,这种情况交由启动成功模块执行,主要是为了解决两个服务之间相互依赖,如果执行启动失败会造成死循环,最终服务全都启动失败;
(2)依赖的服务存在并且版本不匹配,这种情况交由记录模块,最终需要执行启动失败模块;
(3)依赖的服务存在并且版本匹配,这种情况交由启动成功模块执行;
所述的记录模块是处理判断模块中的(2)依赖的服务存在并且版本不匹配这种情况,需要记录具体的依赖服务名称、当前版本、需要的版本至内存中;所述的启动成功模块是处理判断模块中的(1)依赖的服务不存在以及(3)依赖的服务存在并且版本匹配这两种情况,在启动成功后需要将当前服务的服务名称、版本号同步至注册中心模块。
2.根据权利要求1所述的一种解决微服务之间版本强依赖的系统,其特征是,在注册中心模块中,每个服务在启动后都会将自身服务及版本写入注册中心模块,供其他服务读取,注册中心采用开源的eureka及zookeeper实现。
3.根据权利要求1所述的一种解决微服务之间版本强依赖的系统,其特征是,所述的启动失败模块是阻止程序启动,同时把记录模块记录在内存中的信息输出至日志中,便于启动人员排查问题。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011322091.2A CN112416459B (zh) | 2020-11-23 | 2020-11-23 | 一种解决微服务之间版本强依赖的系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011322091.2A CN112416459B (zh) | 2020-11-23 | 2020-11-23 | 一种解决微服务之间版本强依赖的系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN112416459A CN112416459A (zh) | 2021-02-26 |
CN112416459B true CN112416459B (zh) | 2024-03-01 |
Family
ID=74777921
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011322091.2A Active CN112416459B (zh) | 2020-11-23 | 2020-11-23 | 一种解决微服务之间版本强依赖的系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN112416459B (zh) |
Families Citing this family (1)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112860708A (zh) * | 2021-03-16 | 2021-05-28 | 深圳前海微众银行股份有限公司 | 数据一致性修复方法、系统、装置及设备 |
Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253999A (zh) * | 2011-07-12 | 2011-11-23 | 北京新媒传信科技有限公司 | 一种服务依赖性的验证方法 |
CN103473100A (zh) * | 2013-09-17 | 2013-12-25 | 中国科学院软件研究所 | 一种基于依赖关系的Web服务替换方法 |
CN106789250A (zh) * | 2016-12-22 | 2017-05-31 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN108153547A (zh) * | 2017-12-26 | 2018-06-12 | 泰康保险集团股份有限公司 | 微服务的版本管理方法、装置、介质及电子设备 |
CN108733406A (zh) * | 2018-05-22 | 2018-11-02 | 山大地纬软件股份有限公司 | 一种支持服务升级版本兼容的微服务开发管理系统及方法 |
CN108762769A (zh) * | 2018-06-04 | 2018-11-06 | 万惠投资管理有限公司 | 微服务应用编排和部署方法、装置及计算机终端 |
CN109491777A (zh) * | 2018-11-12 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 任务执行方法、装置、设备及存储介质 |
CN109842637A (zh) * | 2017-11-24 | 2019-06-04 | 武汉斗鱼网络科技有限公司 | 一种分布式服务注册方法及装置 |
CN109840120A (zh) * | 2018-12-21 | 2019-06-04 | 平安科技(深圳)有限公司 | 解耦微服务发布方法、电子装置及计算机可读存储介质 |
CN109992295A (zh) * | 2018-01-02 | 2019-07-09 | 中兴通讯股份有限公司 | 一种版本管理方法和服务器 |
CN110505219A (zh) * | 2019-08-12 | 2019-11-26 | 南京莱斯信息技术股份有限公司 | 基于dubbo的微服务服务注册控制管理系统及方法 |
CN110636093A (zh) * | 2018-06-25 | 2019-12-31 | 中兴通讯股份有限公司 | 微服务注册和发现方法、设备、存储介质以及微服务系统 |
CN110716815A (zh) * | 2019-10-11 | 2020-01-21 | 集奥聚合(北京)人工智能科技有限公司 | 基于Spring Gateway的微服务各版本定向调用方法 |
CN110716873A (zh) * | 2019-09-24 | 2020-01-21 | 北京计算机技术及应用研究所 | 一种硬件兼容性知识库构建方法 |
CN110968340A (zh) * | 2018-09-29 | 2020-04-07 | 京东数字科技控股有限公司 | 一种实现多版本依赖隔离的方法和装置 |
CN111158741A (zh) * | 2019-12-23 | 2020-05-15 | 北京五八信息技术有限公司 | 监控业务模块对第三方类库依赖关系变化的方法及装置 |
CN111212099A (zh) * | 2018-11-22 | 2020-05-29 | 青岛海信智能商用系统股份有限公司 | 一种微服务管理方法及装置 |
CN111541746A (zh) * | 2020-04-09 | 2020-08-14 | 哈尔滨工业大学 | 面向用户需求变化的多版本并存的微服务自适应方法 |
CN111752641A (zh) * | 2020-06-29 | 2020-10-09 | 深圳壹账通智能科技有限公司 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
CN111857781A (zh) * | 2020-07-23 | 2020-10-30 | 平安普惠企业管理有限公司 | 资源更新方法及相关设备 |
CN111966422A (zh) * | 2020-07-15 | 2020-11-20 | 北京爱知之星科技股份有限公司 | 一种本地化插件服务方法、装置、电子设备及存储介质 |
-
2020
- 2020-11-23 CN CN202011322091.2A patent/CN112416459B/zh active Active
Patent Citations (21)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102253999A (zh) * | 2011-07-12 | 2011-11-23 | 北京新媒传信科技有限公司 | 一种服务依赖性的验证方法 |
CN103473100A (zh) * | 2013-09-17 | 2013-12-25 | 中国科学院软件研究所 | 一种基于依赖关系的Web服务替换方法 |
CN106789250A (zh) * | 2016-12-22 | 2017-05-31 | 焦点科技股份有限公司 | 一种基于容器的服务多版本共存实现方法 |
CN109842637A (zh) * | 2017-11-24 | 2019-06-04 | 武汉斗鱼网络科技有限公司 | 一种分布式服务注册方法及装置 |
CN108153547A (zh) * | 2017-12-26 | 2018-06-12 | 泰康保险集团股份有限公司 | 微服务的版本管理方法、装置、介质及电子设备 |
CN109992295A (zh) * | 2018-01-02 | 2019-07-09 | 中兴通讯股份有限公司 | 一种版本管理方法和服务器 |
CN108733406A (zh) * | 2018-05-22 | 2018-11-02 | 山大地纬软件股份有限公司 | 一种支持服务升级版本兼容的微服务开发管理系统及方法 |
CN108762769A (zh) * | 2018-06-04 | 2018-11-06 | 万惠投资管理有限公司 | 微服务应用编排和部署方法、装置及计算机终端 |
CN110636093A (zh) * | 2018-06-25 | 2019-12-31 | 中兴通讯股份有限公司 | 微服务注册和发现方法、设备、存储介质以及微服务系统 |
CN110968340A (zh) * | 2018-09-29 | 2020-04-07 | 京东数字科技控股有限公司 | 一种实现多版本依赖隔离的方法和装置 |
CN109491777A (zh) * | 2018-11-12 | 2019-03-19 | 北京字节跳动网络技术有限公司 | 任务执行方法、装置、设备及存储介质 |
CN111212099A (zh) * | 2018-11-22 | 2020-05-29 | 青岛海信智能商用系统股份有限公司 | 一种微服务管理方法及装置 |
CN109840120A (zh) * | 2018-12-21 | 2019-06-04 | 平安科技(深圳)有限公司 | 解耦微服务发布方法、电子装置及计算机可读存储介质 |
CN110505219A (zh) * | 2019-08-12 | 2019-11-26 | 南京莱斯信息技术股份有限公司 | 基于dubbo的微服务服务注册控制管理系统及方法 |
CN110716873A (zh) * | 2019-09-24 | 2020-01-21 | 北京计算机技术及应用研究所 | 一种硬件兼容性知识库构建方法 |
CN110716815A (zh) * | 2019-10-11 | 2020-01-21 | 集奥聚合(北京)人工智能科技有限公司 | 基于Spring Gateway的微服务各版本定向调用方法 |
CN111158741A (zh) * | 2019-12-23 | 2020-05-15 | 北京五八信息技术有限公司 | 监控业务模块对第三方类库依赖关系变化的方法及装置 |
CN111541746A (zh) * | 2020-04-09 | 2020-08-14 | 哈尔滨工业大学 | 面向用户需求变化的多版本并存的微服务自适应方法 |
CN111752641A (zh) * | 2020-06-29 | 2020-10-09 | 深圳壹账通智能科技有限公司 | 微服务容器之间服务启动方法、装置、设备及存储介质 |
CN111966422A (zh) * | 2020-07-15 | 2020-11-20 | 北京爱知之星科技股份有限公司 | 一种本地化插件服务方法、装置、电子设备及存储介质 |
CN111857781A (zh) * | 2020-07-23 | 2020-10-30 | 平安普惠企业管理有限公司 | 资源更新方法及相关设备 |
Non-Patent Citations (1)
Title |
---|
移动互联网服务应用技术分析比较;刘红卫;;天津科技;20170715(第07期);第36=38页 * |
Also Published As
Publication number | Publication date |
---|---|
CN112416459A (zh) | 2021-02-26 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110347746B (zh) | 一种异构数据库同步数据一致性校验方法及装置 | |
US8108456B2 (en) | Method and apparatus for migrating the system environment on which the applications depend | |
US8661418B2 (en) | Setting program, workflow creating method, and work flow creating apparatus | |
CN111857880B (zh) | 对话配置项信息管理方法、装置、设备及存储介质 | |
US8862937B2 (en) | Method and system for migrating data from multiple sources | |
CN106775671A (zh) | 一种用于通信系统linux环境中的热补丁修复方法 | |
CN112416459B (zh) | 一种解决微服务之间版本强依赖的系统 | |
CN105245392A (zh) | 基线检查修复方法及装置 | |
CN107357694A (zh) | 开机自检过程中错误事件汇报系统及其方法 | |
CN113384896A (zh) | 基于Unity的资源打包方法、装置、设备及介质 | |
CN112953983A (zh) | Sftp传输方法及装置 | |
CN104899134A (zh) | 域名注册服务器自动化测试系统和方法 | |
CN111813436A (zh) | 一种批量更新配置文件的方法及系统 | |
CN112100070A (zh) | 版本缺陷的检测方法、装置、服务器及存储介质 | |
CN107357792B (zh) | 一种数据解析的方法和装置 | |
CN108984757A (zh) | 一种数据导入方法及设备 | |
CN110198222B (zh) | 一种配电自动化终端即插即用测试方法及测试主站 | |
CN106603289A (zh) | 一种lmt配置文件平滑升级方法 | |
CN113760775A (zh) | 一种消息自动测试方法及装置 | |
CN111694724B (zh) | 分布式表格系统的测试方法、装置、电子设备及存储介质 | |
CN112631839A (zh) | 一种实现数据备份的方法、装置及设备 | |
CN109754093B (zh) | 一种光猫维修系统和管理方法 | |
WO2023051073A1 (zh) | 数据库测试方法、分布式数据库、存储介质 | |
CN109918231B (zh) | 数据重整的异常修复方法、装置、设备和存储介质 | |
CN113779620A (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 |