CN112416459A - 一种解决微服务之间版本强依赖的系统 - Google Patents

一种解决微服务之间版本强依赖的系统 Download PDF

Info

Publication number
CN112416459A
CN112416459A CN202011322091.2A CN202011322091A CN112416459A CN 112416459 A CN112416459 A CN 112416459A CN 202011322091 A CN202011322091 A CN 202011322091A CN 112416459 A CN112416459 A CN 112416459A
Authority
CN
China
Prior art keywords
module
service
version
starting
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.)
Granted
Application number
CN202011322091.2A
Other languages
English (en)
Other versions
CN112416459B (zh
Inventor
代存折
李妃军
翁成龙
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Hangzhou Arcvideo Technology Co ltd
Original Assignee
Hangzhou Arcvideo Technology Co ltd
Priority date (The priority date 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 date listed.)
Filing date
Publication date
Application filed by Hangzhou Arcvideo Technology Co ltd filed Critical Hangzhou Arcvideo Technology Co ltd
Priority to CN202011322091.2A priority Critical patent/CN112416459B/zh
Publication of CN112416459A publication Critical patent/CN112416459A/zh
Application granted granted Critical
Publication of CN112416459B publication Critical patent/CN112416459B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements 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/44Arrangements for executing specific programs
    • G06F9/445Program loading or initiating
    • G06F9/44505Configuring for program initiating, e.g. using registry, configuration files
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/70Software maintenance or management
    • G06F8/71Version control; Configuration management
    • YGENERAL 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
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE 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/00Energy 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 (8)

1.一种解决微服务之间版本强依赖的系统,其特征是,包括定义模块、服务启动模块、解析模块、注册中心模块、计算模块、判断模块、记录模块、启动成功模块、启动失败模块,
定义模块用于声明当前服务所依赖的服务的版本信息,与服务启动模块对接;
服务启动模块用于应用程序启动,与解析模块对接;
解析模块用于读取定义模块中的依赖信息,分别与注册中心模块以及计算模块对接;
注册中心模块用于存储所有服务的版本信息;
计算模块用于读取注册中心模块中的其所依赖的服务版本信息,与判断模块对接;
判断模块用于校验其所依赖的服务版本,分别与气动成功模块和记录模块对接;
记录模块用于输出本次不匹配依赖服务的详细信息,与启动失败模块对接;
启动成功模块用于程序正常启动,并且同步当前服务版本至注册中心模块;启动失败模块用于程序停止,并且给出记录模块中的提示信息。
2.根据权利要求1所述的一种解决微服务之间版本强依赖的系统,其特征是,所述的定义模块在应用程序中采用配置文件方式定义其依赖服务信息;所述的服务启动模块启动带有定义模块中的配置项的应用程序;所述的解析模块在服务启动模块后读取定义模块中的配置文件,加载至内存中,同时转换配置为集合。
3.根据权利要求1或2所述的一种解决微服务之间版本强依赖的系统,其特征是,在注册中心模块中,每个服务在启动后都会将自身服务及版本写入注册中心模块,供其他服务读取,注册中心采用开源的eureka及zookeeper实现。
4.根据权利要求2所述的一种解决微服务之间版本强依赖的系统,其特征是,所述的计算模块先从解析模块中获取已经转换好的依赖服务集合,包括服务名称、要求的版本,然后再从注册中心模块读取每个依赖服务的当前版本,最后进行对比计算得出结果交由判断模块。
5.根据权利要求1所述的一种解决微服务之间版本强依赖的系统,其特征是,在判断模块中,根据计算模块得出的结果分为三种情况:
(1)依赖的服务不存在,这种情况交由启动成功模块执行,主要是为了解决两个服务之间相互依赖,如果执行启动失败会造成死循环,最终服务全都启动失败;
(2)依赖的服务存在并且版本不匹配,这种情况交由记录模块,最终需要执行启动失败模块;
(3)依赖的服务存在并且版本匹配,这种情况交由启动成功模块执行。
6.根据权利要求5所述的一种解决微服务之间版本强依赖的系统,其特征是,所述的记录模块是处理判断模块中的(1)依赖的服务存在并且版本不匹配这种情况,需要记录具体的依赖服务名称、当前版本、需要的版本至内存中;所述的启动成功模块是处理判断模块中的(2)依赖的服务不存在以及(3)依赖的服务存在并且版本匹配这两种情况,在启动成功后需要将当前服务的服务名称、版本号同步至注册中心模块。
7.根据权利要求1所述的一种解决微服务之间版本强依赖的系统,其特征是,所述的启动失败模块是阻止程序启动,同时把记录模块记录在内存中的信息输出至日志中,便于启动人员排查问题。
8.根据权利要求1或2所述的一种解决微服务之间版本强依赖的系统,其特征是,所述。
CN202011322091.2A 2020-11-23 2020-11-23 一种解决微服务之间版本强依赖的系统 Active CN112416459B (zh)

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 true CN112416459A (zh) 2021-02-26
CN112416459B 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)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860708A (zh) * 2021-03-16 2021-05-28 深圳前海微众银行股份有限公司 数据一致性修复方法、系统、装置及设备

Citations (21)

* Cited by examiner, † Cited by third party
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 北京爱知之星科技股份有限公司 一种本地化插件服务方法、装置、电子设备及存储介质

Patent Citations (21)

* Cited by examiner, † Cited by third party
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)

* Cited by examiner, † Cited by third party
Title
刘红卫;: "移动互联网服务应用技术分析比较", 天津科技, no. 07, 15 July 2017 (2017-07-15), pages 36 *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN112860708A (zh) * 2021-03-16 2021-05-28 深圳前海微众银行股份有限公司 数据一致性修复方法、系统、装置及设备

Also Published As

Publication number Publication date
CN112416459B (zh) 2024-03-01

Similar Documents

Publication Publication Date Title
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
US8862937B2 (en) Method and system for migrating data from multiple sources
CN111857880B (zh) 对话配置项信息管理方法、装置、设备及存储介质
CN112953983A (zh) Sftp传输方法及装置
CN110063042A (zh) 一种数据库故障的响应方法及其终端
CN105760517A (zh) 将数据从Oracle数据库迁移至DB2数据库的方法和装置
CN112416459A (zh) 一种解决微服务之间版本强依赖的系统
CN110990289B (zh) 一种自动提交bug的方法、装置、电子设备及存储介质
CN111694734A (zh) 软件接口校验方法、装置及计算机设备
CN110198222B (zh) 一种配电自动化终端即插即用测试方法及测试主站
CN113760775A (zh) 一种消息自动测试方法及装置
CN108984757A (zh) 一种数据导入方法及设备
WO2023051073A1 (zh) 数据库测试方法、分布式数据库、存储介质
US8473943B2 (en) Using ecoprint for cloning of applications
WO2020000810A1 (zh) 应用组件构建打包方法、装置及计算机存储介质
CN115809197A (zh) 自动化调试方法、装置、终端、系统和存储介质
CN114756623A (zh) 一种非同源数据库同步方法及装置
CN101295314A (zh) 文件管理系统、文件管理方法及其支持设备和程序
CN112099814B (zh) 车机应用软件安装环境管理系统及方法
CN108958827B (zh) 一种处理程序升级故障的方法和系统
JP5101447B2 (ja) テスト支援システム
CN113050925B (zh) 区块链智能合约修复方法及装置
CN115640102B (zh) 基于分布式任务的可重复执行式计算方法、系统和介质
CN115202843A (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