CN117009184A - 一种不停机升级维持版本一致性的方法及云原生下的应用 - Google Patents
一种不停机升级维持版本一致性的方法及云原生下的应用 Download PDFInfo
- Publication number
- CN117009184A CN117009184A CN202311148718.0A CN202311148718A CN117009184A CN 117009184 A CN117009184 A CN 117009184A CN 202311148718 A CN202311148718 A CN 202311148718A CN 117009184 A CN117009184 A CN 117009184A
- Authority
- CN
- China
- Prior art keywords
- version
- consistency
- transaction
- information
- micro
- 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
- 238000000034 method Methods 0.000 title claims abstract description 49
- 238000012544 monitoring process Methods 0.000 claims abstract description 32
- 238000012795 verification Methods 0.000 claims abstract description 12
- 238000004422 calculation algorithm Methods 0.000 claims description 23
- 238000012546 transfer Methods 0.000 claims description 18
- 238000003860 storage Methods 0.000 claims description 10
- 150000001875 compounds Chemical class 0.000 claims description 5
- 238000011084 recovery Methods 0.000 claims description 5
- 230000006870 function Effects 0.000 abstract description 42
- 230000008859 change Effects 0.000 abstract description 18
- 238000011161 development Methods 0.000 abstract description 4
- 239000003795 chemical substances by application Substances 0.000 description 23
- 230000008569 process Effects 0.000 description 19
- 230000004044 response Effects 0.000 description 16
- 238000007726 management method Methods 0.000 description 12
- 230000001419 dependent effect Effects 0.000 description 9
- 230000002159 abnormal effect Effects 0.000 description 7
- 238000004458 analytical method Methods 0.000 description 7
- 238000012545 processing Methods 0.000 description 7
- 230000003068 static effect Effects 0.000 description 7
- 238000004891 communication Methods 0.000 description 6
- 238000010586 diagram Methods 0.000 description 5
- 238000009434 installation Methods 0.000 description 4
- 241000380131 Ammophila arenaria Species 0.000 description 3
- 230000005540 biological transmission Effects 0.000 description 3
- 238000005259 measurement Methods 0.000 description 3
- 238000005096 rolling process Methods 0.000 description 3
- 238000012360 testing method Methods 0.000 description 3
- 241000287219 Serinus canaria Species 0.000 description 2
- 239000002131 composite material Substances 0.000 description 2
- 238000005516 engineering process Methods 0.000 description 2
- 230000036541 health Effects 0.000 description 2
- 238000013507 mapping Methods 0.000 description 2
- 230000007246 mechanism Effects 0.000 description 2
- 238000013515 script Methods 0.000 description 2
- 230000001960 triggered effect Effects 0.000 description 2
- 230000005856 abnormality Effects 0.000 description 1
- 230000009286 beneficial effect Effects 0.000 description 1
- 238000004364 calculation method Methods 0.000 description 1
- 238000013500 data storage Methods 0.000 description 1
- 230000008713 feedback mechanism Effects 0.000 description 1
- 230000000977 initiatory effect Effects 0.000 description 1
- 238000002347 injection Methods 0.000 description 1
- 239000007924 injection Substances 0.000 description 1
- 238000002955 isolation Methods 0.000 description 1
- 238000012423 maintenance Methods 0.000 description 1
- 230000014759 maintenance of location Effects 0.000 description 1
- 238000004519 manufacturing process Methods 0.000 description 1
- 238000005457 optimization Methods 0.000 description 1
- 230000002085 persistent effect Effects 0.000 description 1
- 230000008439 repair process Effects 0.000 description 1
- 230000000007 visual effect Effects 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3089—Monitoring arrangements determined by the means or processing involved in sensing the monitored data, e.g. interfaces, connectors, sensors, probes, agents
- G06F11/3093—Configuration details thereof, e.g. installation, enabling, spatial arrangement of the probes
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3003—Monitoring arrangements specially adapted to the computing system or computing system component being monitored
- G06F11/302—Monitoring arrangements specially adapted to the computing system or computing system component being monitored where the computing system component is a software system
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F11/00—Error detection; Error correction; Monitoring
- G06F11/30—Monitoring
- G06F11/3051—Monitoring arrangements for monitoring the configuration of the computing system or of the computing system component, e.g. monitoring the presence of processing resources, peripherals, I/O links, software programs
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/61—Installation
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/60—Software deployment
- G06F8/65—Updates
-
- 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
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Software Systems (AREA)
- Quality & Reliability (AREA)
- Computing Systems (AREA)
- Computer Security & Cryptography (AREA)
- Mathematical Physics (AREA)
- Stored Programmes (AREA)
Abstract
本发明公开了一种不停机升级维持版本一致性的方法,包括以下步骤:(1)建立版本管理规范并利用版本校验工具进行校验和比对;(2)建立事务状态管理规则,统一对运行状态中的事务和动态依赖关系进行管理;(3)收集系统中的微服务信息和多版本微服务之间的版本依赖关系;(4)创建部署云原生环境下不停机升级保证版本一致性的监控系统。本发明可以精确识别软件的更新后的功能和特性,方便用户对应,减少版本号的对应混乱,能够更加清晰地传达版本信息,方便用户和开发人员了解软件的功能变化情况和开发进度。并且在监控系统中增加定义了一些关键性能指标,可以确保应用程序的稳定性和可靠性。
Description
技术领域
本发明涉及一种不停机升级维持版本一致性的方法及云原生下的应用,涉及G06F,具体涉及电数字数据处理领域。
背景技术
云原生是以容器、微服务、DevOps(运维)等技术为基础建立的一套云技术产品体系,云原生环境下的不停机升级有蓝绿发布,滚动发布,金丝雀发布等,蓝绿分布需要准备一个与生产环境相同的环境,考虑数据同步和数据一致性。滚动发布是将系统的每个节点依次升级,但是存在故障恢复和负载均衡的问题,金丝雀发布先经过小范围测试,再扩大使用范围,但是存在监控和反馈机制的问题。在云原生环境下均可以实现不停机升级,但是由于网络延迟,故障和数据同步等问题都会导致微服务器之间存在不一致的问题。升级过程中,不同版本的服务器可能同时存在,服务在新版本中被删除或修改,旧版本中仍然调用,事务调用异常会导致服务调用不一致的问题。如果微服务的API(应用程序编程接口)接口发生变化,其依赖的微服务也要进行修改,否则也会产生版本不一致的问题。微服务会依赖于其他微服务或第三方组件,而组件之间的版本兼容性问题增加了版本依赖关系的复杂性,还会出现版本不一致的问题。
中国发明专利CN202211176658.9公开了一种云原生的数据库变更回退及版本管理方法,通过主机路径或持久性存储卷的方式挂载指定数据库最新版本的数据库schema(提要)变更及回退sql(数据库语言)文件,可以实现自动化执行数据库变更,避免手动执行的繁琐步骤;支持跨版本更新及回退及异常处理;版本校验,防止误操作,且可以重复执行,但还是存在升级后版本不一致的风险。中国发明专利CN202210032241.9公开了一种基于GitOps(版本控制方法)的多云环境升级方法及控制平台,通过捕捉环境快照和快照重放,并借助GitOps仓库的提交和解析,将复杂的微服务架构、数据库对象、种子数据脚本、模版文件等以环境快照的形式固化下来,并通过快照重放方便地在各个环境间传递,让OP(操作码)用户能够自由选择数据存放位置,但是方式的灵活性反而会降低数据的储存安全性,增加升级前后版本一致性的难度。
发明内容
为了解决云原生环境下不停机升级的版本不一致问题,本发明的第一个方面提供了一种不停机升级维持版本一致性的方法,包括以下步骤:
(1)建立版本管理规范并利用版本校验工具进行校验和比对;
(2)建立事务状态管理规则,统一对运行状态中的事务和动态依赖关系进行管理;
(3)收集系统中的微服务信息和多版本微服务之间的版本依赖关系;
(4)创建部署云原生环境下不停机升级保证版本一致性的监控系统。
作为一种优选的实施方式,所述步骤1具体包括:
1.1在版本管理规范中定义版本号的格式和规范;
1.2利用复合哈希算法编写CheckSUM(校验和)校验工具进行版本和文件的一致性检查。
采用一种创新的基于功能驱动的版本号定义方法,和传统采用语义化标准版本格式(x.y.z)不一样的地方在于:增加了基于功能的软件开发版本格式,将每个版本的变化和升级都与具体的功能相关联,可以更加精确地标识软件的功能和特性,方便用户和开发者更加清晰地了解版本之间的差异和变化,同时也可以减少版本号的冲突和混乱。
作为一种优选的实施方式,所述步骤1.1中版本号的格式为<主版本号>.<次版本号>.<修订版本号>-<预发布版本号>+<功能标识符>。
功能标识符是一个简短的字符串,用于表示该版本号所包含的主要功能更新。这种方法的优点在于:版本号的含义清晰明确,能够方便地表达软件版本的更新和变化,预发布版本号的引入能够提高软件的测试和评估效率,减少潜在问题的出现。同时也能够明确表示各个版本所包含的主要功能更新,方便开发人员进行版本管理和控制。
版本一致性校验的主要目的是对上线前的版本信息进行自动化校验,使用复合哈希算法即静态哈希算法和弹性哈希算法相结合的方式编写版本一致性校验工具。与传统仅采用静态哈希算法的区别在于:在软件安装包中预先嵌入版本号或签名,然后使用静态哈希算法计算版本号或签名,再使用弹性哈希算法计算文件的哈希值,将版本数据库中每个哈希值映射到一组虚拟节点,并将版本号一起返回,当文件内容发生改变时,生成的校验和也会随之改变,因此可以通过对比校验和来检查版本文件是否被篡改,以便后续校验文件的版本一致性。检查内容包含版本上线前需要安装的软件包和开源软件安装包的名称、版本号。
所述步骤2建立事务状态管理规则,统一对运行状态中的事务和动态依赖关系进行管理,事务状态管理主要是在事务状态发生变更时,对相应的服务集合信息进行更新保存,为系统提供事务运行时的信息和动态依赖关系信息。通过在分布式系统中协调正在处理中的事务的各种状态,来确保版本信息的一致性和可靠性。
作为一种优选的实施方式,所述步骤2具体包括:
2.1通过流量中转代理收集微服务的事务状态信息;
2.2提取事务信息,依据事务标识和事务状态维护事务状态关系。
作为一种优选的实施方式,所述微服务的事务状态信息包括初始状态,运行状态,终止状态,在途事务处理状态,更新开始状态,版本切换状态,结束撤销状态,事务ID(身份标识号),代理请求状态,缓存状态,重定向状态,访问控制状态,异常执行结果状态信息。
流量中转代理中可以捕捉到在途事务处理状态,更新开始状态,版本切换状态,结束撤销状态,事务ID,代理请求状态,缓存状态,重定向状态,访问控制状态,异常执行结果状态的信息,可以对微服务的运行状态进行更细颗粒度的增强,另一方面还能够定义状态之间的跳转关系,实现对微服务系统更精准的流量控制和管理,最终实现保证升级过程中版本的一致性的作用。
除了插入流量中转代理模块,还添加了对应的事务状态管理器,事务状态管理器在服务网格框架Istio(开源的服务网格)上进行具体设计,利用Istio框架提供的自动注入功能,在对微服务实例进行部署时,对事务状态进行管理可以实现多种功能,包括流量控制、故障恢复、度量、监控、访问控制、认证、鉴权和配额。可以确保正在处理中的事务之间的执行顺序,以避免数据一致性问题和并发执行时的冲突。
流量中转代理会在转发请求到目标服务之前接管所有的外来的请求,生成相应的事务。事务标识是在代理服务器接收到一个请求时生成的一个唯一标识符,用于标识一个事务的开始和结束。在一个事务中,请求和响应都会带有相同的事务标识。代理服务器可以根据事务标识来确保请求和响应的正确匹配,从而维护事务状态关系,保证事务的正确性和一致性。
通过事务标识的匹配,代理服务器可以确保请求和响应的正确匹配,从而保证事务的正确性和一致性。同时,代理服务器也可以根据事务标识来进行一些其他的操作,比如统计事务的处理时间、记录事务的日志,从而保证不停机升级过程中版本的一致性。
作为一种优选的实施方式,所述步骤2.1中事务状态信息的收集步骤具体包括:2.1.1状态储存;2.1.2事务协调;2.1.3事务恢复;2.1.4事务监控。
流量中转代理和事务状态管理器通过流式UDS(Unix Domain Socket进程间通信)方式进行通信,与传统UDS通信方式的区别是,发送方和接收方先建立起连接,然后再进行数据传输,可以保证数据的可靠性,通信更加高效。UDS是一种基于IPC机制的进程间通信方式,它可以在同一台机器上的进程之间进行通信,而无需经过网络协议栈。
UDS流式通信可以通过调用socket()(套接字)函数时指定参数为SOCK_STREAM(稳定数据传输)来创建。这是一种比普通UDS更为高效的通信方式,由于无需进行网络协议栈的处理,因此也同样具有较低的延迟和较高的吞吐量。
流式UDS以文件的形式存在,通过文件系统路径来访问。创建流式UDS时,创建一个Server Socket(服务器插口)和一个Client Socket(客户端插口),Server Socket用于监听客户端的连接请求,而Client Socket用于向Server Socket发起连接请求。在连接建立之后,可以使用Socket(插口)进行数据传输和接收。
步骤3对所有微服务的版本依赖关系进行分析,解决多个系统版本实例之间是否能够准确路由。在微服务架构中,不同的服务可能会依赖不同的库或组件,这些库或组件的版本可能会发生变化。为了保证版本一致性,需要明确每个服务所依赖的库或组件的版本,避免不同服务之间使用不同版本的库或组件导致的兼容性问题。
作为一种优选的实施方式,所述步骤3具体包括:
3.1设计版本依赖管理器,明确每个版本的兼容性与依赖关系;
3.2分析源代码以获得微服务的版本信息;
3.3多个版本的微服务部署保证系统正确路由。
设计版本依赖管理器,通过其中不同组件的相互协作来获取各个版本之间的依赖关系。需要关注的是版本的变更信息,例如版本号的变更,版本号的变更表示微服务的API发生了变更,但是API的变更不会影响到已有的客户端程序的使用,而版本号的变更则表示不兼容的API变更,需要客户端程序进行相应的升级。
作为一种优选的实施方式,所述微服务的版本信息包含常规信息和微服务的配置信息;优选的,所述配置信息包括组件/模块的名称、依赖类型和范围、依赖的传递性、依赖冲突处理策略。
本发明通过直接分析不同系统版本的源代码信息来获得版本依赖关系信息。通过在源代码中查看提交的历史记录和代码变更信息来了解版本号的变化,查看微服务的配置文件,看是否存在包含版本号的配置项。在运行微服务时,可以查看应用的日志或者监控信息,了解版本号的信息。通过微服务的源代码直接获取版本依赖性后,还要定义微服务之间的API(应用程序编程接口)契约,来约束微服务之间的调用关系和版本依赖关系。在版本升级时,如果API契约发生了变更,需要重新定义和发布新的API契约,并通知相关的客户端程序进行升级。
通过使用API网关组件确保微服务请求路由到正确的服务实例,可以将不同版本的微服务封装在API网关后面,通过API网关来路由请求到不同版本的微服务,从而实现系统不同版本间的隔离和管理。
优选的,可列举的API网关组件包括Kong(开源的基于代理服务器微服务的网关)、API Gateway(网关)等。
同时,更新服务注册中心中的服务信息,并通知相应的升级。更新相关的依赖项和版本号,并进行相应的测试和验证。可以保证系统能够正确路由请求到不同版本的微服务上,从而提高系统的可用性和稳定性,确保微服务多版本之间的协作能够顺畅进行。
作为一种优选的实施方式,所述步骤4中采用Prometheus Operator(开源的系统监控和报警系统)来创建部署云原生环境下不停机升级保证版本一致性的监控系统。
通过版本一致性监控系统可以提供不停机升级过程中实时性能指标和运行状况的可视化展示,并对异常进行及时的预警和处理,以便快速发现和解决问题,当发现版本存在问题时,可以通过自动化回滚工具进行快速回滚,以恢复系统的正常运行来保证升级过程中版本的一致性。
作为一种优选的实施方式,所述Prometheus Operator自动部署和管理相关的监控资源,所述监控资源包括服务发现、报警规则、存储配置。
Prometheus Operator是一个Kubernetes Operator(业务流程框架),可以自动部署和管理实例和相关的监控资源,包括服务发现、报警规则、存储配置,并能够实现无缝的自动扩展和版本升级。
作为一种优选的实施方式,所述报警规则中包括事务状态信息、版本依赖关系信息、版本一致性校验信息。
作为一种优选的实施方式,所述监控系统还包括响应时间、请求速率、错误率性能指标。
当性能指标超过预设的阈值时,监控系统将自动触发报警,确保应用程序的稳定性和可靠性。
所述步骤4具体包括:
4.1安装系统,在Kubernetes(容器编排引擎)集群中部署Prometheus Operator,使用kubectl(命令行工具),或者使用Helm(包管理器)来安装Prometheus Operator;
4.2创建实例,使用Prometheus Operator创建Prometheus(监控目标)实例,通过自定义资源定义(CRD)来创建自定义Prometheus实例,在创建过程中指定Prometheus实例的名称、版本、存储配置、数据保留时的信息;
4.3配置服务发现,为了能够监控Kubernetes集群中的应用程序和服务,需要配置Prometheus实例的服务发现功能,通过Prometheus Operator创建ServiceMonitor(服务监视器)资源,用于定义需要监控的服务和指标,并将其与Prometheus实例进行关联,在监控数据中增加包含服务的请求流量、响应时间、成功率、版本撤销状态、事务异常执行结果、版本依赖信息、版本校验信息的状态信息指标,实时了解系统版本一致性情况;
4.4创建报警规则,通过Prometheus Operator创建PrometheusRule(监控规则)资源,用于定义报警规则和报警通知;在创建过程中指定报警规则名称、报警条件、报警通知方式等信息;在定义报警规则时,增加包含版本依赖关系信息(例如某个服务的版本和依赖的其他服务的版本之间的关系),增加包含版本一致性校验的指标(例如某个服务的版本和预期的版本号之间的比较结果);当版本出现不一致时,会触发报警,并发送报警通知,提醒管理员进行处理。
4.5部署Grafana(系统监控看板),为了能够可视化展示监控数据,可以通过Prometheus Operator部署Grafana,可以使用Helm(包管理器)来安装Grafana,并将其与Prometheus实例进行集成。
为了保证版本一致性,在进行Prometheus实例的升级时,需要使用PrometheusOperator提供的自动化扩展和升级功能。可以通过Kubernetes的滚动升级机制,逐步更新Prometheus实例和相关的监控资源,从而在不停机升级过程中实现监控。
本发明的第二个方面提供了一种不停机升级维持版本一致性的方法的应用,应用于云原生环境系统升级中。
附图说明
图1是本发明不停机升级版本一致性保证方法示意图;
图2是本发明版本一致性校验器的复合哈希算法示意图;
图3是本发明事务状态管理器的处理逻辑视图;
图4是本发明版本依赖管理器的各组件架构图;
图5是本发明创建版本一致性监控系统流程图。
与现有技术相比,本发明具有以下有益效果:
(1)本发明所述不停机升级维持版本一致性的方法,通过设立一种基于功能驱动的新型版本号,版本的变化和升级与具体的功能相关,可以精确识别软件的更新后的功能和特性,方便用户对应,减少版本号的对应混乱,能够更加清晰地传达版本信息,方便用户和开发人员了解软件的功能变化情况和开发进度。
(2)本发明所述不停机升级维持版本一致性的方法,流量中转代理模块和事务状态管理器通过流式UDS方式进行通信,发送方和接收方先建立起连接,然后再进行数据传输,可以保证数据的可靠性,并且通信效率更高。
(3)本发明所述不停机升级维持版本一致性的方法,采用Prometheus Operator来进行监控,加入事务状态信息、版本依赖关系信息、版本一致性校验信息进行预警,确保了应用程序的稳定性和可靠性。
具体实施方式
实施例
以产业链数字化云平台系统的不停机升级过程为例子进行具体说明。
流程示意图见图1:一种不停机升级维持版本一致性的方法,包括以下步骤:
(1)建立版本管理规范并利用版本校验工具进行校验和比对;
(2)建立事务状态管理规则,统一对运行状态中的事务和动态依赖关系进行管理;
(3)收集系统中的微服务信息和多版本微服务之间的版本依赖关系;
(4)创建部署云原生环境下不停机升级保证版本一致性的监控系统。
所述步骤1具体包括:
1.1在版本管理规范中定义版本号的格式和规范;
1.2利用复合哈希算法编写CheckSUM校验工具进行版本和文件的一致性检查。
以产业链云平台产业数据服务平台模块为例,该模块正处于开发阶段,当前版本号为<1>.<2>.<2>,现在对其中的某个功能进行了重大改进,因此需要更新版本号。
具体实现的顺序如下:
1.1.1定义主版本号:主版本号用于表示软件的整体架构或功能的变化,当软件的核心功能发生重大变化时,主版本号将增加。该模块核心功能发生了重大变化,因此从版本号<1>.<2>升级到<2>.<0>。
1.1.2定义次版本号:次版本号用于表示软件的功能增强或优化,当软件的某些功能有了新增或者改进时,次版本号将增加。该模块无需升级次版本号;1.1.3定义修订版本号:修订版本号用于表示软件的错误修复或者小的改动,当软件的某些问题得到解决或者进行了小的改动时,修订版本号将增加。该模块无需升级修订版本号;
1.1.4定义预发布版本号:构用于表示软件的预发布版本,包含alpha、beta、rc标识符;该模块仍然处于开发阶段,可能存在较多的问题;因此定义预发布版本号为<2>.<0>.<0>-alpha。
1.1.5定义功能标识符:用于表示软件的构建版本信息,例如编译日期、时间等。它与预发布版本号之间使用加号相连,该模块构建日期为2023年3月31日。定义功能标识符为20230331。
通过以上步骤,产业链云平台产业数据服务平台模块新的版本号可以定义为:<2>.<0>.<0>-alpha+20230331。
利用复合哈希算法设计版本一致性校验器,版本一致性校验器的复合哈希算法示意图见图2。
使用静态哈希算法计算版本号的哈希值,使用弹性哈希算法计算文件的哈希值,并将版本号、哈希值和节点映射关系存储在一个字典中。具体操作步骤为:1.2.1读取文件内容:使用编程语言的文件操作函数,读取需要校验的文件内容;1.2.2进行哈希计算:将版本文件内容通过哈希函数进行计算,生成消息摘要;静态哈希算法将文件和数据哈希为固定长度的哈希值;
1.2.3将哈希值与版本号一起存储在版本数据库中;
1.2.4弹性哈希算法将版本数据库中的每个哈希值映射到一组虚拟节点;
1.2.5当需要校验版本一致性时,使用静态哈希算法计算当前数据的哈希值,并使用弹性哈希算法查找对应的虚拟节点;
1.2.6对于每个虚拟节点,检查其对应的版本号是否与当前版本号相同。如果存在不一致,则表示版本不一致;
1.2.7如果所有虚拟节点的版本号均与当前版本号相同,则表示版本一致;
1.2.8输出校验结果:根据比对结果,版本校验器自动输出校验结果,如“OK(通过)”或“FAILED(错误)”。
算法中使用SHA256哈希算法和MurMurHash3哈希算法,sha256_checksum函数计算一个字节串的SHA256哈希值,murmur3_checksum函数计算一个块的哈希值,file_checksum函数计算文件的checksum。versioned_checksum函数使用静态哈希算法计算版本号的哈希值,使用弹性哈希算法计算文件的checksum,并将版本号的哈希值和checksum拼接为一个字节串返回。
所述步骤2在实现时插入流量中转代理模块和对应的事务状态管理器,所述步骤2具体包括:
2.1通过流量中转代理收集微服务的事务状态信息;
2.2提取事务信息,依据事务标识和事务状态维护事务状态关系。
所述步骤2.1:代理服务器在收到一个请求时,生成一个唯一的事务标识,并将该标识添加到请求头中。在转发请求到目标服务器之前,代理服务器可以将该事务标识保存在本地的一个数据结构中,以便在接收到响应时进行匹配。当代理服务器接收到目标服务器返回的响应时,可以从响应头中获取事务标识,并在本地的数据结构中查找对应的请求。如果找到了对应的请求,代理服务器就可以将响应转发给客户端,并将事务标识从数据结构中删除。如果没有找到对应的请求,代理服务器可以选择丢弃该响应或者返回一个错误码。
如图3所示,图3是产业链数字化云平台系统中的事务状态管理器的处理逻辑视图。
所述2.1具体收集事务状态信息的实现顺序是:
2.1.1状态存储:事务状态管理器在磁盘中存储事务的状态信息,包括初始状态,运行状态,终止状态,在途事务状态,更新开始状态,版本切换状态,结束撤销状态,事务ID,代理请求状态,缓存状态,重定向状态,访问控制状态,异常执行结果状态信息;
2.1.2事务协调:事务状态管理器在分布式系统中协调在途事务状态;
2.1.3事务恢复:事务状态管理器在异常情况下,恢复在途事务状态;
2.1.4事务监控:事务状态管理器监控在途事务的状态变化,以及每个事务的执行状态和结果。
流量中转代理和事务状态管理器通过流式UDS方式进行通信,所述步骤2.2具体操作如下:
2.2.1流量中转代理模块创建一个流式Socket(套接字),并使用bind()函数将socket与本地地址绑定;
2.2.2流量中转代理模块启动监听,使用listen()函数等待事务状态管理器的连接请求;
2.2.3事务状态管理器创建一个流式Socket,并使用connect()函数连接到代理模块的地址;
2.2.4流量中转代理模块使用accept()函数接受事务状态管理器的连接请求,建立连接;
2.2.5事务状态管理器向代理模块发送请求数据,使用send()函数发送数据;
2.2.6流量中转代理模块接收请求数据,使用recv()函数接收数据,然后将请求数据发送到目标服务器;
2.2.7目标服务器返回响应数据,代理模块接收响应数据,使用recv()函数接收数据,然后将响应数据发送到事务状态管理器;
2.2.8事务状态管理器接收响应数据,使用recv()函数接收数据,然后处理响应数据;
2.2.9事务状态管理器向流量中转代理模块发送完成事务的信号,使用send()函数发送信号;
2.2.10流量中转代理模块接收完成事务的信号,使用recv()函数接收信号,然后关闭连接;
2.2.11事务状态管理器关闭连接,使用close()函数关闭Socket。
所述步骤3具体包括:
3.1设计版本依赖管理器,明确每个版本的兼容性与依赖关系;
3.2分析源代码以获得微服务的版本信息;
3.3多个版本的微服务部署保证系统正确路由。
如图4所示,图4是产业链数字化云平台模块中版本依赖管理器的架构图。
所述步骤3.1的具体操作为:
3.1.1版本依赖分析组件提供了API接口;
3.1.2控制中心组件调用API,将各个版本信息分析结果传回控制中心组件;
3.1.3版本依赖分析组件联动其他组件,通过不同组件的相互协作从系统版本的源代码获取版本依赖关系,并将其存储在数据库中;
3.1.4版本依赖分析组件根据Git(开源的分布式版本控制系统)代码仓库地址和版本号,通过在本地拉取代码,并分析源代码以获得微服务的版本信息,并向控制中心返回微服务的分析结果;
3.1.5将微服务的分析结果保存在数据库中,控制中心将微服务的Git代码仓库地址、版本号和名称信息发送到构建中心组件。
所述步骤3.2的具体操作为:
3.2.1控制中心组件在不停机升级过程中不断收集各个版本之间的信息,包含微服务的各类状态、每个微服务实例之间的版本信息;
3.2.2产业链云平台在升级过程中,当依赖的组件或模块有新的版本时,控制中心会更新版本依赖的策略;
3.2.3构建中心组件接收到控制中心发过来的微服务请求和版本信息后,会在Jenkins(自动化开源工具)环境下自动编译微服务,同时构建Docker(应用容器引擎)镜像;
3.2.4构建中心组件在收到控制中心发出的相关请求后,构建模块会生成一个新的Docker镜像,镜像的地址同时会传送至控制中心组件;
3.2.5升级过程中,如果将微服务的Git地址和版本号等信息发送到控制中心组件,控制中心会立刻启动分析程序将信息传递给版本依赖分析组件;
3.2.6构建中心将产业链云平台的微服务的一个版本构建到Docker镜像中,同时将镜像存储在Docker数据库中后,新构建的Docker镜像地址会发送到控制中心并更新到数据库中。
所述步骤3.3的具体操作为:
3.3.1产业链云平台系统中所有微服务的实例,会发送到网关组件,并定向到具体的微服务实例,网关组件根据微服务实例之间的版本依赖关系,将微服务的请求路由到最符合的那个实例;
3.3.2集群代理监控集群中微服务各实例的状态,定期向微服务实例发送健康检查请求,检测微服务实例的健康状态;收集微服务实例的日志,并对日志进行监控和分析,以便发现微服务实例的异常情况;同时使用度量指标监控工具,对微服务实例的度量指标进行监控和分析;
3.3.3开发人员发出部署的微服务版本指令后,控制中心将向集群代理发出请求注册指令,微服务注册实例信息;
3.3.4控制中心组件将根据微服务实例信息来决定是否应该部署,以及应该部署哪些服务,然后,控制中心生成一个部署操作命令列表,包括微服务名称、类型、Docker镜像地址、部署的服务器所有节点信息,这些信息会发送到群集代理组件;
3.3.5网关从集群代理组件获取上述的相关信息后,从控制中心获取微服务部署信息、版本信息和所有节点信息后,网关组件将选择符合版本依赖性要求的实例,最终完成正确的路由。
如图5所示,图5是本发明创建的版本一致性监控系统流程图。
所述步骤4具体包括:
4.1安装系统,在Kubernetes集群中部署Prometheus Operator,通过使用kubectl命令行工具,安装Prometheus Operator;
4.2创建实例,使用Prometheus Operator创建Prometheus实例,通过自定义资源定义(CRD)来创建自定义Prometheus实例,在创建过程中指定Prometheus实例的名称、版本、存储配置、数据保留时间信息;
4.3配置服务发现,为了能够监控Kubernetes集群中的应用程序和服务,配置Prometheus实例的服务发现功能。通过Prometheus Operator创建ServiceMonitor资源,用于定义需要监控的服务和指标,并将其与Prometheus实例进行关联,在监控数据中增加包含服务的请求流量、响应时间、成功率、版本撤销状态、事务异常执行结果、版本依赖信息、版本校验信息的状态信息指标;
4.4创建报警规则,通过Prometheus Operator创建PrometheusRule资源,用于定义报警规则和报警通知,在创建过程中指定报警规则名称、报警条件、报警通知方式的信息,在定义报警规则时,增加包含版本依赖关系信息(某个服务的版本和依赖的其他服务的版本之间的关系),增加包含版本一致性校验的指标(某个服务的版本和预期的版本号之间的比较结果),当版本出现不一致时,会触发报警,并发送报警通知,提醒管理员进行处理。
4.5部署Grafana,通过Prometheus Operator部署Grafana,使用Helm包管理器安装Grafana,并与Prometheus实例进行集成。
Claims (10)
1.一种不停机升级维持版本一致性的方法,其特征在于,包括以下步骤:
(1)建立版本管理规范并利用版本校验工具进行校验和比对;
(2)建立事务状态管理规则,统一对运行状态中的事务和动态依赖关系进行管理;
(3)收集系统中的微服务信息和多版本微服务之间的版本依赖关系;
(4)创建部署云原生环境下不停机升级保证版本一致性的监控系统。
2.根据权利要求1所述不停机升级维持版本一致性的方法,其特征在于,所述步骤1具体包括:
1.1在版本管理规范中定义版本号的格式和规范;
1.2利用复合哈希算法编写CheckSUM校验工具进行版本和文件的一致性检查。
3.根据权利要求2所述不停机升级维持版本一致性的方法,其特征在于,所述步骤1.1中版本号的格式为<主版本号>.<次版本号>.<修订版本号>-<预发布版本号>+<功能标识符>。
4.根据权利要求1所述不停机升级维持版本一致性的方法,其特征在于,所述步骤2具体包括:
2.1通过流量中转代理收集微服务的事务状态信息;
2.2提取事务信息,依据事务标识和事务状态维护事务状态关系。
5.根据权利要求1所述不停机升级维持版本一致性的方法,其特征在于,所述步骤2.1中事务状态信息的收集步骤具体包括:2.1.1状态储存;2.1.2事务协调;2.1.3事务恢复;2.1.4事务监控。
6.根据权利要求1所述不停机升级维持版本一致性的方法,其特征在于,所述步骤3具体包括:
3.1设计版本依赖管理器,明确每个版本的兼容性与依赖关系;
3.2分析源代码以获得微服务的版本信息;
3.3多个版本的微服务部署保证系统正确路由。
7.根据权利要求1所述不停机升级维持版本一致性的方法,其特征在于,所述步骤4中采用Prometheus Operator来创建部署云原生环境下不停机升级保证版本一致性的监控系统。
8.根据权利要求7所述不停机升级维持版本一致性的方法,其特征在于,所述Prometheus Operator自动部署和管理相关的监控资源,所述监控资源包括服务发现、报警规则、存储配置。
9.根据权利要求8所述不停机升级维持版本一致性的方法,其特征在于,所述报警规则中包括事务状态信息、版本依赖关系信息、版本一致性校验信息。
10.一种根据权利要求1-9任一项所述不停机升级维持版本一致性的方法的应用,其特征在于,应用于云原生环境系统升级中。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311148718.0A CN117009184A (zh) | 2023-09-06 | 2023-09-06 | 一种不停机升级维持版本一致性的方法及云原生下的应用 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202311148718.0A CN117009184A (zh) | 2023-09-06 | 2023-09-06 | 一种不停机升级维持版本一致性的方法及云原生下的应用 |
Publications (1)
Publication Number | Publication Date |
---|---|
CN117009184A true CN117009184A (zh) | 2023-11-07 |
Family
ID=88561929
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202311148718.0A Pending CN117009184A (zh) | 2023-09-06 | 2023-09-06 | 一种不停机升级维持版本一致性的方法及云原生下的应用 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN117009184A (zh) |
-
2023
- 2023-09-06 CN CN202311148718.0A patent/CN117009184A/zh active Pending
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CA2457440C (en) | System and method for the automatic installation and configuration of an operating system | |
US8788565B2 (en) | Dynamic and distributed queueing and processing system | |
US10621212B2 (en) | Language tag management on international data storage | |
US20030055809A1 (en) | Methods, systems, and articles of manufacture for efficient log record access | |
US9442822B2 (en) | Providing a visual representation of a sub-set of a visual program | |
CN110196731B (zh) | 一种运维系统、方法及存储介质 | |
US20030177412A1 (en) | Methods, apparatus and computer programs for monitoring and management of integrated data processing systems | |
US20020161840A1 (en) | Adapter for interfacing with a workflow engine | |
CN110851471A (zh) | 分布式日志数据处理方法、装置以及系统 | |
CN111831567B (zh) | 应用的测试环境配置方法、装置、系统和介质 | |
CN113315754A (zh) | 容器出访防火墙智能联动方法及装置、设备、介质 | |
CN111737140A (zh) | 接口自动化测试方法、装置、设备及计算机可读存储介质 | |
US6961940B2 (en) | Dynamically adapting events to capabilities of a management system | |
US8997116B2 (en) | Event logging application programming interface (API) | |
US11200052B1 (en) | Documentation enforcement during compilation | |
US8380729B2 (en) | Systems and methods for first data capture through generic message monitoring | |
CN117009184A (zh) | 一种不停机升级维持版本一致性的方法及云原生下的应用 | |
CN108881338B (zh) | 网络功能虚拟化镜像文件升级的方法及装置 | |
CN113364892B (zh) | 跨多集群服务的域名解析方法、相关方法、装置和系统 | |
CN111897794A (zh) | 数据库的维护方法、装置、电子设备和存储介质 | |
US20230409568A1 (en) | Monitoring metadata synchronization and aggregation | |
WO2023032116A1 (ja) | スクリプト判別装置、スクリプト判別方法およびスクリプト判別システム | |
WO2021147375A1 (zh) | 数据管理方法、装置、设备、计算机可读存储介质及系统 | |
US20050108194A1 (en) | System for verifying a state of an environment | |
CN113434189A (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 |