CN110851167B - 容器环境更新方法、装置、设备及存储介质 - Google Patents
容器环境更新方法、装置、设备及存储介质 Download PDFInfo
- Publication number
- CN110851167B CN110851167B CN201911117816.1A CN201911117816A CN110851167B CN 110851167 B CN110851167 B CN 110851167B CN 201911117816 A CN201911117816 A CN 201911117816A CN 110851167 B CN110851167 B CN 110851167B
- Authority
- CN
- China
- Prior art keywords
- environment
- function module
- container
- container environment
- attribute information
- 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
Images
Classifications
-
- 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
- G06F8/658—Incremental updates; Differential updates
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- General Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Stored Programmes (AREA)
Abstract
本申请实施例提供一种容器环境更新方法、装置、设备及存储介质,其中,方法包括:获取容器环境的镜像文件和当前线上环境的版本文件;分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息;对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果;根据所述对比结果,对所述容器环境进行更新。通过本申请,能够方便环境使用人员或者开发人员快速识别容器环境中的功能模块和配置文件的差异点,进而有针对性的对容器环境进行更新升级。
Description
技术领域
本申请实施例涉及互联网技术领域,涉及但不限于一种容器环境更新方法、装置、设备及存储介质。
背景技术
当前的国际钱包业务对于环境的依赖性较强,而由于环境模块版本较多,所需的稳定环境数量也较大,所以提供稳定可靠的环境势在必行。
相关技术中,通常采用以下两种管理平台实现对环境的管理:第一种,环境部署管理(Deploy)平台,在已有环境基础上,可以支持快速部署特定模块到指定环境;也能快速查看所录入的配置文件与录入基线文件的差异。第二种,需求管理(Req)平台,可以快速比对调试模块与主干模块的差异。
但是,Deploy平台无法对比识别模块版本差异和版本合并冲突,更无法与线上实时基线配置做比较,不能快速生成全新的定制测试环境;Req平台不具备对环境进行快速部署升级的能力。
发明内容
本申请实施例提供一种容器环境更新方法、装置、设备及存储介质,能够实现对容器环境的快速比对,方便环境使用人员或者开发人员快速识别容器环境中的功能模块和配置文件的差异点,从而有针对性的对容器环境替换升级。
本申请实施例的技术方案是这样实现的:
本申请实施例提供一种容器环境更新方法,包括:
获取容器环境的镜像文件和当前线上环境的版本文件;
分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息;
对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果;
根据所述对比结果,对所述容器环境进行更新。
本申请实施例提供一种容器环境更新装置,包括:
获取单元,用于获取容器环境的镜像文件和当前线上环境的版本文件;
解析单元,用于分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息;
对比单元,用于对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果;
更新单元,用于根据所述对比结果,对所述容器环境进行更新。
本申请实施例提供一种容器环境更新设备,包括:
存储器,用于存储可执行指令;处理器,用于执行所述存储器中存储的可执行指令时,实现上述的方法。
本申请实施例提供一种存储介质,存储有可执行指令,用于引起处理器执行时,实现上述的方法。
本申请实施例具有以下有益效果:由于分别解析镜像文件和版本文件,对应得到容器环境的第一属性信息和当前线上环境的第二属性信息;并对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果,如此,根据容器环境的第一属性信息与当前线上环境的第二属性信息进行差异对比,能够得到容器环境中更加准确的差异点,从而方便环境使用人员或者开发人员快速识别容器环境中的功能模块和配置文件的差异点,进而有针对性的对容器环境进行更新升级。
附图说明
图1A是本申请实施例提供的IaaS层、PaaS层和SaaS层的部署关系图;
图1B是本申请实施例提供的容器环境更新的应用场景示意图;
图1C是本申请实施例提供的容器环境更新系统的一个可选的架构示意图;
图2A是本申请实施例提供的信息推荐系统应用于区块链系统的一个可选的结构示意图;
图2B是本申请实施例提供的区块结构的一个可选的示意图;
图3是本申请实施例提供的服务器的结构示意图;
图4是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图5是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图6是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图7是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图8是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图9是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图10是本申请实施例提供的容器环境更新方法的一个可选的流程示意图;
图11A至图11C是本申请实施例提供的容器环境更新方法的界面图;
图12是本申请实施例主干与分支对比不通过的界面图;
图13是本申请实施例提供的环境示意图;
图14是本申请实施例环境比较部分的界面图;
图15A是本申请实施例Test_AAAA版本与Test_AAAA_06版本的差异图;
图15B是本申请实施例添加回退标识示意图。
具体实施方式
为了使本申请的目的、技术方案和优点更加清楚,下面将结合附图对本申请作进一步地详细描述,所描述的实施例不应视为对本申请的限制,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其它实施例,都属于本申请保护的范围。
在以下的描述中,涉及到“一些实施例”,其描述了所有可能实施例的子集,但是可以理解,“一些实施例”可以是所有可能实施例的相同子集或不同子集,并且可以在不冲突的情况下相互结合。除非另有定义,本申请实施例所使用的所有的技术和科学术语与属于本申请实施例的技术领域的技术人员通常理解的含义相同。本申请实施例所使用的术语只是为了描述本申请实施例的目的,不是旨在限制本申请。
对本申请实施例进行进一步详细说明之前,对本申请实施例中涉及的名词和术语进行说明,本申请实施例中涉及的名词和术语适用于如下的解释。
1)应用容器引擎(Docker):指一个开源的应用容器引擎,让开发者可以打包对应的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux操作系统的机器上,也可以实现虚拟化,相互之间不会有任何接口。
2)容器:本文中也指容器环境,它首先是一个相对独立的运行环境,在这一点有点类似于虚拟机,但是不像虚拟机那样彻底。在容器内,应该最小化其对外界的影响,比如不能在容器内把宿主机上的资源全部消耗,这就是资源控制。容器是根据镜像在物理机的操作系统中或者在虚拟机的操作系统中直接创建的实例,它可以被启动、开始、停止或删除。每个容器都包括独立的运行环境(即逻辑上的操作系统,包括用户权限、进程空间、用户空间和网络空间等)以及运行在其中的应用程序。
3)环境:指部署了业务服务的机器集群,包括但不限于测试环境、开发环境和生产环境。
4)镜像:指一个特殊的文件系统,类似于一个模板,是创建容器环境的基础,除了提供容器运行时所需的程序、库、资源、配置等文件外,还包含了一些为运行时准备的一些配置参数(如匿名卷、环境变量、用户等)。镜像不包含任何动态数据,其内容在构建之后也不会被改变。
5)中间模块(Middle):业务服务以共享库(SO,shared object)文件方式部署在Middle目录下,并作为单个服务运行并提供相应能力。
为了更好地理解本申请实施例中提供的容器环境更新方法,首先对相关技术中的容器环境更新方法进行说明:
相关技术中,通常采用Deploy平台或者Req平台实现对环境的管理,其中,Deploy平台是在已有环境基础上,可以支持快速部署特定模块到指定环境,并且也能快速查看所录入的配置文件与录入基线文件的差异。Req平台可以快速比对调试模块与主干模块的差异。
但是,Deploy平台无法对比识别模块版本差异和版本合并冲突,Deploy平台只能获取最新的线上版本的模块和配置,把这些数据获取到,而不能进行之后的比较和环境更新,即无法与线上实时基线配置做比较,不能快速生成全新的定制测试环境;Req平台不具备对环境进行快速部署升级的能力,即Req平台只是部署变更的,能够知道与最新的线上版本有哪些变更,但是不支持快速的变更,并且,Req平台在将容器环境的版本与线上版本进行比较的时候,只能比较版本的文件,不能比较版本的配置参数差异,而配置参数的差异则需要在版本更新之后,才能够根据版本运行结果来确定。
由此可见,相关技术中在进行容器环境的管理和更新时,均不能实现对容器环境的快速比对、快速更新维护,因此不能有针对性的实现对容器环境及时的替换升级。
基于相关技术所存在的至少一个问题,本申请实施例提供一种容器环境更新方法,立足于解决环境冲突管理的问题,可用于生成定制化镜像容器环境,并提供了容器环境中多模块快速比对、快速变更维护的能力。在获取到容器环境的镜像文件和当前线上环境的版本文件之后,分别解析镜像文件和版本文件,对应得到容器环境的第一属性信息和当前线上环境的第二属性信息;并对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果,如此,根据容器环境的第一属性信息与当前线上环境的第二属性信息进行差异对比,能够得到容器环境中更加准确的差异点,从而方便环境使用人员或者开发人员快速识别容器环境中的功能模块和配置文件的差异点,进而有针对性的对容器环境进行更新升级。另外,本申请实施例提供的方案还涉及人工智能的差异点对比技术,比如,可以通过人工智能技术实现对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果,将在下文进行说明。
这里,需要说明的是,人工智能是利用数字计算机或者数字计算机控制的机器模拟、延伸和扩展人的智能,感知环境、获取知识并使用知识获得最佳结果的理论、方法、技术及应用系统。换句话说,人工智能是计算机科学的一个综合技术,它企图了解智能的实质,并生产出一种新的能以人类智能相似的方式做出反应的智能机器。人工智能也就是研究各种智能机器的设计原理与实现方法,使机器具有感知、推理与决策的功能。
人工智能技术是一门综合学科,涉及领域广泛,既有硬件层面的技术也有软件层面的技术。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习等几大方向。
本申请可以采用云技术实现容器环境更新方法,其中,云技术(Cloud technology)是指在广域网或局域网内将硬件、软件、网络等系列资源统一起来,实现数据的计算、储存、处理和共享的一种托管技术。云技术基于云计算商业模式应用的网络技术、信息技术、整合技术、管理平台技术、应用技术等的总称,可以组成资源池,按需所用,灵活便利,云计算技术将变成重要支撑。技术网络系统的后台服务需要大量的计算、存储资源,如视频网站、图片类网站和更多的门户网站。伴随着互联网行业的高度发展和应用,将来每个物品都有可能存在自己的识别标志,都需要传输到后台系统进行逻辑处理,不同程度级别的数据将会分开处理,各类行业数据皆需要强大的系统后盾支撑,只能通过云计算来实现。
云计算是一种计算模式,它将计算任务分布在大量计算机构成的资源池上,使各种应用系统能够根据需要获取计算力、存储空间和信息服务。提供资源的网络被称为“云”。“云”中的资源在使用者看来是可以无限扩展的,并且可以随时获取,按需使用,随时扩展,按使用付费。
作为云计算的基础能力提供商,会建立云计算资源池平台,简称云平台,一般称为基础设施即服务(IaaS,Infrastructure as a Service),在资源池中部署多种类型的虚拟资源,供外部客户选择使用。云计算资源池中主要包括:计算设备(为虚拟化机器,包含操作系统)、存储设备和网络设备。
按照逻辑功能划分,在IaaS层上可以部署平台即服务(PaaS,Platform as aService)层,PaaS层之上再部署软件即服务(SaaS,Software as a Service)层,也可以直接将SaaS层部署在IaaS层上。PaaS层为软件运行的平台,如数据库、web容器等。SaaS层为各式各样的业务软件,如web门户网站、短信群发器等。其中,IaaS层101a、PaaS层102a和SaaS层103a部署关系如图1A所示,一般来说,SaaS层103a和PaaS层102a相对于IaaS层101a是上层。
下面以物理机中的服务器通过使用容器化技术为例,即在虚拟机的操作系统中形成提供通用计算、网络和存储能力的服务的容器,进而形成基于虚拟机和容器的多层架构,说明实现本申请实施例的容器环境更新方法,图1B是本申请实施例提供的容器环境更新的应用场景示意图,如图1B所示,开发者100可以通过提交容器的镜像文件到镜像仓库110,以在镜像仓库110中存储镜像文件,其中,镜像仓库110中保存有多种容器的镜像文件。容器环境更新设备170(以下简称设备170)对应的控制中心通过虚拟化技术在所述设备170上形成至少一个虚拟机(图中示例性的示出了虚拟机171a和虚拟机171b),虚拟机提供镜像文件的开发环境120、测试环境130和线上环境140,其中,开发环境120用于实现对应用程序的镜像文件等进行开发和持续更新,测试环境130用于实现对所开发或所更新的镜像文件进行性能测试,线上环境140即发布环境,用于提供真实用户访问的环境。
举例来说,所述应用程序可以是金融业务APP,那么,所述开发环境120可以为该金融业务APP的开发环境,所述测试环境130可以为该金融业务APP的测试环境,所述线上环境140可以为该金融业务APP的线上环境,所述虚拟机则可以用来承载该金融业务APP后台的服务,例如,该金融业务APP的支付服务、请求输入密码服务和身份验证服务等。
虚拟机可以从镜像仓库110中获取镜像文件,以在开发环境120对镜像文件进行开发和持续更新,在测试环境对镜像文件进行测试,或者在线上环境140对镜像文件对应的容器服务进行上线发布。镜像文件可以在虚拟机的开发环境120和测试环境130运行,通过测试环境对镜像文件测试,测试时的输出数据是不会触及到用户对应的客户端,当测试通过后的镜像文件提交上线后,用户160可以通过客户端150与线上环境140连接,测试后的这个镜像文件对应的版本才会通过客户端150与用户接触,使用户通过客户端150获取容器所实现的服务。其中,线上环境可以是实现任意一种服务的环境,例如,所述线上环境可以实现线上支付服务、商品查询服务和商品比对服务等。
本申请实施例中,所述控制中心可以是运行于所述设备170上的控制进程,也可以是独立于所述设备170的一个控制节点,例如,所述控制节点可以是独立于所述设备170的服务器、物理机设备等。当所述控制节点为与所述设备170相同的另一物理机设备时,则所述控制节点与所述设备170形成服务器集群。
下面说明本申请实施例提供的容器环境更新设备170的示例性应用,本申请实施例提供的设备170可以实施为笔记本电脑,平板电脑,台式计算机,移动设备(例如,移动电话,便携式音乐播放器,个人数字助理,专用消息设备,便携式游戏设备)等各种类型的终端,也可以实施为服务器。下面,将说明设备实施为服务器时的示例性应用。
参见图1C,图1C是本申请实施例提供的容器环境更新系统10的一个可选的架构示意图。为实现支撑一个服务进程,终端(示例性示出了第一终端100-1和第二终端100-2)上均部署有容器环境,所述容器环境中运行有服务进程,终端通过网络200连接服务器300,服务器300通过网络200获取第一终端100-1或第二终端100-2上的容器环境的镜像文件,以及获取当前线上环境的版本文件,服务器300分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息;并对所述第一属性信息和所述第二属性信息进行DIFF对比,得到对比结果;将所述对比结果通过网络200对应发送给第一终端100-1或第二终端100-2,以实现第一终端100-1或第二终端100-2根据所述对比结果,对所述容器环境进行更新。
本申请实施例涉及的容器环境更新系统10也可以是区块链系统的分布式系统101,参见图2A,图2A是本申请实施例提供的容器环境更新系统10应用于区块链系统的一个可选的结构示意图,其中,所述分布式系统101可以是由多个节点102(接入网络中的任意形式的计算设备,如服务器、用户终端)和客户端103形成的分布式节点,节点之间形成组成的点对点(P2P,Peer To Peer)网络,P2P协议是一个运行在传输控制协议(TCP,TransmissionControl Protocol)协议之上的应用层协议。在分布式系统中,任何机器如服务器、终端都可以加入而成为节点,节点包括硬件层、中间层、操作系统层和应用层。
参见图2A示出的区块链系统中各节点的功能,涉及的功能包括:
1)路由,节点具有的基本功能,用于支持节点之间的通信。
节点除具有路由功能外,还可以具有以下功能:
2)应用,用于部署在区块链中,根据实际业务需求而实现特定业务,记录实现功能相关的数据形成记录数据,在记录数据中携带数字签名以表示任务数据的来源,将记录数据发送到区块链系统中的其他节点,供其他节点在验证记录数据来源以及完整性成功时,将记录数据添加到临时区块中。
例如,应用实现的业务包括:
2.1)钱包,用于提供进行电子货币的交易的功能,包括发起交易(即,将当前交易的交易记录发送给区块链系统中的其他节点,其他节点验证成功后,作为承认交易有效的响应,将交易的记录数据存入区块链的临时区块中;当然,钱包还支持查询电子货币地址中剩余的电子货币。
2.2)共享账本,用于提供账目数据的存储、查询和修改等操作的功能,将对账目数据的操作的记录数据发送到区块链系统中的其他节点,其他节点验证有效后,作为承认账目数据有效的响应,将记录数据存入临时区块中,还可以向发起操作的节点发送确认。
2.3)智能合约,计算机化的协议,可以执行某个合约的条款,通过部署在共享账本上的用于在满足一定条件时而执行的代码实现,根据实际的业务需求代码用于完成自动化的交易,例如查询买家所购买商品的物流状态,在买家签收货物后将买家的电子货币转移到商户的地址;当然,智能合约不仅限于执行用于交易的合约,还可以执行对接收的信息进行处理的合约。
3)区块链,包括一系列按照产生的先后时间顺序相互接续的区块(Block),新区块一旦加入到区块链中就不会再被移除,区块中记录了区块链系统中节点提交的记录数据。
4)共识(Consensus),是区块链网络中的一个过程,用于在涉及的多个节点之间对区块中的交易达成一致,达成一致的区块将被追加到区块链的尾部,实现共识的机制包括工作量证明(PoW,Proof of Work)、权益证明(PoS,Proof of Stake)、股份授权证明(DPoS,Delegated Proof-of-Stake)、消逝时间量证明(PoET,Proof of Elapsed Time)等。
参见图2B,图2B是本申请实施例提供的区块结构(Block Structure)的一个可选的示意图,每个区块中包括本区块存储交易记录的哈希值(本区块的哈希值)、以及前一区块的哈希值,各区块通过哈希值连接形成区块链。另外,区块中还可以包括有区块生成时的时间戳等信息。区块链(Blockchain),本质上是一个去中心化的数据库,是一串使用密码学方法相关联产生的数据块,每一个数据块中包含了相关的信息,用于验证其信息的有效性(防伪)和生成下一个区块。
参见图3,图3是本申请实施例提供的服务器300的结构示意图,图3所示的服务器300包括:至少一个处理器310、存储器350、至少一个网络接口320和用户接口330。服务器300中的各个组件通过总线系统340耦合在一起。可理解,总线系统340用于实现这些组件之间的连接通信。总线系统340除包括数据总线之外,还包括电源总线、控制总线和状态信号总线。但是为了清楚说明起见,在图3中将各种总线都标为总线系统340。
处理器310可以是一种集成电路芯片,具有信号的处理能力,例如通用处理器、数字信号处理器(DSP,Digital Signal Processor),或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件等,其中,通用处理器可以是微处理器或者任何常规的处理器等。
用户接口330包括使得能够呈现媒体内容的一个或多个输出装置331,包括一个或多个扬声器和/或一个或多个视觉显示屏。用户接口330还包括一个或多个输入装置332,包括有助于用户输入的用户接口部件,比如键盘、鼠标、麦克风、触屏显示屏、摄像头、其他输入按钮和控件。
存储器350可以是可移除的,不可移除的或其组合。示例性的硬件设备包括固态存储器,硬盘驱动器,光盘驱动器等。存储器350可选地包括在物理位置上远离处理器310的一个或多个存储设备。存储器350包括易失性存储器或非易失性存储器,也可包括易失性和非易失性存储器两者。非易失性存储器可以是只读存储器(ROM,Read Only Memory),易失性存储器可以是随机存取存储器(RAM,Random Access Memory)。本申请实施例描述的存储器350旨在包括任意适合类型的存储器。在一些实施例中,存储器350能够存储数据以支持各种操作,这些数据的示例包括程序、模块和数据结构或者其子集或超集,下面示例性说明。
操作系统351,包括用于处理各种基本系统服务和执行硬件相关任务的系统程序,例如框架层、核心库层、驱动层等,用于实现各种基础业务以及处理基于硬件的任务;
网络通信模块352,用于经由一个或多个(有线或无线)网络接口320到达其他计算设备,示例性的网络接口320包括:蓝牙、无线相容性认证(WiFi)、和通用串行总线(USB,Universal Serial Bus)等;
输入处理模块353,用于对一个或多个来自一个或多个输入装置332之一的一个或多个用户输入或互动进行检测以及翻译所检测的输入或互动。
在一些实施例中,本申请实施例提供的装置可以采用软件方式实现,图3示出了存储在存储器350中的一种容器环境更新装置354,该容器环境更新装置354可以是服务器300中的容器环境更新装置,其可以是程序和插件等形式的软件,包括以下软件模块:获取单元3541、解析单元3542、对比单元3543和更新单元3544,这些模块是逻辑上的,因此根据所实现的功能可以进行任意的组合或进一步拆分。将在下文中说明各个模块的功能。
在另一些实施例中,本申请实施例提供的装置可以采用硬件方式实现,作为示例,本申请实施例提供的装置可以是采用硬件译码处理器形式的处理器,其被编程以执行本申请实施例提供的容器环境更新方法,例如,硬件译码处理器形式的处理器可以采用一个或多个应用专用集成电路(ASIC,Application Specific Integrated Circuit)、DSP、可编程逻辑器件(PLD,Programmable Logic Device)、复杂可编程逻辑器件(CPLD,ComplexProgrammable Logic Device)、现场可编程门阵列(FPGA,Field-Programmable GateArray)或其他电子元件。
下面将结合本申请实施例提供的服务器300的示例性应用和实施,说明本申请实施例提供的容器环境更新方法。参见图4,图4是本申请实施例提供的容器环境更新方法的一个可选的流程示意图,将结合图4示出的步骤进行说明。
步骤S401,获取容器环境的镜像文件和当前线上环境的版本文件。
这里,所述容器环境可以是容器的测试环境、开发环境和生产环境中的任意一种,当所述容器环境部署好之后,所述容器环境不会发生改变,只有对所述容器环境进行更新才能改变或升级所述容器环境。
当所述容器环境是容器的测试环境时,测试人员能够在所述测试环境内对所述容器和所述容器中所运行的服务进程进行测试;当所述容器环境为开发环境时,开发人员可以在所述开发环境内开发所述容器和开发所述容器中所运行的服务进程;当所述容器环境为生产环境时,所述容器和所述容器中所运行的服务进程已经完成开发和测试,并在线上发布以投入生产使用,则用户可以在所述生产环境内,运行所述容器和所述服务进程,以实现对应的服务。
容器环境对应的容器中运行有服务进程,服务进程可以是任意一种服务进程,例如所述服务进程可以是实现金融服务(例如,支付服务)的服务进程。
步骤S402,分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息。
这里,解析所述镜像文件得到所述容器环境的第一属性信息,其中,所述第一属性信息是用于描述所述容器环境的属性的信息,例如,描述所述容器环境的功能模块和配置参数等。解析所述版本文件得到所述当前线上环境的第二属性信息。其中,所述第二属性信息是用于描述所述当前线上环境的属性的信息,例如,描述所述当前线上环境的功能模块和配置参数等。
本申请实施例中,所获取的镜像文件可以包括所述容器环境当前版本的SO文件、通用网关接口(CGI,Common Gateway Interface)信息和版本配置参数等信息,所获取的版本文件也可以包括所述当前线上环境的当前版本的SO文件、CGI信息和版本配置参数等信息。当然,在其他实施例中,所述镜像文件和所述版本文件中还可以包括其他能够用来描述所述容器环境和所述当前线上环境的功能和配置的参数和信息,本申请实施例不做限定。
步骤S403,对所述第一属性信息和所述第二属性信息进行差异对比,得到对比结果。
这里,所述差异对比可以是DIFF对比,所述DIFF对比是采用diff命令(例如,Linux系统中的Linux diff命令)来比较所述第一属性信息和所述第二属性信息之间的差异。在一些实施例中,对第一属性信息和第二属性信息进行DIFF对比,还可以采用信息摘要算法(MD5,Message-Digest Algorithm)或采用可扩展标记语言(XML,Extensible MarkupLanguage)技术进行差异对比的XMLDiff对比方式实现对所述第一属性信息和所述第二属性信息进行对比,其中,在对第一属性信息和第二属性信息进行对比时,不仅可以实现对镜像文件和版本文件进行整体的对比,还可以实现对镜像文件和版本文件内部配置参数的对比。
所述对比结果用于描述所述第一属性信息与所述第二属性信息的区别,所述对比结果中包括所述第一属性信息与所述第二属性信息之间的差异点,以及差异点在所述第一属性信息和所述第二属性信息中所处的位置。
步骤S404,根据所述对比结果,对所述容器环境进行更新。
这里,当所述对比结果表明所述镜像文件与所述版本文件不同时,采用所述当前线上环境的版本文件对所述容器环境的镜像文件进行更新。
在实现的过程中,可以是获取所述对比结果中的差异点,以及所述差异点在所述第一属性信息和所述第二属性信息中所处的位置,然后,在所述差异点所处的位置,对所述差异点进行替换、删除和添加,以实现对所述容器环境的镜像文件进行更新。
本申请实施例中,对所述容器环境的镜像文件进行更新,包括但不限于对所述对比结果中的差异点进行替换、删除和添加,其中,对差异点进行替换是指,当所述第一属性信息中的任一位置的信息与所述第二属性信息对应位置的信息不同时,则可以采用第二属性信息对应位置的信息替换所述第一属性信息中该位置的信息;对差异点进行删除是指,当所述第一属性信息中的任意位置的信息,在第二属性信息对应位置中不存在该信息时,则可以删除第一属性信息中该位置的信息;对差异点进行添加是指,当所述第二属性信息中的任一位置中所存在的信息,在第一属性信息中的对应位置不存在该信息时,则可以将第二属性信息中该位置的信息添加到第一属性信息的对应位置。
本申请实施例提供的容器环境更新方法,由于分别解析镜像文件和版本文件,对应得到容器环境的第一属性信息和当前线上环境的第二属性信息;并对所述第一属性信息和所述第二属性信息进行DIFF对比,得到对比结果,如此,根据容器环境的第一属性信息与当前线上环境的第二属性信息进行DIFF对比,能够得到容器环境中更加准确的差异点,从而方便环境使用人员或者开发人员快速识别容器环境中的功能模块和配置文件的差异点,进而有针对性的对容器环境进行更新升级。
图5是本申请实施例提供的容器环境更新方法的一个可选的流程示意图,如图5所示,所述方法包括以下步骤:
步骤S501,获取容器环境的镜像文件和当前线上环境的版本文件。
这里,所述镜像文件例如可以用于创建能够实现金融服务的容器环境,所述版本文件用于运行所述金融服务对应的程序。
需要说明的是,本申请实施例的方法还可以应用于其他使用容器技术形成容器环境,并通过所形成的容器环境部署服务进程的场景,因此,本申请实施例的方法并不限定于实现金融服务的场景。当本申请实施例的方法应用于其他场景下时,所述镜像文件可以是用于创建能够实现任意场景下的服务的容器环境,则所述版本文件用于运行对应场景下的服务的程序。
步骤S502,分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息。
这里,所述第一属性信息包括所述容器环境的第一配置参数,所述第二属性信息包括所述当前线上环境的第二配置参数。
所述第一配置参数是用于描述所述容器在运行时的参数,例如,所述容器对应的匿名卷、环境变量和用户等参数。所述第二配置参数是用于描述所述当前线上环境在运行时的参数,例如,当前线上环境对应的匿名卷、环境变量和用户等参数。
步骤S503,对所述第一配置参数与所述第二配置参数进行DIFF对比,得到所述第一配置参数与所述第二配置参数之间的至少一条差异参数。
这里,对所述第一配置参数和所述第二配置参数进行DIFF对比,确定所述第一配置参数与所述第二配置参数的差异参数,其中,所述差异参数可以是所述第一配置参数中的参数,也可以是所述第二配置参数中的参数,或者,也可以是所述第一配置参数和所述第二配置参数中的参数。所述差异参数为一条或多条,所述差异参数可以是对应于所述容器环境的同一功能模块的参数,也可以是对应于所述容器环境的不同功能模块的参数。
本申请实施例中,在确定出所述差异参数之后,同时还确定所述差异参数在所述第一配置参数和所述第二配置参数中的位置。通过所述位置能够快速的定位第一配置参数和第二配置参数的区别。
步骤S504,将所述差异参数确定为所述对比结果。
这里,所述对比结果中包括所述差异参数和所述差异参数在所述第一配置参数和所述第二配置参数中的位置。
步骤S505,根据所述对比结果,对所述容器环境进行更新。
本申请实施例提供的容器环境更新方法,能够应用于对实现金融服务的容器环境进行更新,并且由于是根据容器环境的第一属性信息与当前线上环境的第二属性信息进行DIFF对比,能够得到容器环境中更加准确的差异点,从而方便环境使用人员或者开发人员快速识别容器环境中的功能模块和配置文件的差异点,进而有针对性的对容器环境进行更新升级,因此,可以保证金融业务的安全有序进行,保障用户资金的安全。
在一些实施例中,所述容器环境的镜像文件包括所述容器环境中的至少一个第一功能模块,所述当前线上环境的版本文件中包括所述的当前线上环境中的至少一个第二功能模块,图6是本申请实施例提供的容器环境更新方法的一个可选的流程示意图,如图6所示,所述方法包括以下步骤:
步骤S601,获取容器环境的镜像文件和当前线上环境的版本文件。
步骤S602,分别解析所述镜像文件和所述版本文件,对应得到所述容器环境中的至少一个第一功能模块和所述当前线上环境中的至少一个第二功能模块。
这里,所述第一功能模块中包括至少一个分支功能模块,所述第二功能模块中包括至少一个分支功能模块。
步骤S603,分别获取所述第一功能模块中的分支功能模块、和所述第二功能模块中的分支功能模块。
步骤S604,将所述第一功能模块中的分支功能模块的属性信息确定为所述第一属性信息。
这里,将所述第一功能模块中的分支功能模块的属性信息确定为所述第一属性信息,即将所述容器环境中的分支功能模块的属性信息确定为所述第一属性信息。
步骤S605,将所述第二功能模块中的分支功能模块的属性信息确定为所述的第二属性信息。
这里,将所述第二功能模块中的分支功能模块的属性信息确定为所述的第二属性信息,即将所述当前线上环境中的分支功能模块的属性信息确定为所述的第二属性信息。
步骤S606,对所述第一属性信息和所述第二属性信息进行DIFF对比,得到对比结果。
在一些实施例中,所述分支功能模块的属性信息包括:所述分支功能模块的标识和文件大小;对应地,步骤S606还可以通过以下步骤实现:
步骤S6061,对所述第一功能模块中的分支功能模块的标识与所述第二功能模块中的分支功能模块的标识进行对比,得到第一对比结果。
步骤S6062,对所述第一功能模块中的分支功能模块的文件大小与所述第二功能模块中的分支功能模块的文件大小进行对比,得到第二对比结果。
步骤S6063,将所述第一对比结果和所述第二对比结果,确定为所述对比结果。
这里,当所述第一对比结果和所述第二对比结果中的任意一个表明所述第一功能模块的分支功能模块与所述第二功能模块的分支功能模块存在差异时,则所述对比结果表明所述容器环境与所述当前线上环境存在差异。
所述第一对比结果中包括所述第一功能模块中的分支功能模块的标识和所述第二功能模块中的分支功能模块的标识,还包括所述第一功能模块中的分支功能模块的标识与所述第二功能模块中的分支功能模块的标识的差异。所述第二对比结果中包括所述第一功能模块中的分支功能模块的文件大小和所述第二功能模块中的分支功能模块的文件大小,还包括第一功能模块中的分支功能模块的文件大小与所述第二功能模块中的分支功能模块的文件大小的差异。
在另一些实施例中,所述分支功能模块的属性信息包括:所述分支功能模块的配置参数;对应地,步骤S606还可以通过以下步骤实现:
步骤S6064,对所述第一功能模块中的分支功能模块的配置参数与所述第二功能模块中的分支功能模块的配置参数进行对比,得到所述对比结果。
这里,所述对比结果中包括所述第一功能模块中的分支功能模块的配置参数和所述第二功能模块中的分支功能模块的配置参数,还包括所述第一功能模块中的分支功能模块的配置参数与所述第二功能模块中的分支功能模块的配置参数的差异。
步骤S607,根据所述对比结果,对所述容器环境进行更新。
基于图6,图7是本申请实施例提供的容器环境更新方法的一个可选的流程示意图,如图7所示,步骤S607中根据所述对比结果对所述容器环境进行更新,可以通过以下步骤实现:
步骤S701,当所述对比结果表明所述镜像文件与所述版本文件不同时,将所述当前线上环境中新增的分支功能模块,确定为目标分支功能模块。
步骤S702,将所述当前线上环境中与所述容器环境中不同的分支功能模块,确定为目标分支功能模块。
步骤S703,将所述目标分支功能模块更新至所述容器环境的镜像文件中。
本申请实施例中,如果当前线上环境中新增了分支功能模块时,将新增的分支功能模块更新至容器环境的镜像文件中;如果当前线上环境中改变了容器环境中的分支功能模块时,将所改变的分支功能模块更新至所述容器环境的镜像文件中。如此,实现了对容器环境中的差异点的准确更新。
基于图6,在一些实施例中,所述第一功能模块中包括主干功能模块和至少一个分支功能模块,所述第二功能模块中包括主干功能模块和至少一个分支功能模块。图8是本申请实施例提供的容器环境更新方法的一个可选的流程示意图,如图8所示,所述方法还包括以下步骤:
步骤S801,确定所述容器环境中的主干功能模块。
对应地,步骤S607中根据所述对比结果对所述容器环境进行更新可以通过以下步骤实现:
步骤S802,当所述对比结果表明所述容器环境中的分支功能模块与所述当前线上环境中的分支功能模块不同时,将所述当前线上环境中的分支功能模块合并至所述主干功能模块中。
在一些实施例中,对所述容器环境进行更新,可以是删除所述容器环境中的分支功能模块,或者,替换所述容器环境中的分支功能模块。其中,在上述实施例中已经论述了通过当前线上环境中的分支功能模块替换所述容器环境中的分支功能模块的方案,本申请实施例说明当删除所述容器环境中的分支功能模块时的进一步方案,当然,对于替换所述容器环境中的分支功能模块的情况,由于在替换的同时也包括删除容器环境中的分支功能模块的情况,因此,替换容器环境中的分支功能模块的情况请参照本申请实施例的方案。
当对所述容器环境进行更新是删除所述容器环境中的分支功能模块时,如图9所示,基于图4,所述方法还包括以下步骤:
步骤S901,获取对原始容器环境进行更新时所删除的分支功能模块。
步骤S902,为所删除的分支功能模块添加回退标识。
这里,可以在所删除的分支功能模块的标识中添加“.bak”标识作为所述回退标识,从而区别所删除的分支功能模块。
步骤S903,当更新后的容器环境需要回退至所述原始容器环境时,根据所述回退标识获取更新时所删除的分支功能模块。
这里,所述原始容器环境是指未删除所述分支功能模块时对应的容器环境,当更新后的容器环境需要回退至原始容器环境时,可以根据所述回退标识在预设存储单元中查找被删除的分支功能模块,例如,可以将标识中具有“.bak”的分支功能模块确定为所删除的分支功能模块,并获取该分支功能模块。
步骤S904,将所删除的分支功能模块添加至所述更新后的容器环境中。
这里,由于在原始容器环境中删除了该分支功能模块,因此在回退过程中可以将该分支功能模块添加至更新后的容器环境中,需要说明的是,所述分支功能模块在添加的时候,所添加到的位置是与所述原始容器环境中所述分支功能模块所在的位置相同的位置,因此,在将所删除的分支功能模块添加至更新后的容器环境中时,所形成的容器环境与所述原始容器环境相同。
本申请实施例可以对应以下场景:当对容器环境进行更新删除了分支功能模块时,所得到的更新后的容器环境并不能很好的实现服务,或者所得到的更新后的容器环境是用于实现特定的服务,在实现完特定的服务之后,则需要重新回退至原始容器环境下,因此,可以采用本申请实施例提供的方法实现对更新后的容器环境进行回退,从而保证服务的稳定有效实现。
下面,将说明本申请实施例在一个实际的应用场景中的示例性应用。
本申请实施例提供一种容器环境更新方法,立足于解决环境冲突管理的问题。可用于生成定制化Docker镜像容器环境(对应上述的容器环境),提供了容器环境中多模块快速比对、快速变更维护的能力,能解决以下几类场景问题:
1)当研发过程中调试环境不够用,创建了Docker镜像环境,而生成的Docker容器环境使用较久,无法了解当前在用版本与当前线上版本的差异。用户可基于该方案快速查看在使用的容器环境与线上环境所有模块和CGI的版本差异情况;
2)当用户需要构造某种特定版本的环境复现或调试问题,或者需要对在使用的容器环境进行变更,如可通过该工具快速升级特定模块SO,使其与线上某些模块保持一致,避免接口联调因版本差异所造成的适配遗漏;
3)本申请实施例还提供了不同环境模块配置文件快速进行DIFF比对的能力,可快速比对容器中模块的配置文件与线上对应模块的配置差异点,做到快速识别,快速替换;
4)实现模块冲突说明,可以方便开发人员在多分支开发下在准备合并主干(trunk)时,快速识别冲突模块。
本申请实施例提供的技术方案具体分三部分内容提供功能支持:
第一部分,拉取线上版本作为基线:本申请实施例中,可以周期性(例如,每天)同步拉取线上环境对应版本的SO、CGI和版本配置,用于与运行中的容器环境SO、CGI、版本配置进行比对(其中,对比技术有MD5和XMLDiff)。通过比较能快速识别出当前在用环境的差异点,供容器使用人评估哪些服务需要更新。
第二部分,提供快速部署变更功能:容器管理平台上通过实现多用途工具软件(rcopy)功能,支持快速升级回退进行版本变更。即从特定部署平台拉取线上服务SO和线上版本配置参数,用户可以根据需要执行特定脚本将所需更新的服务或版本配置参数快速部署到对应容器环境,其中版本SO和版本配置参数都会覆盖旧的SO和旧的版本配置参数,而原有SO和版本配置参数则会改名增加“.bak”以用于回退。当部署完成后服务支持快速重启服务,服务配置会更新成新网际互连协议(IP,Internet Protocol)信息。最终,实现对已有容器环境的快速升级,在一些实施例中,如有需要也可以用“.bak”文件和SO替换,用于版本快速回退。
第三部分,快速对比调试能力:当开发人员使用容器环境时,一方面,平台还提供了配置文件的DIFF对比功能,可以供用户将不同环境的模块配置文件进行快速比对,有针对地复制增加配置项信息;另一方面当用户需要合并主干代码时,还提供了与主干基线代码进行快速比对能力,方便识别模块差异。
本申请实施例提供的容器环境更新方法,能快速解决环境不够用,环境更新不及时的问题,能够快速部署,方便用户实时升级和回退环境信息。并且具有快速比对能力,能方便环境使用人或者开发人员进行快速识别模块和配置文件的差异点,有针对地对容器环境进行替换升级。
本申请实施例提供的容器环境更新方法能够解决环境冲突和环境变更类问题,为了更好的方便理解本申请实施例所提供的方法,下面对本申请实施例的方法进行说明,图10是本申请实施例提供的容器环境更新方法的一个可选的流程示意图,如图10所示,所述方法包括以下步骤:
步骤S1001,创建容器环境A,并与线上环境进行比较。
这里,由于容器环境A并未发生改变,因此与当前的线上环境(例如可以是2019.05版本)无差异。
步骤S1002,当容器环境A使用一段时间之后,将容器环境A继续与线上环境进行比较。
这里,由于当前的线上环境已经发生改变(例如,当前的线上环境可以是2019.06版本),因此在进行比较时,容器环境A与线上环境产生差异。
本申请实施例中,容器环境A与当前的线上环境之间的差异内容包括但不限于以下至少之一:CGI、模块SO和配置文件。
步骤S1003,基于差异内容对容器环境A进行选择性升级得到容器环境B。
步骤S1004,继续使用容器环境B,当容器环境B使用完成后,释放容器环境B。
本申请实施例提供的方法主要是解决环境差异性问题,具体为创建的Docker镜像环境提供以下几方面能力:查看与线上版本模块SO、配置文件、CGI文件的差异;按需求全量或者指定模块、CGI进行快速变更,生成定制化调试环境;差异对比查看,解决Docker环境与线上环境或其他人模块冲突问题。
本申请实施例提供的方法是结合容器管理平台使用,图11A至图11C是本申请实施例提供的容器环境更新方法的界面图,图11A示出了在容器管理平台基于某一时段的基础镜像(如wallet_基础镜像201905)创建容器环境的界面图。
当创建的容器环境使用一段时间后,点击“环境对比”可查看当前容器环境与最新线上环境版本的差异。具体分模块SO、CGI对比结果,如图11B所示,在当前界面上显示有至少一个模块对比列表,其中图11B中下划线表示的内容为对比出的差异内容。图11C示出了配置文件对比项的内容,如图11C所示,在当前界面上显示有至少一个配置文件对比项,例如,业务系统访问口令、系统配置信息等。其中,图11C中分别示出了配置文件中被删除的第一差异内容1101和基线文件中新增的第二差异内容1102。
本申请实施例中,可以按需进行定制化版本变更。当用户了解了差异,就可以有选择的更新模块进行“部署”升级,此时会拉取所选模块的最新线上版本进行替换。当用户在容器环境中进行编译调试,之后想将代码合并主干时,还也可以将容器模块代码与主干分支版本进行快速比对,识别模块代码冲突。如图12所示,是本申请实施例主干与分支对比不通过的界面图,在当前界面上,显示有主干与分支对比不通过的模块名、版本号和错误详情。
基于本申请实施例提供的容器环境更新方法,可以看出业务研发人员基于该工具方案,能有效解决环境不足,环境版本变更不及时,模块调试差异等问题,在快速使用容器环境的同时,可以有针对的对模块进行定制替换,即可以高效的进行开发和测试了。
在一些实施例中,所述容器环境更新方法还可以应用于金融支付业务,例如,在当前国际钱包支付业务的研发流程中,如图13所示,是本申请实施例提供的环境示意图,主要分四块:产品设计1301、开发调试1302、测试验证1303和发布上线1304,开发调试1302环节在开发数据库(DB,Database)1302a中进行,测试验证1303环节在测试DB 1303a中进行,发布上线1304环节在线上DB 1304a中进行。其中,后三个环节对于环境的依赖性较大,结合现有研发流程,具体分析了“环境”在整个研发流程中的重要地位。通过图13可以看出,Docker环境是研发过程中承上启下的关键。但是为了保证环境的持续稳定,容器管理平台需要提供:快速变更、快速比对的能力,以解决环境长时间使用造成的差异类问题。
本申请实施例的容器环境更新方法主要包括环境比较、模块变更和配置比对三部分内容:
在环境比较部分,如图14所示,可以看出,容器环境A是基于基础环境201905版本创建,但是随着不同业务模块的持续交付,一段时间后,部分业务CGI、业务模块、业务配置会存在变更,例如图14中虚线圈出的业务CGI2、业务模块2和业务模块6。此时本申请实施例的方法就会跨环境将旧环境与新基线环境进行快速比较,重点是针对业务模块二进制文件和配置文件比对(其中,比较方式包括MD5、rdiff和xmldiff等技术,其中,rdiff技术是指采用R语言实现DIFF比对的方式,R语音是用于统计分析、绘图的语言和操作环境)。从而帮助环境使用者了解在用环境的差异情况,方便调试变更。
在模块变更部分,当容器使用者需要使用最新模块进行联调,需要对模块进行变更时,这里以Test_AAAA模块为例,经对比可以发现Test_AAAA_05与Test_AAAA_06版本存在差异,如图15A所示,是Test_AAAA版本与Test_AAAA_06版本的差异图,图中对差异进行了加粗示出。此时,就可以基于本申请实施例提供的rcopy技术能快速拉取线上基线的最新模块。如图15B所示,旧版本的SO会自动备份成带.bak的后缀文件“Test_AAAA_201905.so.bak”,而新拉取的该模块新版本的Test_AAAA_201906.so和配置文件(配置文件中的IP会自动化替换成容器IP,而其它关键信息需要用户有选择更新)会自动部署到容器环境对应模块位置。之后可以执行提供的脚本对该服务进行重启,后续如有需要也可以对版本进行回退。
在配置比对部分,模块配置文件的差异比对,主要是帮助研发人员快速了解不同环境模块的配置文件差异,有选择进行关键内容替换。实现方式上是基于跨平台的计算机程序设计语言(python)的文本对比(difflib)库,将配置文件比较的内容转换成字符串组列表进行比较(其中关键IP信息统一处理略去),再通过difflib中的基于超文本标记语言(HTML,HyperText Markup Language)的DIFF对比方式(即HtmlDiff)类创建HTML表格用来展示文件差异,最后通过makefile方法(其中,makefile定义了一系列的规则来指定哪些文件需要先编译,哪些文件需要后编译,哪些文件需要重新编译,甚至于进行更复杂的功能操作,因为makefile就像一个计算机壳层(Shell)脚本一样,也可以执行操作系统的命令),用来生成一个包含表格的HTML文件,展示差异配置信息。
本申请实施例提供的容器环境更新方法,能够节省开发或者测试人员环境使用过程中的调试和部署成本,使用者可以通过该方案快速查看到环境的差异情况,并针对差异的模块、CGI、配置文件等有选择的进行快速更新升级。再者能解决多环境多分支开发场景下,模块代码冲突问题,方便开发者了解模块代码冲突情况。本申请实施例的方法还可以作为环境治理过程中的解决方案,一方面保证了使用者所用环境的准确性,另一方面也减少了环境问题的干扰能提升研发测试人员的工作效率。
下面继续说明本申请实施例提供的容器环境更新装置354的实施为软件模块的示例性结构,在一些实施例中,如图3所示,存储在存储器350的容器环境更新装置354中的软件模块可以是服务器300中的容器环境更新装置,包括:
获取单元3541,用于获取容器环境的镜像文件和当前线上环境的版本文件;
解析单元3542,用于分别解析所述镜像文件和所述版本文件,对应得到所述容器环境的第一属性信息和所述当前线上环境的第二属性信息;
对比单元3543,用于对所述第一属性信息和所述第二属性信息进行DIFF对比,得到对比结果;
更新单元3544,用于根据所述对比结果,对所述容器环境进行更新。
在一些实施例中,所述第一属性信息包括所述容器环境的第一配置参数,所述第二属性信息包括所述当前线上环境的第二配置参数;所述对比单元还用于:对所述第一配置参数与所述第二配置参数进行DIFF对比,得到所述第一配置参数与所述第二配置参数之间的至少一条差异参数;将所述差异参数确定为所述对比结果。
在一些实施例中,所述镜像文件用于创建能够实现金融服务的容器环境,所述版本文件用于运行所述金融服务对应的程序。
在一些实施例中,所述解析单元还用于:分别解析所述镜像文件和所述版本文件,对应得到所述容器环境中的分支功能模块、和所述当前线上环境中的分支功能模块;将所述容器环境中的分支功能模块的属性信息确定为所述第一属性信息;将所述当前线上环境中的分支功能模块的属性信息确定为所述的第二属性信息。
在一些实施例中,所述更新单元还用于:当所述对比结果表明所述镜像文件与所述版本文件不同时,确定所述当前线上环境中新增的分支功能模块为目标分支功能模块;或者,确定所述当前线上环境中与所述容器环境中不同的分支功能模块为目标分支功能模块;将所述目标分支功能模块更新至所述容器环境的镜像文件中。
在一些实施例中,所述装置还包括:确定单元,用于确定所述容器环境中的主干功能模块;对应地,所述更新单元还用于:当所述对比结果表明所述容器环境中的分支功能模块与所述当前线上环境中的分支功能模块不同时,将所述当前线上环境中的分支功能模块合并至所述主干功能模块中。
在一些实施例中,所述装置还包括:第二获取单元,用于获取对原始容器环境进行更新时所删除的分支功能模块;第一添加单元,用于为所删除的分支功能模块添加回退标识;第三获取单元,用于当更新后的容器环境需要回退至所述原始容器环境时,根据所述回退标识获取更新时所删除的分支功能模块;第二添加单元,用于将所删除的分支功能模块添加至所述更新后的容器环境中。
需要说明的是,本申请实施例装置的描述,与上述方法实施例的描述是类似的,具有同方法实施例相似的有益效果,因此不做赘述。对于本装置实施例中未披露的技术细节,请参照本申请方法实施例的描述而理解。
本申请实施例提供一种存储有可执行指令的存储介质,其中存储有可执行指令,当可执行指令被处理器执行时,将引起处理器执行本申请实施例提供的方法,例如,如图4示出的方法。
在一些实施例中,存储介质可以是铁电存储器(FRAM,Ferromagnetic RandomAccess Memory)、只读存储器(ROM,Read Only Memory)、可编程只读存储器(PROM,Programmable Read Only Memory)、可擦除可编程只读存储器(EPROM,ErasableProgrammable Read Only Memory)、带电可擦可编程只读存储器(EEPROM,ElectricallyErasable Programmable Read Only Memory)、闪存、磁表面存储器、光盘、或光盘只读存储器(CD-ROM,CompactDisk-Read Only Memory)等存储器;也可以是包括上述存储器之一或任意组合的各种设备。
在一些实施例中,可执行指令可以采用程序、软件、软件模块、脚本或代码的形式,按任意形式的编程语言(包括编译或解释语言,或者声明性或过程性语言)来编写,并且其可按任意形式部署,包括被部署为独立的程序或者被部署为模块、组件、子例程或者适合在计算环境中使用的其它单元。
作为示例,可执行指令可以但不一定对应于文件系统中的文件,可以可被存储在保存其它程序或数据的文件的一部分,例如,存储在超文本标记语言(HTML,Hyper TextMarkup Language)文档中的一个或多个脚本中,存储在专用于所讨论的程序的单个文件中,或者,存储在多个协同文件(例如,存储一个或多个模块、子程序或代码部分的文件)中。作为示例,可执行指令可被部署为在一个计算设备上执行,或者在位于一个地点的多个计算设备上执行,又或者,在分布在多个地点且通过通信网络互连的多个计算设备上执行。
以上所述,仅为本申请的实施例而已,并非用于限定本申请的保护范围。凡在本申请的精神和范围之内所作的任何修改、等同替换和改进等,均包含在本申请的保护范围之内。
Claims (6)
1.一种容器环境更新方法,其特征在于,所述方法包括:
获取容器环境的镜像文件和当前线上环境的版本文件,其中,所述镜像文件用于创建实现服务的容器环境,且包括所述容器环境中的分支功能模块,所述版本文件用于运行所述服务对应的程序,且包括所述当前线上环境中的分支功能模块;
分别解析所述镜像文件和所述版本文件,对应得到所述容器环境中的分支功能模块、和所述当前线上环境中的分支功能模块;
将所述容器环境中的分支功能模块的属性信息确定为第一属性信息,以及将所述当前线上环境中的分支功能模块的属性信息确定为第二属性信息;其中,所述第一属性信息包括所述容器环境的第一配置参数,所述第二属性信息包括所述当前线上环境的第二配置参数;
对所述第一配置参数和所述第二配置参数进行差异对比,得到所述第一配置参数与所述第二配置参数之间的至少一条差异参数;所述差异参数对应于所述容器环境中的分支功能模块的参数;
将所述差异参数确定为对比结果;其中,所述对比结果包括所述差异参数和所述差异参数在所述第一配置参数和所述第二配置参数中的位置;
根据所述第一配置参数与所述第二配置参数之间的差异参数,以及所述差异参数在所述第一配置参数和所述第二配置参数中所处的位置,在所述差异参数所处的位置对所述差异参数进行替换、删除和添加至少之一;
当在所述差异参数所处的位置对所述差异参数进行删除时,针对原始容器环境进行更新时所删除的分支功能模块添加回退标识,当需要回退至所述原始容器环境时,根据所述回退标识获取所删除的分支功能模块,并添加至所述更新后的容器环境中。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
当所述对比结果表明所述镜像文件与所述版本文件不同时,将所述当前线上环境中新增的分支功能模块,确定为目标分支功能模块;或者,
将所述当前线上环境中与所述容器环境中不同的分支功能模块,确定为目标分支功能模块;
将所述目标分支功能模块更新至所述容器环境的镜像文件中。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
确定所述容器环境中的主干功能模块;
当所述对比结果表明所述容器环境中的分支功能模块与所述当前线上环境中的分支功能模块不同时,将所述当前线上环境中的分支功能模块合并至所述主干功能模块中。
4.一种容器环境更新装置,其特征在于,包括:
获取单元,用于获取容器环境的镜像文件和当前线上环境的版本文件,其中,所述镜像文件用于创建实现服务的容器环境,且包括所述容器环境中的分支功能模块,所述版本文件用于运行所述服务对应的程序,且包括所述当前线上环境中的分支功能模块;
解析单元,用于分别解析所述镜像文件和所述版本文件,对应得到所述容器环境中的分支功能模块、和所述当前线上环境中的分支功能模块;将所述容器环境中的分支功能模块的属性信息确定为第一属性信息,以及将所述当前线上环境中的分支功能模块的属性信息确定为第二属性信息;其中,所述第一属性信息包括所述容器环境的第一配置参数,所述第二属性信息包括所述当前线上环境的第二配置参数;
对比单元,用于对所述第一配置参数和所述第二配置参数进行差异对比,得到所述第一配置参数与所述第二配置参数之间的至少一条差异参数;所述差异参数对应于所述容器环境中的分支功能模块的参数;将所述差异参数确定为对比结果;其中,所述对比结果包括所述差异参数和所述差异参数在所述第一配置参数和所述第二配置参数中的位置;
更新单元,用于根据所述第一配置参数与所述第二配置参数之间的差异参数,以及所述差异参数在所述第一配置参数和所述第二配置参数中所处的位置,在所述差异参数所处的位置对所述差异参数进行替换、删除和添加至少之一;
第一添加单元,用于当在所述差异参数所处的位置对所述差异参数进行删除时,针对原始容器环境进行更新时所删除的分支功能模块添加回退标识;
第二添加单元,用于当需要回退至所述原始容器环境时,根据所述回退标识获取所删除的分支功能模块,并添加至所述更新后的容器环境中。
5.一种容器环境更新设备,其特征在于,包括:
存储器,用于存储可执行指令;
处理器,用于执行所述存储器中存储的可执行指令时,实现权利要求1至3任一项所述的方法。
6.一种计算机可读存储介质,其特征在于,存储有可执行指令,用于引起处理器执行时,实现权利要求1至3任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911117816.1A CN110851167B (zh) | 2019-11-15 | 2019-11-15 | 容器环境更新方法、装置、设备及存储介质 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201911117816.1A CN110851167B (zh) | 2019-11-15 | 2019-11-15 | 容器环境更新方法、装置、设备及存储介质 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN110851167A CN110851167A (zh) | 2020-02-28 |
CN110851167B true CN110851167B (zh) | 2022-06-10 |
Family
ID=69601848
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201911117816.1A Active CN110851167B (zh) | 2019-11-15 | 2019-11-15 | 容器环境更新方法、装置、设备及存储介质 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN110851167B (zh) |
Families Citing this family (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN112181597B (zh) * | 2020-10-12 | 2024-01-19 | 成都精灵云科技有限公司 | 容器资源使用限制动态更新方法 |
CN112445542A (zh) * | 2020-11-25 | 2021-03-05 | 平安普惠企业管理有限公司 | 系统环境配置的比对方法、装置、设备及存储介质 |
CN112698883A (zh) * | 2020-12-29 | 2021-04-23 | 平安普惠企业管理有限公司 | 一种配置数据处理方法、装置、终端和存储介质 |
CN112711439A (zh) * | 2021-01-19 | 2021-04-27 | 天津飞腾信息技术有限公司 | 一种asic代码转换为fpga代码自动更新方法 |
CN112947965B (zh) * | 2021-03-01 | 2023-10-13 | 北京百度网讯科技有限公司 | 容器化的服务更新方法和装置 |
CN113760325B (zh) * | 2021-05-11 | 2023-08-08 | 腾讯科技(深圳)有限公司 | 容器环境更新方法及装置 |
CN113342378B (zh) * | 2021-06-25 | 2022-08-02 | 浪潮通用软件有限公司 | 一种基于文件系统更新的镜像生成方法、设备及介质 |
CN114866790B (zh) * | 2022-03-25 | 2024-02-27 | 上海哔哩哔哩科技有限公司 | 直播流调度方法及装置 |
CN115421859B (zh) * | 2022-09-13 | 2024-02-13 | 科东(广州)软件科技有限公司 | 配置文件的动态加载方法、装置、计算机设备及存储介质 |
CN115499442B (zh) * | 2022-11-15 | 2023-01-31 | 四川华西集采电子商务有限公司 | 一种基于容器编排的快速部署型云计算架构 |
Family Cites Families (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CA2449534A1 (en) * | 2003-11-14 | 2005-05-14 | Ibm Canada Limited - Ibm Canada Limitee | On-demand software module deployment |
US9063808B2 (en) * | 2008-05-15 | 2015-06-23 | International Business Machines Corporation | Deploying a package for a software application |
US20120117531A1 (en) * | 2010-11-08 | 2012-05-10 | Microsoft Corporation | Instantiating a Software Development Environment From an Environment Class |
CN106201502B (zh) * | 2016-07-06 | 2019-12-06 | 中国银联股份有限公司 | 一种跨主机应用程序部署方法及装置 |
CN106528224B (zh) * | 2016-11-03 | 2020-08-04 | 腾讯科技(深圳)有限公司 | 一种Docker容器的内容更新方法、服务器及系统 |
CN108694117B (zh) * | 2017-04-11 | 2021-10-01 | 北京京东尚科信息技术有限公司 | 基于容器技术的管理测试环境的方法和装置 |
CN107577764A (zh) * | 2017-09-04 | 2018-01-12 | 马上消费金融股份有限公司 | 一种线上环境和测试环境的数据同步的方法及装置 |
US10379841B2 (en) * | 2017-10-13 | 2019-08-13 | International Buisness Machines Corporation | Facilitating automatic container updating within a container-based environment |
CN109240755A (zh) * | 2018-06-28 | 2019-01-18 | 平安科技(深圳)有限公司 | 一种配置文件比对方法和配置文件比对系统 |
-
2019
- 2019-11-15 CN CN201911117816.1A patent/CN110851167B/zh active Active
Also Published As
Publication number | Publication date |
---|---|
CN110851167A (zh) | 2020-02-28 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN110851167B (zh) | 容器环境更新方法、装置、设备及存储介质 | |
Taibi et al. | Continuous architecting with microservices and devops: A systematic mapping study | |
KR20180069819A (ko) | 비주얼 콘텐츠 개발 | |
Achilleos et al. | The cloud application modelling and execution language | |
JP2004272908A (ja) | システムの設計、展開、管理のフェーズを統合する方法 | |
Pacheco | Microservice Patterns and Best Practices: Explore patterns like CQRS and event sourcing to create scalable, maintainable, and testable microservices | |
JP2004272907A (ja) | 分散コンピューティングシステムと、分散アプリケーションの自動化された設計、展開、および管理とのためのアーキテクチャ | |
WO2015126409A1 (en) | Migrating cloud resources | |
CN114371857B (zh) | 数字孪生使能的资产性能和升级管理 | |
CN114070883B (zh) | 测试资源访问方法、装置、电子设备及存储介质 | |
Tran et al. | A framework for automating deployment and evaluation of blockchain networks | |
Lascu et al. | Automatic deployment of component-based applications | |
Rajasekharaiah | Cloud-Based Microservices [M] | |
Buelta | Hands-On Docker for Microservices with Python: Design, deploy, and operate a complex system with multiple microservices using Docker and Kubernetes | |
Bretet | Spring mvc cookbook | |
Matei et al. | Functionizer-a cloud agnostic platform for serverless computing | |
Soldani et al. | Offline mining of microservice-based architectures (extended version) | |
Siebra et al. | Empowering continuous delivery in software development: the DevOps strategy | |
CN116521509A (zh) | 智能合约测试方法、装置、设备、存储介质及产品 | |
Ntentos et al. | Assessing architecture conformance to coupling-related infrastructure-as-code best practices: Metrics and case studies | |
Muli | Beginning DevOps with Docker: automate the deployment of your environment with the power of the Docker toolchain | |
KR102435357B1 (ko) | 블록체인 네트워크 트윈을 이용한 블록체인 통합 개발 및 관리 방법 및 시스템 | |
Schmeling et al. | Kubernetes-Native Pipelines | |
Nosyk | Migration of a legacy web application to the cloud | |
Sanchez et al. | PHP Microservices |
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 | ||
REG | Reference to a national code |
Ref country code: HK Ref legal event code: DE Ref document number: 40022242 Country of ref document: HK |
|
GR01 | Patent grant | ||
GR01 | Patent grant |