CN109933406B - 基于亲和性调整Docker组件部署的方法和相关设备 - Google Patents

基于亲和性调整Docker组件部署的方法和相关设备 Download PDF

Info

Publication number
CN109933406B
CN109933406B CN201910110281.9A CN201910110281A CN109933406B CN 109933406 B CN109933406 B CN 109933406B CN 201910110281 A CN201910110281 A CN 201910110281A CN 109933406 B CN109933406 B CN 109933406B
Authority
CN
China
Prior art keywords
component
affinity
components
docker
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
Application number
CN201910110281.9A
Other languages
English (en)
Other versions
CN109933406A (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.)
Ping An Technology Shenzhen Co Ltd
Original Assignee
Ping An Technology Shenzhen 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 Ping An Technology Shenzhen Co Ltd filed Critical Ping An Technology Shenzhen Co Ltd
Priority to CN201910110281.9A priority Critical patent/CN109933406B/zh
Publication of CN109933406A publication Critical patent/CN109933406A/zh
Priority to PCT/CN2019/116704 priority patent/WO2020164265A1/zh
Application granted granted Critical
Publication of CN109933406B publication Critical patent/CN109933406B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F8/00Arrangements for software engineering
    • G06F8/60Software deployment
    • 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/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • General Engineering & Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Physics & Mathematics (AREA)
  • Debugging And Monitoring (AREA)

Abstract

本申请提供一种基于亲和性调整Docker组件部署的方法、装置、计算机设备和可读存储介质,涉及分布式部署技术领域,方法包括:根据预设频率,获取预设频率对应时间段内各Docker组件间的运行信息和运行占用信息;解析各组件间的运行信息和各组件的运行占用信息,得到亲和关系;根据各亲和关系生成组件频繁项集;根据各亲和关系和组件频繁项集,调整各组件在各主机群的部署。本申请通过根据预设频率监控系统中各Docker组件的运行信息、运行占用信息,自动解析得到各组件间的亲和关系,再根据优先级和组件间的亲和关系,调整各组件在各主机群上的部署,使得具有较高亲和性的组件可以部署在相同的地域的主机群上,有利于数据通信传输和执行效率。

Description

基于亲和性调整Docker组件部署的方法和相关设备
技术领域
本申请涉及分布式部署技术领域,特别涉及一种基于亲和性调整Docker组件部署的方法和相关设备。
背景技术
在大型的金融系统中,常常使用Docker容器来部署微服务的分布式系统。分布式系统中常常涉及到十几个,甚至是几十个组件,各组件设置在Docker容器中,基于Docker容器来运行分布式系统。各Docker组件的运行需要高效的交互以及合理的资源利用。因此,需要解析出各组件间的亲和关系,以便用于管理哪些Docker组件部署在一起,哪些Docker组件在部署时需要相互隔离。其中,亲和关系是指组件间的亲和性的关系,亲和性用以表现组件间的内在联系是否密切,比如根据组件与组件间运行时的相互调用和资源共享等情况是否频繁,从而判断组件间的亲和性。现有用户通过k8s(Kubernetes)这一内部容器管理系统来实现根据亲和关系对Docker组件的部署。但是,通过k8s进行Docker组件部署时,各组件的亲和关系需要用户通过手动设置非常详细的标签和配置,然后k8s才能根据各组件的标签和配置进行组件间亲和关系的确定。并且,配置和标签一旦确定后,组件间的亲和关系将不能被调整,除非对系统进行重启,才能再次完成组件的部署。
发明内容
本申请的主要目的为提供一种基于亲和性调整Docker组件部署的方法和相关设备,旨在解决现有Docker组件间的亲和关系需要手动设置以及Docker组件的部署不具有即时性的弊端。
为实现上述目的,本申请提供了一种基于亲和性调整Docker组件部署的方法,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有所述主机形成的集群,所述方法包括:
根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
本申请还提供了一种基于亲和性调整Docker组件部署的装置,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有所述主机形成的集群,所述装置包括:
获取模块,用于根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
解析模块,用于解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
第一生成模块,用于调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
调整模块,用于根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
本申请还提供一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器执行所述计算机程序时实现上述任一项所述方法的步骤。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述任一项所述的方法的步骤。
本申请中提供的一种基于亲和性调整Docker组件部署的方法、装置和计算机设备,通过根据预设频率监控系统中各Docker组件的运行信息和运行占用信息,从而自动解析得到各组件间的亲和关系。再根据预设的优先级和组件间的亲和关系,动态调整各组件在各不同地区的主机群上的部署,从而使得具有较高亲和性的组件可以部署在相同的地域的主机群上,有利于数据通信传输和执行效率。
附图说明
图1是本申请一实施例中亲和性调整Docker组件部署的方法步骤示意图;
图2是本申请一实施例中亲和性调整Docker组件部署的装置整体结构框图;
图3是本申请一实施例的计算机设备的结构示意框图。
本申请目的的实现、功能特点及优点将结合实施例,参照附图做进一步说明。
具体实施方式
为了使本申请的目的、技术方案及优点更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
参照图1,本申请一实施例中提供了一种基于亲和性调整Docker组件部署的方法,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有所述主机形成的集群,所述方法包括:
S1:根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
S2:解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
S3:调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
S4:根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
本实施例中,各主机群中的监控服务实时监控docker容器中各docker组件间的运行信息和各docker组件分别对应的运行占用信息。其中,运行信息包括各docker组件间的调用关系信息和资源共享信息;调用关系信息包括各docker组件间相互对应的调用关系和调用次数,由于docker容器组件,即docker组件中的服务在相互调用时,需要将调用请求先发送到API Gateway组件,由API Gateway组件负责将调用请求转发到目的端组件的服务,因此调整系统可以通过监控API Gateway组件中调用请求的转发情况,得到各调用请求对应的发起端组件和目的端组件,从而得到各组件间的相互对应的调用关系,并且通过统计各具有调用关系的调用请求的转发数量,得到具有调用关系的两个组件对应的调用次数;资源共享信息为组件与组件间在运行时共同调用的资源的信息,调整系统通过网络监控可以获取docker容器组件中服务访问资源,并根据访问的资源的请求端得到具有资源共享的情况的两个组件,即组件与组件间在运行时公共调用的资源的对应信息;运行占用信息包括组件服务在运行时的CPU占用率和内存占用量,调整系统通过docker容器中的监控服务可以实时监控得到。调整系统根据预设频率调整各docker组件在各主机群上的部署。因此,调整系统根据预设频率,从各主机群实时监控的所有信息中截取预设频率对应的时间段的各docker组件间的运行信息和各docker组件分别对应的运行占用信息进行下一步的解析。其中,各docker组件分别对应的运行占用信息为预设频率对应的时间段内的平均值。调整系统首先根据各docker组件间的调用次数和预设频率对应的时间段,计算得到各docker组件的调用频率。然后,将各docker组件间的调用频率、各docker组件间的资源共享信息和各docker组件的运行占用信息输入预先构建的亲和关系库中。其中,亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表,调用系统根据映射关系表匹配得到各docker组件间的亲和关系。其中,亲和关系包括亲和信息以及亲和信息对应的两个组件,亲和信息包括亲和、较亲和、违亲和和反亲和。在进行匹配的过程中,部分组件与其它组件不具有任何的亲和关系,具体表示为“无亲和关系”。调整系统根据匹配后得到的各docker组件间的亲和关系,从各组件中筛选得到与其它组件具有确定的亲和关系的各个第一组件,即从所有组件中除去“无亲和关系”的部分组件,得到各个第一组件。调整系统根据筛选得到的各个第一组件以及各组件间的亲和关系,生成各第一组件的亲和关系对应过的亲和性集。其中,亲和性集为具有确定的亲和关系的两个第一组件和对应的亲和信息组成的集合,比如,[组件1,组件2,亲和]。调整系统通过Apriori算法解析所有的亲和性集,统计得到各个第一组件的出现次数以及第一组件的各个亲和信息对应的出现次数,并根据各个第一组件、各个第一组件的出现次数以及第一组件的各亲和信息对应过的出现次数,生成组件频繁项集。比如,各第一组件的亲和性集为:{[组件1,组件2,亲和],[组件2,组件3,反亲和],[组件2,组件4,较亲和]},经过解析后生成的组件频繁项集为:{[组件1,出现次数:1次,亲和:1次,较亲和:0次,违亲和:0次,反亲和:0次],[组件2,出现次数:3次,亲和:1次,较亲和:1次,违亲和:0次,反亲和:1次],[组件3,出现次数:1次,亲和:0次,较亲和:0次,违亲和:0次,反亲和:1次],[组件4,出现次数:1次,亲和:0次,较亲和:1次,违亲和:0次,反亲和:0次]}。调整系统首先根据预先设定的优先级,从组件频繁项集中筛选出优先级第一的第一组件,并将优先级第一的第一组件部署在第一主机群。其中,预先设定的优先级为:出现次数>亲和>较亲和>违亲和>反亲和,各项中又以对应的数值的大小降序排列;第一主机群为各主机群中的任意一台。然后,调整系统根据优先级,从组件频繁项集中筛选出优先级第二的第一组件,并根据亲和关系判断优先级第二的第一组件和优先级第一的第一组件之间是否为亲和或较亲和,即是否符合预设条件,以完成预设条件的判断动作。若符合,则将优先级第二的第一组件部署在第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,已完成部署组件动作。其中,第二主机群为各主机群中除去第一主机群之外的任一主机群,同一主机群为设置在同一地区的所有主机群形成的集群。调整系统依次按照优先级降序从组件频繁项集中筛选第一组件,并逐一与已部署在主机群中的第一组件执行预设条件的判断动作,直至组件频繁项集中的所有第一组件均部署完成。
进一步的,所述运行占用信息包括CPU占用率和内存占用量,所述解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系的步骤,包括:
S201:根据各所述Docker组件间的调用次数和所述预设频率对应的时间段,计算得到各Docker组件间的调用频率;
S202:将各所述Docker组件间的调用频率、各所述Docker组件间的资源共享信息和各所述Docker组件的运行占用信息输入预先构建的亲和关系库中,匹配得到各所述Docker组件间的亲和关系,其中,所述亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表。
本实施例中,调整系统将各Docker组件间的调用次数和预设频率对应的时间段输入预设的计算公式中,计算得到各Docker组件间的调用频率。其中,计算公式为F=N/S,F为调用频率,N为调用次数,S为预设频率对应的时间段,比如,预设频率为30分钟/次,则S为30分钟。在得到各Docker组件间的调用频率后,调整系统将各Docker组件间的调用频率、各Docker组件间的资源共享信息和各Docker组件的运行占用信息输入预先构建的亲和关系库中,根据亲和关系库中存储的组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表,匹配得到各组件间的亲和关系。其中,映射关系表为:
Figure BDA0001967838190000061
Figure BDA0001967838190000071
进一步的,所述Docker组件间的亲和关系包括两个Docker组件对应的亲和信息,所述调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集的步骤,包括:
S301:根据各所述Docker组件间的亲和关系,从各所述Docker组件中筛选得到与其他Docker组件具有确定的亲和关系的各个第一组件;
S302:根据各所述第一组件以及各所述Docker组件间的亲和关系,生成各所述第一组件间的亲和关系对应的亲和性集;
S303:根据各所述亲和性集,统计得到各所述第一组件的出现次数以及各所述第一组件对应的各亲和信息对应的出现次数;
S304:根据各所述第一组件、各所述第一组件的出现次数以及各所述第一组件的各亲和信息对应的出现次数,生成所述组件频繁项集。
本实施例中,调整系统根据匹配得到的各Docker组件间的亲和关系中,包括两个Docker组件对应的亲和信息,比如,亲和关系为:组件1,组件2,亲和,其中“亲和”为亲和信息。调整系统从各Docker组件中筛选得到与其它Docker组件具有确定的亲和关系的各个第一组件,即从所有Docker组件中除去“无亲和关系”的部分Docker组件,得到各个第一组件。调整系统根据筛选得到的各个第一组件以及各Docker组件间的亲和关系,生成各第一组件的亲和关系对应的亲和性集。其中,亲和性集为具有确定的亲和关系的两个第一组件和对应的亲和信息组成的集合,比如,亲和性集为:[组件1,组件2,亲和]。调整系统通过Apriori算法解析所有的亲和性集,统计得到各个第一组件的出现次数以及第一组件的各个亲和信息对应的出现次数,并根据各个第一组件、各个第一组件的出现次数以及第一组件的各亲和信息对应过的出现次数,生成组件频繁项集。比如,各第一组件的亲和性集为:{[组件1,组件2,亲和],[组件2,组件3,反亲和],[组件2,组件4,较亲和]},经过解析后生成的组件频繁项集为:{[组件1,出现次数:1次,亲和:1次,较亲和:0次,违亲和:0次,反亲和:0次],[组件2,出现次数:3次,亲和:1次,较亲和:1次,违亲和:0次,反亲和:1次],[组件3,出现次数:1次,亲和:0次,较亲和:0次,违亲和:0次,反亲和:1次],[组件4,出现次数:1次,亲和:0次,较亲和:1次,违亲和:0次,反亲和:0次]}。
进一步的,所述亲和信息包括亲和、较亲和、违亲和以及反亲和,所述根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署的步骤,包括:
S401:根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第一的第一组件,并将所述优先级第一的第一组件部署在第一主机群,所述第一主机群为各所述主机群中的任一主机群;
S402:根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作,其中,所述预设条件为组件之间的亲和关系为亲和或较亲和;
S403:若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作,其中,所述第二主机群为各所述主机群中除所述第一主机群之外的任一主机群;
S404:依次按照优先级降序从所述组件频繁项集中筛选第一组件,并与当前已部署在主机群的各第一组件逐一执行所述预设条件的判断动作和所述部署组件动作,直至所述组件频繁项集中的所有第一组件均部署完成。
本实施例中,调整系统首先根据预先设定的优先级,从组件频繁项集中筛选出优先级第一的第一组件,并将优先级第一的第一组件部署在第一主机群。其中,预先设定的优先级为:出现次数>亲和>较亲和>违亲和>反亲和,各项中又以对应的数值的大小降序排列;第一主机群为各主机群中的任意一台。然后,调整系统根据优先级,从组件频繁项集中筛选出优先级第二的第一组件,并根据亲和关系判断优先级第二的第一组件和优先级第一的第一组件之间是否为亲和或较亲和,即是否符合预设条件,以完成预设条件的判断动作。若符合,则将优先级第二的第一组件部署在第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作。其中,第二主机群为各主机群中除去第一主机群之外的任一主机群。调整系统依次按照优先级降序从组件频繁项集中筛选第一组件,并与当前已部署在主机群中的各个第一组件逐一执行预设条件的判断动作和部署组件动作,直至组件频繁项集中的所有第一组件均部署完成。比如,组件频繁项集为:{[组件1,出现次数:1次,亲和:1次,较亲和:0次,违亲和:0次,反亲和:0次],[组件2,出现次数:3次,亲和:1次,较亲和:1次,违亲和:0次,反亲和:1次],[组件3,出现次数:1次,亲和:0次,较亲和:0次,违亲和:0次,反亲和:1次],[组件4,出现次数:1次,亲和:0次,较亲和:1次,违亲和:0次,反亲和:0次]}。组件2出现了3次还有1次亲和,优先级第一,首先部署组件2到主机群1上。组件1的出现次数第2,亲和次数相比较多,优先级第二,所以接下来部署组件1。由于组件1和组件2亲和,则将组件1也部署到主机群1中。组件4和组件3,虽然出现次数都是1次,亲和次数都为0,但是组件4是较亲和,组件3是反亲和,所以优先部署组件4。组件4和主机群1上已经部署的组件1没有关联,和组件2是较亲和,所以可以部署在主机群1上。而如果出现违亲和和反亲和的关联,则不能部署在一起,要在新的主机群上独立部署。最后部署组件3,组件3和主机群1中部署的组件2是反亲和的,不能部署到主机群1中,要部署到新的主机群2中。
进一步的,所述将所述优先级第二的第一组件部署在所述第一主机群的步骤,包括:
S4011:判断所述优先级第二的第一组件与所述优先级第一的第一组件之间的亲和关系是否为亲和;
S4012:若是亲和,则将所述优先级第二的第一组件与所述优先级第一的第一组件部署在同一主机;若是较亲和,则将所述优先级第二的第一组件部署在所述第一主机群中的任一主机。
本实施例中,主机群包括多个主机。调整系统在判定优先级第二的第一组件需要与优先级第一的第一组件部署在同一主机群时,还需要判断两个第一组件之间的关系是否为亲和,即为最高亲和度。如果是,则将优先级第二的第一组件与优先级第一的第一组件部署在同一主机上,以便两者之间的数据通信传输和执行效率更高。若不是两个第一组件间的关系为较亲和,则将优先级第二的第一组件随机部署在第一主机群中的任一主机上。
进一步的,所述根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作的步骤中,包括:
S40201:判断当前已部署有第一组件的主机群数量是否不小于2;
S40202:若不小于2,则逐一判断当前次进行部署的第一组件与各所述当前已部署有第一组件的主机群中的各Docker组件之间的亲和关系是否均符合所述预设条件,以完成预设条件的判断动作;
所述若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作的步骤中,包括:
S40301:将所述当前次进行部署的第一组件随机部署在各所述当前已部署有第一组件的主机群中的任意一个。
本实施例中,在当前已部署有第一组件的主机群的数量不小于2时,如果当前次进行部署的第一组件与各个当前已部署有第一组件的主机群中的各组件之间的亲和关系均符合预设条件,则将当前次进行部署的第一组件随机部署在各个当前已部署有第一组件的主机群中的任意一个。比如,当前已部署有第一组件的主机群为:主机群A,已部署的第一组件为a;主机群B,已部署的第一组件为b;主机群C,已部署的第一组件为c。当前次进行部署的第一组件为d,与第一组件a、b、c的亲和关系均为亲和或较亲和,则调整系统将第一组件d随机部署在主机群A、主机群B和主机群C中任意一个。
进一步的,所述根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息的步骤之前,包括:
S5:实时监控API Gateway中调用请求的调用数据,其中,所述调用请求为各所述Docker组件间相互调用时发起的请求,所述调用数据包括请求端组件、目的端组件和调用请求的数量;
S6:根据所述请求端组件和目的端组件生成所述组件与组件间相互对应的调用关系,并根据所述调用请求的数量,更新所述请求端组件和所述目的端组件对应的调用次数;
S7:根据所述组件与组件间相互对应的调用关系和更新后的所述调用次数,生成所述调用关系信息。
本实施例中,docker容器中的组件的服务在相互调用时,需要将调用请求先发送到API Gateway组件,然后由API Gateway组件负责将调用请求转发到目的端组件的服务。调整系统通过各主机中安装的监控服务Agent,监控并从API Gateway组件采集Docker容器服务之间的交互调用数据,其中,调用数据包括请求端组件、目的端组件和调用请求的数量。调整系统根据请求端组件和目的端组件,生成组件与组件间相互对应的调用关系,各组具有调用关系的两个组件记录有对应的调用次数。调整系统根据调用请求的数量,在该组具有调用关系的两个组件原来的调用次数的基础上,再次加上本次调用请求的数量,从而完成对该组具有调用关系的两个组件对应的调用次数的更新。调整系统根据组件与组件间相互对应的调用关系,以及更新后的调用次数,得到该组具有调用关系的两个组件的调用关系信息。
本实施例提供的一种基于亲和性调整Docker组件部署的方法,通过根据预设频率监控系统中各Docker组件的运行信息和运行占用信息,从而自动解析得到各组件间的亲和关系。再根据预设的优先级和组件间的亲和关系,动态调整各组件在各不同地区的主机群上的部署,从而使得具有较高亲和性的组件可以部署在相同的地域的主机群上,有利于数据通信传输和执行效率。
参照图2,本申请一实施例中还提供了一种基于亲和性调整Docker组件部署的装置,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有所述主机形成的集群,所述装置包括:
获取模块1,用于根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
解析模块2,用于解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
第一生成模块3,用于调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
调整模块4,用于根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
本实施例中,各主机群中的监控服务实时监控docker容器中各docker组件间的运行信息和各docker组件分别对应的运行占用信息。其中,运行信息包括各docker组件间的调用关系信息和资源共享信息;调用关系信息包括各docker组件间相互对应的调用关系和调用次数,由于docker容器组件,即docker组件中的服务在相互调用时,需要将调用请求先发送到API Gateway组件,由API Gateway组件负责将调用请求转发到目的端组件的服务,因此调整系统可以通过监控API Gateway组件中调用请求的转发情况,得到各调用请求对应的发起端组件和目的端组件,从而得到各组件间的相互对应的调用关系,并且通过统计各具有调用关系的调用请求的转发数量,得到具有调用关系的两个组件对应的调用次数;资源共享信息为组件与组件间在运行时共同调用的资源的信息,调整系统通过网络监控可以获取docker容器组件中服务访问资源,并根据访问的资源的请求端得到具有资源共享的情况的两个组件,即组件与组件间在运行时公共调用的资源的对应信息;运行占用信息包括组件服务在运行时的CPU占用率和内存占用量,调整系统通过docker容器中的监控服务可以实时监控得到。调整系统根据预设频率调整各docker组件在各主机群上的部署。因此,调整系统根据预设频率,从各主机群实时监控的所有信息中截取预设频率对应的时间段的各docker组件间的运行信息和各docker组件分别对应的运行占用信息进行下一步的解析。其中,各docker组件分别对应的运行占用信息为预设频率对应的时间段内的平均值。调整系统首先根据各docker组件间的调用次数和预设频率对应的时间段,计算得到各docker组件的调用频率。然后,将各docker组件间的调用频率、各docker组件间的资源共享信息和各docker组件的运行占用信息输入预先构建的亲和关系库中。其中,亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表,调用系统根据映射关系表匹配得到各docker组件间的亲和关系。其中,亲和关系包括亲和信息以及亲和信息对应的两个组件,亲和信息包括亲和、较亲和、违亲和和反亲和。在进行匹配的过程中,部分组件与其它组件不具有任何的亲和关系,具体表示为“无亲和关系”。调整系统根据匹配后得到的各docker组件间的亲和关系,从各组件中筛选得到与其它组件具有确定的亲和关系的各个第一组件,即从所有组件中除去“无亲和关系”的部分组件,得到各个第一组件。调整系统根据筛选得到的各个第一组件以及各组件间的亲和关系,生成各第一组件的亲和关系对应过的亲和性集。其中,亲和性集为具有确定的亲和关系的两个第一组件和对应的亲和信息组成的集合,比如,[组件1,组件2,亲和]。调整系统通过Apriori算法解析所有的亲和性集,统计得到各个第一组件的出现次数以及第一组件的各个亲和信息对应的出现次数,并根据各个第一组件、各个第一组件的出现次数以及第一组件的各亲和信息对应过的出现次数,生成组件频繁项集。比如,各第一组件的亲和性集为:{[组件1,组件2,亲和],[组件2,组件3,反亲和],[组件2,组件4,较亲和]},经过解析后生成的组件频繁项集为:{[组件1,出现次数:1次,亲和:1次,较亲和:0次,违亲和:0次,反亲和:0次],[组件2,出现次数:3次,亲和:1次,较亲和:1次,违亲和:0次,反亲和:1次],[组件3,出现次数:1次,亲和:0次,较亲和:0次,违亲和:0次,反亲和:1次],[组件4,出现次数:1次,亲和:0次,较亲和:1次,违亲和:0次,反亲和:0次]}。调整系统首先根据预先设定的优先级,从组件频繁项集中筛选出优先级第一的第一组件,并将优先级第一的第一组件部署在第一主机群。其中,预先设定的优先级为:出现次数>亲和>较亲和>违亲和>反亲和,各项中又以对应的数值的大小降序排列;第一主机群为各主机群中的任意一台。然后,调整系统根据优先级,从组件频繁项集中筛选出优先级第二的第一组件,并根据亲和关系判断优先级第二的第一组件和优先级第一的第一组件之间是否为亲和或较亲和,即是否符合预设条件,以完成预设条件的判断动作。若符合,则将优先级第二的第一组件部署在第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,已完成部署组件动作。其中,第二主机群为各主机群中除去第一主机群之外的任一主机群,同一主机群为设置在同一地区的所有主机群形成的集群。调整系统依次按照优先级降序从组件频繁项集中筛选第一组件,并逐一与已部署在主机群中的第一组件执行预设条件的判断动作,直至组件频繁项集中的所有第一组件均部署完成。
进一步的,所述运行占用信息包括CPU占用率和内存占用量,所述解析模块2,包括:
计算单元,用于根据各所述Docker组件间的调用次数和所述预设频率对应的时间段,计算得到各Docker组件间的调用频率;
匹配单元,用于将各所述Docker组件间的调用频率、各所述Docker组件间的资源共享信息和各所述Docker组件的运行占用信息输入预先构建的亲和关系库中,匹配得到各所述Docker组件间的亲和关系,其中,所述亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表。
本实施例中,调整系统将各Docker组件间的调用次数和预设频率对应的时间段输入预设的计算公式中,计算得到各Docker组件间的调用频率。其中,计算公式为F=N/S,F为调用频率,N为调用次数,S为预设频率对应的时间段,比如,预设频率为30分钟/次,则S为30分钟。在得到各Docker组件间的调用频率后,调整系统将各Docker组件间的调用频率、各Docker组件间的资源共享信息和各Docker组件的运行占用信息输入预先构建的亲和关系库中,根据亲和关系库中存储的组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表,匹配得到各组件间的亲和关系。其中,映射关系表为:
Figure BDA0001967838190000141
Figure BDA0001967838190000151
进一步的,所述Docker组件间的亲和关系包括两个Docker组件对应的亲和信息,所述第一生成模块3,包括:
筛选单元,用于根据各所述Docker组件间的亲和关系,从各所述Docker组件中筛选得到与其他Docker组件具有确定的亲和关系的各个第一组件;
第一生成单元,用于根据各所述第一组件以及各所述Docker组件间的亲和关系,生成各所述第一组件间的亲和关系对应的亲和性集;
统计单元,用于根据各所述亲和性集,统计得到各所述第一组件的出现次数以及各所述第一组件对应的各亲和信息对应的出现次数;
第二生成单元,用于根据各所述第一组件、各所述第一组件的出现次数以及各所述第一组件的各亲和信息对应的出现次数,生成所述组件频繁项集。
本实施例中,调整系统根据匹配得到的各Docker组件间的亲和关系中,包括两个Docker组件对应的亲和信息,比如,亲和关系为:组件1,组件2,亲和,其中“亲和”为亲和信息。调整系统从各Docker组件中筛选得到与其它Docker组件具有确定的亲和关系的各个第一组件,即从所有Docker组件中除去“无亲和关系”的部分Docker组件,得到各个第一组件。调整系统根据筛选得到的各个第一组件以及各Docker组件间的亲和关系,生成各第一组件的亲和关系对应的亲和性集。其中,亲和性集为具有确定的亲和关系的两个第一组件和对应的亲和信息组成的集合,比如,亲和性集为:[组件1,组件2,亲和]。调整系统通过Apriori算法解析所有的亲和性集,统计得到各个第一组件的出现次数以及第一组件的各个亲和信息对应的出现次数,并根据各个第一组件、各个第一组件的出现次数以及第一组件的各亲和信息对应过的出现次数,生成组件频繁项集。比如,各第一组件的亲和性集为:{[组件1,组件2,亲和],[组件2,组件3,反亲和],[组件2,组件4,较亲和]},经过解析后生成的组件频繁项集为:{[组件1,出现次数:1次,亲和:1次,较亲和:0次,违亲和:0次,反亲和:0次],[组件2,出现次数:3次,亲和:1次,较亲和:1次,违亲和:0次,反亲和:1次],[组件3,出现次数:1次,亲和:0次,较亲和:0次,违亲和:0次,反亲和:1次],[组件4,出现次数:1次,亲和:0次,较亲和:1次,违亲和:0次,反亲和:0次]}。
进一步的,所述亲和信息包括亲和、较亲和、违亲和以及反亲和,所述调整模块4,包括:
第一部署单元,用于根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第一的第一组件,并将所述优先级第一的第一组件部署在第一主机群,所述第一主机群为各所述主机群中的任一主机群;
判断单元,用于根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作,其中,所述预设条件为组件之间的亲和关系为亲和或较亲和;
第二部署单元,用于将所述优先级第二的第一组件部署在所述第一主机群;或者,用于将优先级第二的第一组件部署在第二主机群,以完成部署组件动作,其中,所述第二主机群为各所述主机群中除所述第一主机群之外的任一主机群;
循环单元,用于依次按照优先级降序从所述组件频繁项集中筛选第一组件,并与当前已部署在主机群的各第一组件逐一执行所述预设条件的判断动作和所述部署组件动作,直至所述组件频繁项集中的所有第一组件均部署完成。
本实施例中,调整系统首先根据预先设定的优先级,从组件频繁项集中筛选出优先级第一的第一组件,并将优先级第一的第一组件部署在第一主机群。其中,预先设定的优先级为:出现次数>亲和>较亲和>违亲和>反亲和,各项中又以对应的数值的大小降序排列;第一主机群为各主机群中的任意一台。然后,调整系统根据优先级,从组件频繁项集中筛选出优先级第二的第一组件,并根据亲和关系判断优先级第二的第一组件和优先级第一的第一组件之间是否为亲和或较亲和,即是否符合预设条件,以完成预设条件的判断动作。若符合,则将优先级第二的第一组件部署在第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作。其中,第二主机群为各主机群中除去第一主机群之外的任一主机群。调整系统依次按照优先级降序从组件频繁项集中筛选第一组件,并与当前已部署在主机群中的各个第一组件逐一执行预设条件的判断动作和部署组件动作,直至组件频繁项集中的所有第一组件均部署完成。比如,组件频繁项集为:{[组件1,出现次数:1次,亲和:1次,较亲和:0次,违亲和:0次,反亲和:0次],[组件2,出现次数:3次,亲和:1次,较亲和:1次,违亲和:0次,反亲和:1次],[组件3,出现次数:1次,亲和:0次,较亲和:0次,违亲和:0次,反亲和:1次],[组件4,出现次数:1次,亲和:0次,较亲和:1次,违亲和:0次,反亲和:0次]}。组件2出现了3次还有1次亲和,优先级第一,首先部署组件2到主机群1上。组件1的出现次数第2,亲和次数相比较多,优先级第二,所以接下来部署组件1。由于组件1和组件2亲和,则将组件1也部署到主机群1中。组件4和组件3,虽然出现次数都是1次,亲和次数都为0,但是组件4是较亲和,组件3是反亲和,所以优先部署组件4。组件4和主机群1上已经部署的组件1没有关联,和组件2是较亲和,所以可以部署在主机群1上。而如果出现违亲和和反亲和的关联,则不能部署在一起,要在新的主机群上独立部署。最后部署组件3,组件3和主机群1中部署的组件2是反亲和的,不能部署到主机群1中,要部署到新的主机群2中。
进一步的,所述第二部署单元,包括:
第一判断子单元,用于判断所述优先级第二的第一组件与所述优先级第一的第一组件之间的亲和关系是否为亲和;
第一部署子单元,用于将所述优先级第二的第一组件与所述优先级第一的第一组件部署在同一主机;
第二部署子单元,用于将所述优先级第二的第一组件部署在所述第一主机群中的任一主机。
本实施例中,主机群包括多个主机。调整系统在判定优先级第二的第一组件需要与优先级第一的第一组件部署在同一主机群时,还需要判断两个第一组件之间的关系是否为亲和,即为最高亲和度。如果是,则将优先级第二的第一组件与优先级第一的第一组件部署在同一主机上,以便两者之间的数据通信传输和执行效率更高。若不是两个第一组件间的关系为较亲和,则将优先级第二的第一组件随机部署在第一主机群中的任一主机上。
进一步的,所述判断单元包括:
第二判断子单元,用于判断当前已部署有第一组件的主机群数量是否不小于2;
第三判断子单元,用于逐一判断当前次进行部署的第一组件与各所述当前已部署有第一组件的主机群中的各Docker组件之间的亲和关系是否均符合所述预设条件,以完成预设条件的判断动作;
所述第二部署单元包括:
第三部署子单元,用于将所述当前次进行部署的第一组件随机部署在各所述当前已部署有第一组件的主机群中的任意一个。
本实施例中,在当前已部署有第一组件的主机群的数量不小于2时,如果当前次进行部署的第一组件与各个当前已部署有第一组件的主机群中的各组件之间的亲和关系均符合预设条件,则将当前次进行部署的第一组件随机部署在各个当前已部署有第一组件的主机群中的任意一个。比如,当前已部署有第一组件的主机群为:主机群A,已部署的第一组件为a;主机群B,已部署的第一组件为b;主机群C,已部署的第一组件为c。当前次进行部署的第一组件为d,与第一组件a、b、c的亲和关系均为亲和或较亲和,则调整系统将第一组件d随机部署在主机群A、主机群B和主机群C中任意一个。
进一步的,所述装置还包括:
监控模块5,用于实时监控API Gateway中调用请求的调用数据,其中,所述调用请求为各所述Docker组件间相互调用时发起的请求,所述调用数据包括请求端组件、目的端组件和调用请求的数量;
第二生成模块6,用于根据所述请求端组件和目的端组件生成所述组件与组件间相互对应的调用关系,并根据所述调用请求的数量,更新所述请求端组件和所述目的端组件对应的调用次数;
第三生成模块7,用于根据所述组件与组件间相互对应的调用关系和更新后的所述调用次数,生成所述调用关系信息。本实施例中,docker容器中的组件的服务在相互调用时,需要将调用请求先发送到API Gateway组件,然后由API Gateway组件负责将调用请求转发到目的端组件的服务。调整系统通过各主机中安装的监控服务Agent,监控并从APIGateway组件采集Docker容器服务之间的交互调用数据,其中,调用数据包括请求端组件、目的端组件和调用请求的数量。调整系统根据请求端组件和目的端组件,生成组件与组件间相互对应的调用关系,各组具有调用关系的两个组件记录有对应的调用次数。调整系统根据调用请求的数量,在该组具有调用关系的两个组件原来的调用次数的基础上,再次加上本次调用请求的数量,从而完成对该组具有调用关系的两个组件对应的调用次数的更新。调整系统根据组件与组件间相互对应的调用关系,以及更新后的调用次数,得到该组具有调用关系的两个组件的调用关系信息。
本实施例提供的一种基于亲和性调整Docker组件部署的装置,通过根据预设频率监控系统中各Docker组件的运行信息和运行占用信息,从而自动解析得到各组件间的亲和关系。再根据预设的优先级和组件间的亲和关系,动态调整各组件在各不同地区的主机群上的部署,从而使得具有较高亲和性的组件可以部署在相同的地域的主机群上,有利于数据通信传输和执行效率。
参照图3,本申请实施例中还提供一种计算机设备,该计算机设备可以是服务器,其内部结构可以如图3所示。该计算机设备包括通过系统总线连接的处理器、存储器、网络接口和数据库。其中,该计算机设计的处理器用于提供计算和控制能力。该计算机设备的存储器包括非易失性存储介质、内存储器。该非易失性存储介质存储有操作系统、计算机程序和数据库。该内存储器为非易失性存储介质中的操作系统和计算机程序的运行提供环境。该计算机设备的数据库用于存储亲和关系库等数据。该计算机设备的网络接口用于与外部的终端通过网络连接通信。该计算机程序被处理器执行时以实现一种基于亲和性调整Docker组件部署的方法,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有所述主机形成的集群。
上述处理器执行上述基于亲和性调整Docker组件部署的方法的步骤:
S1:根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
S2:解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
S3:调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
S4:根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
进一步的,所述运行占用信息包括CPU占用率和内存占用量,所述解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系的步骤,包括:
S201:根据各所述Docker组件间的调用次数和所述预设频率对应的时间段,计算得到各Docker组件间的调用频率;
S202:将各所述Docker组件间的调用频率、各所述Docker组件间的资源共享信息和各所述Docker组件的运行占用信息输入预先构建的亲和关系库中,匹配得到各所述Docker组件间的亲和关系,其中,所述亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表。
进一步的,所述Docker组件间的亲和关系包括两个Docker组件对应的亲和信息,所述调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集的步骤,包括:
S301:根据各所述Docker组件间的亲和关系,从各所述Docker组件中筛选得到与其他Docker组件具有确定的亲和关系的各个第一组件;
S302:根据各所述第一组件以及各所述Docker组件间的亲和关系,生成各所述第一组件间的亲和关系对应的亲和性集;
S303:根据各所述亲和性集,统计得到各所述第一组件的出现次数以及各所述第一组件对应的各亲和信息对应的出现次数;
S304:根据各所述第一组件、各所述第一组件的出现次数以及各所述第一组件的各亲和信息对应的出现次数,生成所述组件频繁项集。
进一步的,所述亲和信息包括亲和、较亲和、违亲和以及反亲和,所述根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署的步骤,包括:
S401:根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第一的第一组件,并将所述优先级第一的第一组件部署在第一主机群,所述第一主机群为各所述主机群中的任一主机群;
S402:根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作,其中,所述预设条件为组件之间的亲和关系为亲和或较亲和;
S403:若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作,其中,所述第二主机群为各所述主机群中除所述第一主机群之外的任一主机群;
S404:依次按照优先级降序从所述组件频繁项集中筛选第一组件,并与当前已部署在主机群的各第一组件逐一执行所述预设条件的判断动作和所述部署组件动作,直至所述组件频繁项集中的所有第一组件均部署完成。
进一步的,所述将所述优先级第二的第一组件部署在所述第一主机群的步骤,包括:
S4011:判断所述优先级第二的第一组件与所述优先级第一的第一组件之间的亲和关系是否为亲和;
S4012:若是亲和,则将所述优先级第二的第一组件与所述优先级第一的第一组件部署在同一主机;若是较亲和,则将所述优先级第二的第一组件部署在所述第一主机群中的任一主机。
进一步的,所述根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作的步骤中,包括:
S40201:判断当前已部署有第一组件的主机群数量是否不小于2;
S40202:若不小于2,则逐一判断当前次进行部署的第一组件与各所述当前已部署有第一组件的主机群中的各Docker组件之间的亲和关系是否均符合所述预设条件,以完成预设条件的判断动作;
所述若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作的步骤中,包括:
S40301:将所述当前次进行部署的第一组件随机部署在各所述当前已部署有第一组件的主机群中的任意一个。
进一步的,所述根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息的步骤之前,包括:
S5:实时监控API Gateway中调用请求的调用数据,其中,所述调用请求为各所述Docker组件间相互调用时发起的请求,所述调用数据包括请求端组件、目的端组件和调用请求的数量;
S6:根据所述请求端组件和目的端组件生成所述组件与组件间相互对应的调用关系,并根据所述调用请求的数量,更新所述请求端组件和所述目的端组件对应的调用次数;
S7:根据所述组件与组件间相互对应的调用关系和更新后的所述调用次数,生成所述调用关系信息。
本申请一实施例还提供一种计算机可读存储介质,其上存储有计算机程序,计算机程序被处理器执行时实现一种基于亲和性调整Docker组件部署的方法,所述Docker组件部署于主机群中,具体为:
S1:根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
S2:解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
S3:调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
S4:根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
进一步的,所述运行占用信息包括CPU占用率和内存占用量,所述解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系的步骤,包括:
S201:根据各所述Docker组件间的调用次数和所述预设频率对应的时间段,计算得到各Docker组件间的调用频率;
S202:将各所述Docker组件间的调用频率、各所述Docker组件间的资源共享信息和各所述Docker组件的运行占用信息输入预先构建的亲和关系库中,匹配得到各所述Docker组件间的亲和关系,其中,所述亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表。
进一步的,所述Docker组件间的亲和关系包括两个Docker组件对应的亲和信息,所述调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集的步骤,包括:
S301:根据各所述Docker组件间的亲和关系,从各所述Docker组件中筛选得到与其他Docker组件具有确定的亲和关系的各个第一组件;
S302:根据各所述第一组件以及各所述Docker组件间的亲和关系,生成各所述第一组件间的亲和关系对应的亲和性集;
S303:根据各所述亲和性集,统计得到各所述第一组件的出现次数以及各所述第一组件对应的各亲和信息对应的出现次数;
S304:根据各所述第一组件、各所述第一组件的出现次数以及各所述第一组件的各亲和信息对应的出现次数,生成所述组件频繁项集。
进一步的,所述亲和信息包括亲和、较亲和、违亲和以及反亲和,所述根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署的步骤,包括:
S401:根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第一的第一组件,并将所述优先级第一的第一组件部署在第一主机群,所述第一主机群为各所述主机群中的任一主机群;
S402:根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作,其中,所述预设条件为组件之间的亲和关系为亲和或较亲和;
S403:若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作,其中,所述第二主机群为各所述主机群中除所述第一主机群之外的任一主机群;
S404:依次按照优先级降序从所述组件频繁项集中筛选第一组件,并与当前已部署在主机群的各第一组件逐一执行所述预设条件的判断动作和所述部署组件动作,直至所述组件频繁项集中的所有第一组件均部署完成。
进一步的,所述将所述优先级第二的第一组件部署在所述第一主机群的步骤,包括:
S4011:判断所述优先级第二的第一组件与所述优先级第一的第一组件之间的亲和关系是否为亲和;
S4012:若是亲和,则将所述优先级第二的第一组件与所述优先级第一的第一组件部署在同一主机;若是较亲和,则将所述优先级第二的第一组件部署在所述第一主机群中的任一主机。
进一步的,所述根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作的步骤中,包括:
S40201:判断当前已部署有第一组件的主机群数量是否不小于2;
S40202:若不小于2,则逐一判断当前次进行部署的第一组件与各所述当前已部署有第一组件的主机群中的各Docker组件之间的亲和关系是否均符合所述预设条件,以完成预设条件的判断动作;
所述若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作的步骤中,包括:
S40301:将所述当前次进行部署的第一组件随机部署在各所述当前已部署有第一组件的主机群中的任意一个。
进一步的,所述根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息的步骤之前,包括:
S5:实时监控API Gateway中调用请求的调用数据,其中,所述调用请求为各所述Docker组件间相互调用时发起的请求,所述调用数据包括请求端组件、目的端组件和调用请求的数量;
S6:根据所述请求端组件和目的端组件生成所述组件与组件间相互对应的调用关系,并根据所述调用请求的数量,更新所述请求端组件和所述目的端组件对应的调用次数;
S7:根据所述组件与组件间相互对应的调用关系和更新后的所述调用次数,生成所述调用关系信息。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的计算机程序可存储与一非易失性计算机可读取存储介质中,该计算机程序在执行时,可包括如上述各方法的实施例的流程。其中,本申请所提供的和实施例中所使用的对存储器、存储、数据库或其它介质的任何引用,均可包括非易失性和/或易失性存储器。非易失性存储器可以包括只读存储器(ROM)、可编程ROM(PROM)、电可编程ROM(EPROM)、电可擦除可编程ROM(EEPROM)或闪存。易失性存储器可包括随机存取存储器(RAM)或者外部高速缓冲存储器。作为说明而非局限,RAM通过多种形式可得,诸如静态RAM(SRAM)、动态RAM(DRAM)、同步DRAM(SDRAM)、双速据率SDRAM(SSRSDRAM)、增强型SDRAM(ESDRAM)、同步链路(Synchlink)DRAM(SLDRAM)、存储器总线(Rambus)直接RAM(RDRAM)、直接存储器总线动态RAM(DRDRAM)、以及存储器总线动态RAM(RDRAM)等。
需要说明的是,在本文中,术语“包括”、“包含”或者其任何其它变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、装置、物品或者方法不仅包括那些要素,而且还包括没有明确列出的其它要素,或者是还包括为这种过程、装置、物品或者方法所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括该要素的过程、装置、物品或者方法中还存在另外的相同要素。
以上所述仅为本申请的优选实施例,并非因此限制本申请的专利范围,凡是利用本申请说明书及附图内容所作的等效结构或等效流程变换,或直接或间接运用在其它相关的技术领域,均同理包括在本申请的专利保护范围内。

Claims (10)

1.一种基于亲和性调整Docker组件部署的方法,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有主机形成的集群,其特征在于,所述方法包括:
根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
2.根据权利要求1所述的基于亲和性调整Docker组件部署的方法,其特征在于,所述运行占用信息包括CPU占用率和内存占用量,所述解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系的步骤,包括:
根据各所述Docker组件间的调用次数和所述预设频率对应的时间段,计算得到各Docker组件间的调用频率;
将各所述Docker组件间的调用频率、各所述Docker组件间的资源共享信息和各所述Docker组件的运行占用信息输入预先构建的亲和关系库中,匹配得到各所述Docker组件间的亲和关系,其中,所述亲和关系库中存储有组件间的调用频率、组件间的资源共享信息、组件的运行占用信息与亲和关系映射关系表。
3.根据权利要求1所述的基于亲和性调整Docker组件部署的方法,其特征在于,所述Docker组件间的亲和关系包括两个Docker组件对应的亲和信息,所述调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集的步骤,包括:
根据各所述Docker组件间的亲和关系,从各所述Docker组件中筛选得到与其他Docker组件具有确定的亲和关系的各个第一组件;
根据各所述第一组件以及各所述Docker组件间的亲和关系,生成各所述第一组件间的亲和关系对应的亲和性集;
根据各所述亲和性集,统计得到各所述第一组件的出现次数以及各所述第一组件对应的各亲和信息对应的出现次数;
根据各所述第一组件、各所述第一组件的出现次数以及各所述第一组件的各亲和信息对应的出现次数,生成所述组件频繁项集。
4.根据权利要求3所述的基于亲和性调整Docker组件部署的方法,其特征在于,所述亲和信息包括亲和、较亲和、违亲和以及反亲和,所述根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署的步骤,包括:
根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第一的第一组件,并将所述优先级第一的第一组件部署在第一主机群,所述第一主机群为各所述主机群中的任一主机群;
根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作,其中,所述预设条件为组件之间的亲和关系为亲和或较亲和;
若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作,其中,所述第二主机群为各所述主机群中除所述第一主机群之外的任一主机群;
依次按照优先级降序从所述组件频繁项集中筛选第一组件,并与当前已部署在主机群的各第一组件逐一执行所述预设条件的判断动作和部署组件动作,直至所述组件频繁项集中的所有第一组件均部署完成。
5.根据权利要求4所述的基于亲和性调整Docker组件部署的方法,其特征在于,所述将所述优先级第二的第一组件部署在所述第一主机群的步骤,包括:
判断所述优先级第二的第一组件与所述优先级第一的第一组件之间的亲和关系是否为亲和;
若是亲和,则将所述优先级第二的第一组件与所述优先级第一的第一组件部署在同一主机;若是较亲和,则将所述优先级第二的第一组件部署在所述第一主机群中的任一主机。
6.根据权利要求4所述的基于亲和性调整Docker组件部署的方法,其特征在于,所述根据预先设定的优先级,从所述组件频繁项集中筛选出优先级第二的第一组件,并判断所述优先级第二的第一组件和所述优先级第一的第一组件之间的亲和关系是否符合预设条件,以完成预设条件的判断动作的步骤中,包括:
判断当前已部署有第一组件的主机群数量是否不小于2;
若不小于2,则逐一判断当前次进行部署的第一组件与各所述当前已部署有第一组件的主机群中的各Docker组件之间的亲和关系是否均符合所述预设条件,以完成预设条件的判断动作;
所述若符合,则将所述优先级第二的第一组件部署在所述第一主机群;若不符合,则将优先级第二的第一组件部署在第二主机群,以完成部署组件动作的步骤中,包括
将所述当前次进行部署的第一组件随机部署在各所述当前已部署有第一组件的主机群中的任意一个。
7.根据权利要求1所述的基于亲和性调整Docker组件部署的方法,其特征在于,所述根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息的步骤之前,包括:
实时监控API Gateway中调用请求的调用数据,其中,所述调用请求为各所述Docker组件间相互调用时发起的请求,所述调用数据包括请求端组件、目的端组件和调用请求的数量;
根据所述请求端组件和目的端组件生成所述组件与组件间相互对应的调用关系,并根据所述调用请求的数量,更新所述请求端组件和所述目的端组件对应的调用次数;
根据所述组件与组件间相互对应的调用关系和更新后的所述调用次数,生成所述调用关系信息。
8.一种基于亲和性调整Docker组件部署的装置,所述Docker组件部署于主机群中,所述主机群为设置在同一地区的所有主机形成的集群,其特征在于,所述装置包括:
获取模块,用于根据预设频率,获取所述预设频率对应的时间段内的各所述Docker组件间的运行信息以及各所述Docker组件分别对应的运行占用信息,其中,所述运行信息为各所述Docker组件间的调用关系信息和资源共享信息,所述调用关系信息为组件与组件间相互对应的调用关系和调用次数,所述资源共享信息为组件与组件间在运行时共同调用的资源的对应信息;
解析模块,用于解析各所述Docker组件间的运行信息和各所述Docker组件的运行占用信息,得到各所述Docker组件间的亲和关系;
第一生成模块,用于调用Apriori算法解析各所述Docker组件间的亲和关系,生成组件频繁项集,其中,所述组件频繁项集为包含各所述Docker组件间的亲和关系的集合;
调整模块,用于根据各所述Docker组件间的亲和关系和所述组件频繁项集,调整各所述Docker组件在各主机群上的部署。
9.一种计算机设备,包括存储器和处理器,所述存储器中存储有计算机程序,其特征在于,所述处理器执行所述计算机程序时实现权利要求1至7中任一项所述方法的步骤。
10.一种计算机可读存储介质,其上存储有计算机程序,其特征在于,所述计算机程序被处理器执行时实现权利要求1至7中任一项所述的方法的步骤。
CN201910110281.9A 2019-02-11 2019-02-11 基于亲和性调整Docker组件部署的方法和相关设备 Active CN109933406B (zh)

Priority Applications (2)

Application Number Priority Date Filing Date Title
CN201910110281.9A CN109933406B (zh) 2019-02-11 2019-02-11 基于亲和性调整Docker组件部署的方法和相关设备
PCT/CN2019/116704 WO2020164265A1 (zh) 2019-02-11 2019-11-08 基于亲和性调整Docker组件部署的方法和相关设备

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN201910110281.9A CN109933406B (zh) 2019-02-11 2019-02-11 基于亲和性调整Docker组件部署的方法和相关设备

Publications (2)

Publication Number Publication Date
CN109933406A CN109933406A (zh) 2019-06-25
CN109933406B true CN109933406B (zh) 2021-07-16

Family

ID=66985506

Family Applications (1)

Application Number Title Priority Date Filing Date
CN201910110281.9A Active CN109933406B (zh) 2019-02-11 2019-02-11 基于亲和性调整Docker组件部署的方法和相关设备

Country Status (2)

Country Link
CN (1) CN109933406B (zh)
WO (1) WO2020164265A1 (zh)

Families Citing this family (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN109933406B (zh) * 2019-02-11 2021-07-16 平安科技(深圳)有限公司 基于亲和性调整Docker组件部署的方法和相关设备

Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360308A (zh) * 2011-09-29 2012-02-22 用友软件股份有限公司 组件的分布式部署系统和方法
CN104967661A (zh) * 2015-05-12 2015-10-07 华南师范大学 应用于云环境下应用系统混合部署的组件部署方法和装置
CN108234437A (zh) * 2016-12-22 2018-06-29 航天信息股份有限公司 一种基于Docker 技术部署OpenStack 服务的方法及系统
CN109271171A (zh) * 2018-09-17 2019-01-25 杭州安恒信息技术股份有限公司 一种基于Docker一键部署大数据平台的方法和装置

Family Cites Families (3)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060179116A1 (en) * 2003-10-10 2006-08-10 Speeter Thomas H Configuration management system and method of discovering configuration data
US10380508B2 (en) * 2016-04-25 2019-08-13 Fair Isaac Corporation Self-contained decision logic
CN109933406B (zh) * 2019-02-11 2021-07-16 平安科技(深圳)有限公司 基于亲和性调整Docker组件部署的方法和相关设备

Patent Citations (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102360308A (zh) * 2011-09-29 2012-02-22 用友软件股份有限公司 组件的分布式部署系统和方法
CN104967661A (zh) * 2015-05-12 2015-10-07 华南师范大学 应用于云环境下应用系统混合部署的组件部署方法和装置
CN108234437A (zh) * 2016-12-22 2018-06-29 航天信息股份有限公司 一种基于Docker 技术部署OpenStack 服务的方法及系统
CN109271171A (zh) * 2018-09-17 2019-01-25 杭州安恒信息技术股份有限公司 一种基于Docker一键部署大数据平台的方法和装置

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
基于Docker_swarm集群的动态加权调度策略;黄凯 等;《计算机应用》;20180510;第38卷(第5期);第1399-1403页 *

Also Published As

Publication number Publication date
CN109933406A (zh) 2019-06-25
WO2020164265A1 (zh) 2020-08-20

Similar Documents

Publication Publication Date Title
CN108156236B (zh) 业务请求处理方法、装置、计算机设备和存储介质
CN110535777B (zh) 访问请求控制方法、装置、电子设备以及可读存储介质
US10715388B2 (en) Using a container orchestration service for dynamic routing
CN109995859A (zh) 一种调度方法、调度服务器及计算机可读存储介质
US9026655B2 (en) Method and system for load balancing
CN105045832B (zh) 一种数据采集方法及装置
CN106953746A (zh) 集群节点升级系统及方法
CN110597623A (zh) 容器资源分配方法、装置、计算机设备和存储介质
CN109995669B (zh) 分布式限流方法、装置、设备及可读存储介质
CN111835789B (zh) 一种服务鉴权方法、装置、设备、系统及存储介质
CN111800459A (zh) 下载任务异步处理方法、装置、系统和存储介质
CN112231168A (zh) 微服务器管控方法、装置、设备及存储介质
CN112231054B (zh) 基于k8s集群的多模型推理服务部署方法及装置
CN112698952A (zh) 计算资源统一管理方法、装置、计算机设备及存储介质
CN110213392B (zh) 数据分发方法、装置、计算机设备和存储介质
CN114189525B (zh) 服务请求方法、装置和电子设备
US11116040B2 (en) Method of coordinating a communication network
CN110661815A (zh) 基于频率限制微服务的请求处理方法、装置、系统及介质
Benedetti et al. Reinforcement learning applicability for resource-based auto-scaling in serverless edge applications
CN113055199B (zh) 网关访问方法、装置及网关设备
CN109933406B (zh) 基于亲和性调整Docker组件部署的方法和相关设备
CN111045908A (zh) 系统性能监控方法、装置及计算机设备
CN111459676B (zh) 一种节点资源管理方法、装置及存储介质
CN114237628B (zh) 微服务编排及调用方法、装置、计算机设备及存储介质
JPWO2021119216A5 (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