CN106453492A - 基于模糊模式识别的Docker容器云平台下的容器调度方法 - Google Patents
基于模糊模式识别的Docker容器云平台下的容器调度方法 Download PDFInfo
- Publication number
- CN106453492A CN106453492A CN201610781927.2A CN201610781927A CN106453492A CN 106453492 A CN106453492 A CN 106453492A CN 201610781927 A CN201610781927 A CN 201610781927A CN 106453492 A CN106453492 A CN 106453492A
- Authority
- CN
- China
- Prior art keywords
- container
- docker
- server node
- time
- cpu
- 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
Links
Classifications
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L67/00—Network arrangements or protocols for supporting network services or applications
- H04L67/50—Network services
- H04L67/60—Scheduling or organising the servicing of application requests, e.g. requests for application data transmissions using the analysis and optimisation of the required network resources
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F21/00—Security arrangements for protecting computers, components thereof, programs or data against unauthorised activity
- G06F21/50—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems
- G06F21/52—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow
- G06F21/53—Monitoring users, programs or devices to maintain the integrity of platforms, e.g. of processors, firmware or operating systems during program execution, e.g. stack integrity ; Preventing unwanted data erasure; Buffer overflow by executing in a restricted environment, e.g. sandbox or secure virtual machine
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/48—Program initiating; Program switching, e.g. by interrupt
- G06F9/4806—Task transfer initiation or dispatching
- G06F9/4843—Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
- G06F9/485—Task life-cycle, e.g. stopping, restarting, resuming execution
-
- H—ELECTRICITY
- H04—ELECTRIC COMMUNICATION TECHNIQUE
- H04L—TRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
- H04L41/00—Arrangements for maintenance, administration or management of data switching networks, e.g. of packet switching networks
- H04L41/50—Network service management, e.g. ensuring proper service fulfilment according to agreements
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Computer Networks & Wireless Communication (AREA)
- Signal Processing (AREA)
- Computer Hardware Design (AREA)
- Management, Administration, Business Operations System, And Electronic Commerce (AREA)
Abstract
本发明公开了一种基于模糊模式识别的Docker容器云平台中的容器调度方法,通过搜集并记录容器云平台中的每个服务器节点上所运行的所有Docker容器的资源指标,可以获取到容器在运行期间对于CPU,内存,网络IO,磁盘IO等服务器核心资源消耗的历史信息;另外,本发明利用模糊模式识别方法,利用这些资源消耗信息对Docker容器进行分类。在运行相同应用的Docker容器再次被调度的时候,对应的容器分类信息就可以作为调度算法的重要依据,Docker容器就会被调度算法调度到更合适的服务器节点上,使得每个服务器节点上的核心资源占用更加均衡。本发明实现简单,易于操作,具有可扩展性和易于部署的特点,适合为运行在分布式Docker容器云平台中的应用提供容器监控和容器调度服务。
Description
技术领域
本发明涉及分布式云计算领域,具体涉及一种基于模糊模式识别的Docker容器云平台下的容器调度方法。
背景技术
容器技术可以认为是一种操作系统级别的虚拟化。其初衷是为了减少Hypervisor技术为代表的虚拟化技术所带来的性能开销,可以在更细的粒度上利用机器资源。
2013年,Docker开源容器引擎将已有的容器相关技术结合起来,通过引入分层镜像技术,统一了应用的打包和分发的部署方式,降低了容器使用的门槛,并推动了容器技术的商业化进程。在过去的两年时间,基于Docker容器的解决方案在全球范围内快速增长,主要IT提供商和云环境提供商都已经宣称了基于容器化大解决方案,Docker容器技术所支持的容器技术用一个统一的标准,开放容器方案OCI(The Open Container Initiative)已经成为云计算领域的一个新的容器标准。
随着以Docker为代表的容器技术的快速发展,容器云平台的使用的技术,诸如存储、网络、弹性伸缩扥等监控等等也变得越来越受到关注,可以认为,以Docker为底层资源粒度分配隔离的PaaS平台可以就是这里所说的“容器云平台”。
容器云平台的监控和调度技术是保证整个平台正常运行的关键技术,平台管理人员需要通过监控技术了解整个平台的运行状况,同时这些监控到的信息又可以为容器在平台上的调度提供依据。
然而,现有技术存在一下不足之处:
1.缺乏对Docker容器进行分类的原则和方法:虽然运行在容器当中的应用对各种资源的占用量都不同,但是目前仍然没有简便合理的原则和方法作为Docker容器的分类标准并且进行分类。
2.现有Docker容器调度算法,没有充分考虑到容器的历史运行期间的资源占用情况:现有调度算法都是在Docker容器第一次启动的时候对其进行调度,但是在实际生产环境中,经常会出现已经运行的容器被重新启动或者扩容成多份的情况,在这个时候,容器的历史运行期间的资源占用情况就应该被考虑进来,这些信息最能反映容器对实际物理资源的占用情况,所以,在容器启动的时候这些信息就应该被搜集起来,并且在调度的时候,这些信息应该作为容器调度的重要原则之一。
发明内容
针对现有技术缺少有效的Docker容器分类方法,以及容器调度时候考虑因素不全面等等不足,本发明提供一种基于模糊模式识别的Docker容器云平台中的容器调度方法,该方法主要通对运行在Docker容器云平台上Docker容器在运行期间的资源指标进行搜集,采用模糊模式识别的方式,按照资源使用的维度对容器进行细粒度的分类。当相同镜像再次以容器的方式被启动,调度器可以根据Docker容器历史分类信息进行更精准的调度。该方法解决了Docker容器无法分类以及Docker容器调度时候不够合理的问题。
本发明解决技术问题所采用的技术方案如下:一种基于模糊模式识别的Docker容器云平台中的容器调度方法,该方法包括以下步骤:
(1)分类模型的确定:采用模糊识别的理论,确定分类算法的模型,其中具体需要确定分类模型中的论域、模糊子集以及隶属度函数。
(2)指标信息的搜集:分布式容器云平台上,各个服务器节点上的agent组件开始初始化每个服务器节点上已运行Docker容器的类别记录矩阵,并且开始搜集当前服务器节点上所有运行着的所有Docker容器的数据指标以及当前服务器节点本身的可用资源指标,最后将以上信息以心跳信息的形式上传到数据库中。
(3)对Docker容器进行分类:当容器被容器云平台调度时,调度器的调度算法从数据库中读取步骤(2)中该Docker容器对应的数据指标,将数据指标作为步骤(1)中已建立好的分类模型的输入,分类模型采用模糊综合评判的方式对该Docker容器进行类别计算,最后得到该Docker容器在步骤(1)中确定好的不同论域上的分类向量。
(4)对Docker容器进行调度:如果该容器没有在调度器中未被注册过,则随机返回服务器列表中的一个服务器节点的身份信息,算法结束;如果该容器已经在调度器中被注册过,将步骤(3)中已经分好类的Docker容器的分类向量和集群中所有服务器节点的身份信息输入调度器的调度算法中,调度算法将对所有输入的服务器节点身份信息进行遍历,每次遍历到一个节点,就会从数据库中取出对应的节点类别记录矩阵,假设将该Docker容器会被调度到当前遍历的服务器节点上,计算并记录该Docker容器被调度到服务器节点上之后,节点类别记录矩阵的离散情况;在之后遍历的过程中,对每个服务器节点进行同样的操作;遍历结束之后,比较所有服务器节点的类别记录矩阵的离散情况,返回离散情况最小的一个服务器节点,完成容器调度。
进一步地,所述步骤1具体为:
(1.1)根据模糊识别的理论,确定分类算法的论域CPU、MEM、BLKIO、NET_IN和NET_OUT,这几个论域分别代表服务器节点的CPU,内存,磁盘IO,网络IO核心资源;
其中,CPU=[0,100]表示单位统计时间内,该容器的用户态CPU时间与系统态CPU时间占总CPU时间的百分比;
MEM=[0,100]表示单位统计时间内,该容器所占的常驻内存的大小占系统总的物理内存的百分比;
BLKIO=[0,100]表示单位统计时间内,该容器内所有进程等待blkio的时间所占统计时间的百分比;
NET_IN=[0,100]表示单位统计时间内,容器网卡接受比特速率超过指定的最低下载阈值的时间,占总的统计时间的百分比;
NET_OUT=[0,100]表示单位统计时间内,容器网卡发送的比特速率超过指定的最低上传阈值的时间,占总的统计时间的百分比;
对于以上的每个论域,根据对每种资源的使用程度,又可以分出三个模糊子集,即S=“偏小”,M=“中等”,L=“偏大”;
(1.2)根据步骤(1.1)获得的每个论域的模糊子集,确定每个模糊子集的隶属度函数,隶属度函数采用正态分布函数来表示,每个模糊子集的隶属度函数构成分类模型。
进一步地,所述步骤2具体为:
(2.1)当前服务器节点的已运行Docker容器的类别记录矩阵的含义由步骤(1.2)中的分类模型确定,其中,类别记录矩阵中行的含义由上到下表示的是偏大、中等、偏小,三个模糊子集;类别记录矩阵中列的含义由左到右表示的是CPU、MEM、BLKIO、NET_IN、NET_OUT几种不同论域,每个元素的含义为当前服务器节点上,对应论域下类别为对应的模糊子集的Docker容器的数目。
(2.2)将Docker容器的原始数据指标和服务器节点的资源指标以心跳信息的形式上传到数据库中。
4.根据权利要求3所述的容器云平台中的应用分类和调度的方法,其特征在于,所述步骤3具体为:
(3.1)当Docker容器被容器云平台调度时,如果该容器没有在调度器中被注册过,则直接跳过步骤(3),如果已经在调度器中注册过,可以从数据库中查询到该Docker容器原始数据指标,对这些原始数据指标进行再次计算,可以得到用于分类的5维数据指标:每个指标的具体含义为:Vcpu为单位时间内当前Docker容器中所有进程的cpu总时间所占总时间的百分比;Vmem为单位时间内当前Docker容器中所有进程所占服务器节点总内存的百分比;Vblkio为单位时间内当前Docker容器中所有进程由于进行读写操作所花费的时间所占总时间的百分比;Vnetin为单位时间内当前Docker容器所使用的网卡所接收的数据流量超过指定阈值的时间占总时间的百分比;Vnetout为单位时间内当前Docker容器所使用的网卡所发送数据流量超过指定阈值的时间占总时间的百分比;
(3.2)将步骤(3.1)中得到的5维度数据指标输入到步骤(1.2)中获得的每个模糊子集的隶属度函数,计算得到该容器的模糊矩阵,使用最大隶属度原则对模糊矩阵进行计算,可以得到该容器的分类向量:TYPE=(Acpu,Amem,Ablkio,Anetin,Anetout),向量中的每一个元素从左到右分别是Docker容器在论域为CPU、MEM、BLKIO、NET_IN、NET_OUT下的具体类型值,具体的取值可以是偏小、中等或偏大。
进一步地,所述步骤4具体为:
(4.1)如果该容器在调度器中未被注册过,则随机返回服务器列表中的一个服务器节点的身份信息,算法结束;如果该容器已经在调度器中被注册过,则遍历服务器列表中的服务器,对于遍历到的每个服务器的身份信息,根据该身份信息从数据库中取出对应服务器节点的类别记录矩阵;对步骤(3.2)中得到的待调度Docker容器的分类向量进行遍历,如果遍历到分类向量中的当前元素的具体类型值为T,记当前元素所属的论域为A(A为CPU、MEM、BLKIO、NET_IN或NET_OUT),则在服务器节点的类别记录矩阵中,论域为A并且类别为T的位置上,对应的数值加1。
(4.2)计算步骤(4.1)得到的类别记录矩阵中,每一个论域下,三个不同类别的Docker容器数值的方差,对5列中每一列的数据都做同样的操作,将5个方差值叠加,得到该服务器节点的总方差值。
(4.3)重复步骤(4.2),计算得到服务器节点列表中每一个服务器节点的总方差值,之后对这些总方差值按照从小到大的方式进行排序,在数据库中更新排在最前面的服务器节点在数据库中的类别记录矩阵,最后返回这个服务器节点的身份信息,从而完成了调度。
本发明的有益效果是:本发明首次提出了采用模糊模式识别的方式,根据容器运行时的资源指标进行分类的算法,可以清楚的根据容器运行时候的资源占用状况将Docker容器分成不同的类别,还可以为相同容器再次部署的时候提供调度依据。在容器云平台中,运行着相同应用的容器进行扩容操作是经常发生的,基于容器分类信息的调度算法很好的考虑了Docker容器在运行阶段对服务器cpu,内存,磁盘IO,网络IO等资源的使用情况,可以根据容器对资源的占用程度,将运行期间资源占用较少,中等,以及较高的容器调度到均衡分布在宿主机上,可以使得集群中的服务器资源得到更到充分利用。
附图说明
图1是本发明方法整体架构图;
图2是整个调度算法的算法流程图;
具体实施方式
本发明的核心是利用模糊模式识别,根据容器运行期间所使用的资源状况,对Docker容器进行分类,并且根据这些分类数据,提出了基于模糊模式识别的容器调度方法,该方法可以从资源占用的角度为Docker容器的调度提供依据,使得Docker容器被调度之后,服务器节点上的各种核心资源可以保持比较均衡的状态。该方法主要分为如下四个主要步骤:分类模型的确定、指标信息的搜集、对Docker容器进行分类、对Docker容器进行调度。
1.分类模型的确定:采用模糊识别的理论,确定分类算法的模型,其中具体需要确定分类模型中的论域,模糊子集以及隶属度函数。
(1.1)确定每个模糊子集的论域:
对于每个容器而言,可以确定以下论域:
CPU=[0,100]表示单位统计时间内,该容器的用户态CPU时间与系统态CPU时间占总CPU时间的百分比。
MEM=[0,100]表示单位统计时间内,该容器所占的常驻内存的大小占系统总的物理内存的百分比。
BLKIO=[0,100]表示单位统计时间内,该容器内所有进程等待blkio的时间所占统计时间的百分比。
NET_IN[0,100]表示单位统计时间内,容器网卡接受比特速率超过指定的最低下载阈值的时间,占总的统计时间的百分比。
NET_OUT[0,100]表示单位统计时间内,容器网卡发送的比特速率超过指定的最低上传阈值的时间,占总的统计时间的百分比。
(1.2)确定每个论域上的模糊子集以及隶属度函数:
对于以上的每个论域,又可以根据实际情况划分出三个模糊子集,即S=“偏小”,M=“中等”,L=“偏大”,这里选用正态分布来描不同模糊子集的隶属度函数:
偏小型模糊子集:
中等型模糊子集:
偏大型模糊子:
不同论域的模型中σ以及a的取值有所区别,根据服务器节点性能的不同而有所区别,在Ubuntu14.04 2核cpu 4G内存的服务器节点上,模型中的参数采用以下的取值::
表2不同论域模型的参数取值
2.指标信息的搜集:分布式容器云平台上,各个服务器节点上的agent组件开始搜集每个服务器节点上的运行着的所有Docker容器的数据指标,当前服务器节点本身的可用资源指标,以及当前服务器节点上已运行Docker容器的类别记录矩阵,类别记录矩阵中的具体记录由步骤1中的论域模型确定,最后将以上信息以心跳信息的形式上传到数据库中。因为生产环境中的服务器多以Linux操作系统为主,所以是这里的指标搜集主要是针对Linux系统而言的,这里采用的服务器节点的操作系统为Ubuntu14.04。
(2.1)初始化该服务器节点的Docker容器的记录矩阵:
当前服务器节点的已运行Docker容器的记录矩阵的含义由(1.2)中的分类模型确定,其中的行的含义由上到下表示的是偏大,中等,偏小,三个模糊子集,列的含义由左到右表示的是CPU、MEM、BLKIO、NET_IN、NET_OUT几种不同论域,每个元素的含义为当前服务器节点上,对应论域下类别为对应的模糊子集的Docker容器的数目,初始的时候,矩阵中的所有元素均为0,矩阵初始化完毕后,将这个矩阵存储在数据库中,存储的时候使用服务器节点的身份信息作为这个矩阵的标记。具体的Docker容器记录矩阵表示如下:
表3Docker容器记录矩阵
CPU | MEM | BLK | NETIN | NETOUT | |
偏小型(S) | Ncpu1 | Nmem1 | Nblkio1 | Nnetin1 | Nnetout1 |
中等型(M) | Ncpu2 | Nmem2 | Nblkio2 | Nnetin2 | Nnetout2 |
偏大型(L) | Ncpu3 | Nmem3 | Nblkio3 | Nnetin3 | Nnetout3 |
(2.2)确定Docker容器的数据指标以及服务器节可用资源指标:
表4Docker容器的原始数据指标
当前服务器节点的资源指标为:
表5服务器节点的资源指标
(2.3)agent节点开始从服务器节点上搜集以上确定好的指标:
在(2.2)中给出了docker.cpu.user,docker.cpu.sys,这两个指标的具体含义,它们的获取来源为cgroups文件系统目录中对应的cpuacct子系统分级下,docker目录所对应的容器的cpuacct.stat文件。cpuacct.stat文件中包含了这个子结构下所使用的cpu总时间。比如计算docker.cpu.user,在每次获取一个新的时间之后,需要用当前获取的时间减去上次记录的时间,这个差值就是在一个interval时间内,当前cgroup层级所使用的usertime,这个时间的单位是USER_HZ,之后可以通过/sys/fs/cgroups/cpuacct/cpuacct.stat得到cgroups文件系统中,总的cpu user time,之后可以按照以下方式得到百分比:
在(2.2)中给出了docker.memory.declare,docker.memory.used这两个指标的具体含义,它们的信息的获取来源为cgroups文件系统中,memory子系统分级下,docker目录下所对应的容器的memory.limit_in_bytes以及memory.usage_in_bytes文件。它们的单位均为byte,表示的是cgroups文件系统对某个容器在运行时候的内存资源使用的限制,以及当前容器中所有的进程所使用的实际内存大小。从内核实现的角度来看,为了提升效率,这里memory.usage_in_bytes文件中提供的数据仅仅是一个近似值,并不是准确的内存使量,如果希望进行更精准的统计,可以使用memory.stat文件中的RSS+CACHE(+SWAP)来表示当前实际使用的内存资源。
在(2.2)中给出了docker.net.rxps以及docker.net.txps这两个指标的具体含义,它们的采用通过以下的方式得到:在宿主机上的/proc/<pid>/net/dev文件中可以查看到当前进程所在的networknamespace中的所有的网络设备的信息。首先利用dockerengine提供的api(或者通过cgroups文件目录层级的tasks文件),可以通过容器的id查询到容器中第一个启动的进程在宿主机上的pid,之后可以根据这个pid查到对应进程所在的networknamespace下,网络设备到目前为止下载和上传的byte数目。之后可以根据已经得到的rx_bytes和tx_bytes计算出上传和下载的速率,比如要计算某个容器的网设备的rxps,可以按照以下公式进行,按照类似的方式也可以计算出docker.net.txps:
在(2.2)中给出了docker.net.rxduration以及docker.net.wxduration这两个指标的具体含义,这两个指标在对容器进行分类的时候会使用到,主要是衡量在单位时间内,容器有多长时间是在进行上传和下载的操作。这两个指标可以描述单位一段时间之内,容器进行网络IO的频繁程度。计算的时候需要通过采样的方式来进行,具体的阈值和采样点参数需要提前指定好,默认阈值thresh是100KB/s,采样间隔sinterval是1s/次,如果在某一个采样时间点上,该容器的rxps大于指定的阈值,那么对应的采用时间间隔就认为是频繁进行下载操作的时间,对应的时间就被统计到,计算公式如下,其中docker.net.rxps为单位时间内该网卡下载的比特数:
通常情况下,容器以及容器内部的进程相关的绝大部分信息都可以从操作系统的/proc、/sys目录直接获取到。但是出于效率的考虑,在这些文件系统中仅仅只容器或者进程的部分信息,对于一些特殊的信息,我们需要直接从内核中表示进程的结构体task_struct中获得指定的信息。
在(2.2)中给出了给出了docker.diskio.delay的具体含义,在具体计算的时候,需要使用以下公式:
machine.mem.use表示服务器节点上可以使用的物理内存的总量,可以从服务器的/proc/meminfo文件中获取。
指定每次进行指标数据采样的时间间隔为1分钟,即每隔离1分钟,就将以上搜集好的指标上传到数据库中。
3.对Docker容器进行分类:当容器被容器云平台调度时,调度器从数据库中读取步骤2中该Docker容器对应的数据指标,将数据指标作为步骤1中已建立好的分类模型的输入,分类模型采用模糊综合评判的方式对该Docker容器进行类别计算,最后得到该Docker容器在步骤1中确定好的不同论域上的分类向量。
(3.1)当Docker容器被容器云平台调度时,如果该容器没有在调度器中被注册过,则直接跳过第3步,如果已经在调度器中注册过,可以从数据库中查询到该Docker容器原始数据指标,对这些原始数据指标进行再次计算,可以得到用于分类的5维数据指标:每个指标的具体含义为:
表6为数据指标含义
以上5维指标在实际计算时需要基于2.3中确定好的原始指标,按照如下的方
式进行计算:
Vcpu=docker.cpu.user+docker.cpu.sys
Vblkio=docker.diskio.delay
Vnetin=docker.net.rxduration
Vnetout=docker.net.txduration
(3.2)将(3.1)中得到的5维度数据指标输入到步骤(1.2)中获得的每个模糊子集的隶属度函数,计算得到该容器的模糊矩阵,模糊矩阵用表格方式表示如下:
表7模糊矩阵表格
CPU | MEM | BLK | NETIN | NETOUT | |
偏小型(S) | Vcpu1 | Vmem1 | Vblkio1 | Vnetin1 | Vnetout1 |
中等型(M) | Vcpu2 | Vmem2 | Vblkio2 | Vnetin2 | Vnetout2 |
偏大型(L) | Vcpu3 | Vmem3 | Vblkio3 | Vnetin3 | Vnetout3 |
(3.3)使用最大隶属度原则对模糊矩阵进行计算,即对(3.2)中的模糊矩阵表格按照如下方式进行计算:
Vtype=Vcpu1∨Vcpu2∨Vcpu3
如果Vtype=Vcpu则在论域CPU上,该容器的模糊子集为偏小型S。
如果Vtype=Vcpu则在论域CPU上,该容器的模糊子集为中等型M。
如果Vtype=Vcpu3则在论域CPU上,该容器的模糊子集为偏大型L。
其他的每一列也按照同样的方式进行计算,最后可以得到该容器的分类向量:TYPE=(Acpu,Amem,Ablkio,Anetin,Anetout)。
4.对Docker容器进行调度:如果该容器没有在调度器中未被注册过,则随机返回服务器列表中的一个服务器节点的身份信息,算法结束;如果该容器已经在调度器中被注册过,将步骤(3)中已经分好类的Docker容器的分类向量和集群中所有服务器节点的身份信息输入调度器的调度算法中,调度算法将对所有输入的服务器节点身份信息进行遍历,每次遍历到一个节点,就会从数据库中取出对应的节点类别记录矩阵,假设将该Docker容器会被调度到当前遍历的服务器节点上,计算并记录该Docker容器被调度到服务器节点上之后,节点类别记录矩阵的离散情况。在之后遍历的过程中,对每个服务器节点进行同样的操作。遍历结束之后,比较所有服务器节点的类别记录矩阵的离散情况,返回离散情况最小的一个服务器节点,完成容器调度。
(4.1)如过该容器没有在调度器中未被注册过,则随机返回服务器列表中的一个服务器节点的身份信息,算法结束。如果该容器已经在调度器中被注册过,则遍历服务器列表中的服务器,对于遍历到的每个服务器的身份信息,根据该身份信息从数据库中取出(2.1)中所初始化完成的对应服务器节点的类别记录矩阵。对(3.3)中得到的待调度Docker容器的分类向量进行遍历,如果遍历到分类向量中的当前元素的具体类型值为T,记当前元素所属的论域为A(A为CPU、MEM、BLKIO、NET_IN或NET_OUT),则在服务器节点的类别记录矩阵中,论域为A并且类别为T的位置上,对应的数值加1。
(4.2)计算(4.1)中得到类别记录矩阵中,每一个论域下,三个不同类别的Docker容器数值的方差,比如对于论域CPU来说,计算方式如下:
对类别记录矩阵5列中每一列的数据都做同样的操作,可以分别得到Scpu,Smem,Sblk,Snetin,Snetout,将这5个方差值叠加,得到该服务器节点Docker容器记录矩阵的总方差。
(4.3)按照(4.2)中描述的计算方法,计算出服务器节点列表中每一个服务器节点的总方差值,之后对服务器节点的所有总方差值按照从小到大的方式进行排序。
(4.4)找到排在最前面的服务器节点的身份信息,在数据库中更新排在最前面的服务器节点在数据库中的类别记录矩阵,返回这个服务器节点的身份信息,算法结束。
Claims (5)
1.一种基于模糊模式识别的Docker容器云平台中的容器调度方法,其特征在于,该方法包括以下步骤:
(1)分类模型的确定:采用模糊识别的理论,确定分类算法的模型,其中具体需要确定分类模型中的论域、模糊子集以及隶属度函数。
(2)指标信息的搜集:分布式容器云平台上,各个服务器节点上的agent组件开始初始化每个服务器节点上已运行Docker容器的类别记录矩阵,并且开始搜集当前服务器节点上所有运行着的所有Docker容器的数据指标以及当前服务器节点本身的可用资源指标,最后将以上信息以心跳信息的形式上传到数据库中。
(3)对Docker容器进行分类:当容器被容器云平台调度时,调度器的调度算法从数据库中读取步骤(2)中该Docker容器对应的数据指标,将数据指标作为步骤(1)中已建立好的分类模型的输入,分类模型采用模糊综合评判的方式对该Docker容器进行类别计算,最后得到该Docker容器在步骤(1)中确定好的不同论域上的分类向量。
(4)对Docker容器进行调度:如果该容器没有在调度器中未被注册过,则随机返回服务器列表中的一个服务器节点的身份信息,算法结束;如果该容器已经在调度器中被注册过,将步骤(3)中已经分好类的Docker容器的分类向量和集群中所有服务器节点的身份信息输入调度器的调度算法中,调度算法将对所有输入的服务器节点身份信息进行遍历,每次遍历到一个节点,就会从数据库中取出对应的节点类别记录矩阵,假设将该Docker容器会被调度到当前遍历的服务器节点上,计算并记录该Docker容器被调度到服务器节点上之后,节点类别记录矩阵的离散情况;在之后遍历的过程中,对每个服务器节点进行同样的操作;遍历结束之后,比较所有服务器节点的类别记录矩阵的离散情况,返回离散情况最小的一个服务器节点,完成容器调度。
2.根据权利要求1所述的容器云平台中的应用分类和调度的方法,其特征在于,所述步骤1具体为:
(1.1)根据模糊识别的理论,确定分类算法的论域CPU、MEM、BLKIO、NET_IN和NET_OUT,这几个论域分别代表服务器节点的CPU,内存,磁盘IO,网络IO核心资源;
其中,CPU=[0,100]表示单位统计时间内,该容器的用户态CPU时间与系统态CPU时间占总CPU时间的百分比;
MEM=[0,100]表示单位统计时间内,该容器所占的常驻内存的大小占系统总的物理内存的百分比;
BLKIO=[0,100]表示单位统计时间内,该容器内所有进程等待blkio的时间所占统计时间的百分比;
NET_IN=[0,100]表示单位统计时间内,容器网卡接受比特速率超过指定的最低下载阈值的时间,占总的统计时间的百分比;
NET_OUT=[0,100]表示单位统计时间内,容器网卡发送的比特速率超过指定的最低上传阈值的时间,占总的统计时间的百分比;
对于以上的每个论域,根据对每种资源的使用程度,又可以分出三个模糊子集,即S=“偏小”,M=“中等”,L=“偏大”;
(1.2)根据步骤(1.1)获得的每个论域的模糊子集,确定每个模糊子集的隶属度函数,隶属度函数采用正态分布函数来表示,每个模糊子集的隶属度函数构成分类模型。
3.根据权利要求2所述的容器云平台中的应用分类和调度的方法,其特征在于,所述步骤2具体为:
(2.1)当前服务器节点的已运行Docker容器的类别记录矩阵的含义由步骤(1.2)中的分类模型确定,其中,类别记录矩阵中行的含义由上到下表示的是偏大、中等、偏小,三个模糊子集;类别记录矩阵中列的含义由左到右表示的是CPU、MEM、BLKIO、NET_IN、NET_OUT几种不同论域,每个元素的含义为当前服务器节点上,对应论域下类别为对应的模糊子集的Docker容器的数目。
(2.2)将Docker容器的原始数据指标和服务器节点的资源指标以心跳信息的形式上传到数据库中。
4.根据权利要求3所述的容器云平台中的应用分类和调度的方法,其特征在于,所述步骤3具体为:
(3.1)当Docker容器被容器云平台调度时,如果该容器没有在调度器中被注册过,则直接跳过步骤(3),如果已经在调度器中注册过,可以从数据库中查询到该Docker容器原始数据指标,对这些原始数据指标进行再次计算,可以得到用于分类的5维数据指标:每个指标的具体含义为:Vcpu为单位时间内当前Docker容器中所有进程的cpu总时间所占总时间的百分比;Vmem为单位时间内当前Docker容器中所有进程所占服务器节点总内存的百分比;Vblkio为单位时间内当前Docker容器中所有进程由于进行读写操作所花费的时间所占总时间的百分比;Vnetin为单位时间内当前Docker容器所使用的网卡所接收的数据流量超过指定阈值的时间占总时间的百分比;Vnetout为单位时间内当前Docker容器所使用的网卡所发送数据流量超过指定阈值的时间占总时间的百分比;
(3.2)将步骤(3.1)中得到的5维度数据指标输入到步骤(1.2)中获得的每个模糊子集的隶属度函数,计算得到该容器的模糊矩阵,使用最大隶属度原则对模糊矩阵进行计算,可以得到该容器的分类向量:TYPE=(Acpu,Amem,Ablkio,Anetin,Anetout),向量中的每一个元素从左到右分别是Docker容器在论域为CPU、MEM、BLKIO、NET_IN、NET_OUT下的具体类型值,具体的取值可以是偏小、中等或偏大。
5.根据权利要求4所述的容器云平台中的应用分类和调度的方法,其特征在于,所述步骤4具体为:
(4.1)如果该容器在调度器中未被注册过,则随机返回服务器列表中的一个服务器节点的身份信息,算法结束;如果该容器已经在调度器中被注册过,则遍历服务器列表中的服务器,对于遍历到的每个服务器的身份信息,根据该身份信息从数据库中取出对应服务器节点的类别记录矩阵;对步骤(3.2)中得到的待调度Docker容器的分类向量进行遍历,如果遍历到分类向量中的当前元素的具体类型值为T,记当前元素所属的论域为A(A为CPU、MEM、BLKIO、NET_IN或NET_OUT),则在服务器节点的类别记录矩阵中,论域为A并且类别为T的位置上,对应的数值加1。
(4.2)计算步骤(4.1)得到的类别记录矩阵中,每一个论域下,三个不同类别的Docker容器数值的方差,对5列中每一列的数据都做同样的操作,将5个方差值叠加,得到该服务器节点的总方差值。
(4.3)重复步骤(4.2),计算得到服务器节点列表中每一个服务器节点的总方差值,之后对这些总方差值按照从小到大的方式进行排序,在数据库中更新排在最前面的服务器节点在数据库中的类别记录矩阵,最后返回这个服务器节点的身份信息,从而完成了调度。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610781927.2A CN106453492B (zh) | 2016-08-30 | 2016-08-30 | 基于模糊模式识别的Docker容器云平台下的容器调度方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201610781927.2A CN106453492B (zh) | 2016-08-30 | 2016-08-30 | 基于模糊模式识别的Docker容器云平台下的容器调度方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN106453492A true CN106453492A (zh) | 2017-02-22 |
CN106453492B CN106453492B (zh) | 2019-05-14 |
Family
ID=58091549
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201610781927.2A Active CN106453492B (zh) | 2016-08-30 | 2016-08-30 | 基于模糊模式识别的Docker容器云平台下的容器调度方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN106453492B (zh) |
Cited By (17)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107562545A (zh) * | 2017-09-11 | 2018-01-09 | 南京奥之云信息技术有限公司 | 一种基于Docker技术的容器调度方法 |
CN107608777A (zh) * | 2017-09-15 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种分布式环境中大数据处理任务的调度方法 |
CN108156225A (zh) * | 2017-12-15 | 2018-06-12 | 南瑞集团有限公司 | 基于容器云平台的微应用监控系统和方法 |
CN108471420A (zh) * | 2018-03-29 | 2018-08-31 | 上交所技术有限责任公司 | 基于网络模式识别和匹配的容器安全防御方法与装置 |
CN108897606A (zh) * | 2018-07-25 | 2018-11-27 | 广东石油化工学院 | 多租户容器云平台虚拟网络资源自适应调度方法及系统 |
CN109032755A (zh) * | 2018-06-29 | 2018-12-18 | 优刻得科技股份有限公司 | 一种容器服务托管系统及提供容器服务的方法 |
CN109117264A (zh) * | 2017-06-20 | 2019-01-01 | 三星电子株式会社 | 容器工作负载调度器以及调度容器工作负载的方法 |
CN109639791A (zh) * | 2018-12-06 | 2019-04-16 | 广东石油化工学院 | 一种容器环境下云工作流调度方法及系统 |
CN110750331A (zh) * | 2019-10-21 | 2020-02-04 | 北京华育兴业科技有限公司 | 一种针对教育桌面云应用的容器集群调度方法及平台 |
CN111092915A (zh) * | 2018-10-23 | 2020-05-01 | 亿度慧达教育科技(北京)有限公司 | 服务器系统 |
CN111240825A (zh) * | 2018-11-29 | 2020-06-05 | 深圳先进技术研究院 | Docker集群的内存配置方法、存储介质、计算机设备 |
CN111240806A (zh) * | 2020-01-14 | 2020-06-05 | 南京邮电大学 | 一种分布式容器镜像构建调度系统及方法 |
CN111752554A (zh) * | 2020-05-18 | 2020-10-09 | 南京认知物联网研究院有限公司 | 基于模型编排的多模型协作系统及方法 |
CN112527463A (zh) * | 2020-12-17 | 2021-03-19 | 重庆邮电大学 | 一种基于对象存储的容器镜像下载加速方法 |
CN113407297A (zh) * | 2020-03-17 | 2021-09-17 | 中国移动通信集团浙江有限公司 | 容器管理方法、装置及计算设备 |
US11144362B1 (en) | 2020-05-05 | 2021-10-12 | International Business Machines Corporation | Container scheduling in a container orchestration system |
CN115665157A (zh) * | 2022-11-14 | 2023-01-31 | 杭州谐云科技有限公司 | 一种基于应用资源类型的均衡调度方法和系统 |
Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546683A (zh) * | 2010-12-10 | 2012-07-04 | 厦门市美亚柏科信息股份有限公司 | 一种主机域名收集方法和装置 |
CN106487775A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种基于云平台的业务数据的处理方法和装置 |
-
2016
- 2016-08-30 CN CN201610781927.2A patent/CN106453492B/zh active Active
Patent Citations (2)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN102546683A (zh) * | 2010-12-10 | 2012-07-04 | 厦门市美亚柏科信息股份有限公司 | 一种主机域名收集方法和装置 |
CN106487775A (zh) * | 2015-09-01 | 2017-03-08 | 阿里巴巴集团控股有限公司 | 一种基于云平台的业务数据的处理方法和装置 |
Non-Patent Citations (1)
Title |
---|
仇臣: "中国优秀硕士学位论文全文数据库", 《中国优秀硕士学位论文全文数据库》 * |
Cited By (24)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US10719354B2 (en) | 2017-06-20 | 2020-07-21 | Samsung Electronics Co., Ltd. | Container workload scheduler and methods of scheduling container workloads |
CN109117264B (zh) * | 2017-06-20 | 2021-06-01 | 三星电子株式会社 | 容器工作负载调度器以及调度容器工作负载的方法 |
CN109117264A (zh) * | 2017-06-20 | 2019-01-01 | 三星电子株式会社 | 容器工作负载调度器以及调度容器工作负载的方法 |
CN107562545A (zh) * | 2017-09-11 | 2018-01-09 | 南京奥之云信息技术有限公司 | 一种基于Docker技术的容器调度方法 |
CN107608777A (zh) * | 2017-09-15 | 2018-01-19 | 郑州云海信息技术有限公司 | 一种分布式环境中大数据处理任务的调度方法 |
CN108156225A (zh) * | 2017-12-15 | 2018-06-12 | 南瑞集团有限公司 | 基于容器云平台的微应用监控系统和方法 |
CN108471420B (zh) * | 2018-03-29 | 2021-02-09 | 上交所技术有限责任公司 | 基于网络模式识别和匹配的容器安全防御方法与装置 |
CN108471420A (zh) * | 2018-03-29 | 2018-08-31 | 上交所技术有限责任公司 | 基于网络模式识别和匹配的容器安全防御方法与装置 |
CN109032755A (zh) * | 2018-06-29 | 2018-12-18 | 优刻得科技股份有限公司 | 一种容器服务托管系统及提供容器服务的方法 |
CN108897606A (zh) * | 2018-07-25 | 2018-11-27 | 广东石油化工学院 | 多租户容器云平台虚拟网络资源自适应调度方法及系统 |
CN108897606B (zh) * | 2018-07-25 | 2021-06-29 | 广东石油化工学院 | 多租户容器云平台虚拟网络资源自适应调度方法及系统 |
CN111092915A (zh) * | 2018-10-23 | 2020-05-01 | 亿度慧达教育科技(北京)有限公司 | 服务器系统 |
CN111240825B (zh) * | 2018-11-29 | 2023-09-19 | 深圳先进技术研究院 | Docker集群的内存配置方法、存储介质、计算机设备 |
CN111240825A (zh) * | 2018-11-29 | 2020-06-05 | 深圳先进技术研究院 | Docker集群的内存配置方法、存储介质、计算机设备 |
CN109639791A (zh) * | 2018-12-06 | 2019-04-16 | 广东石油化工学院 | 一种容器环境下云工作流调度方法及系统 |
CN110750331A (zh) * | 2019-10-21 | 2020-02-04 | 北京华育兴业科技有限公司 | 一种针对教育桌面云应用的容器集群调度方法及平台 |
CN111240806A (zh) * | 2020-01-14 | 2020-06-05 | 南京邮电大学 | 一种分布式容器镜像构建调度系统及方法 |
CN113407297B (zh) * | 2020-03-17 | 2023-12-26 | 中国移动通信集团浙江有限公司 | 容器管理方法、装置及计算设备 |
CN113407297A (zh) * | 2020-03-17 | 2021-09-17 | 中国移动通信集团浙江有限公司 | 容器管理方法、装置及计算设备 |
US11144362B1 (en) | 2020-05-05 | 2021-10-12 | International Business Machines Corporation | Container scheduling in a container orchestration system |
CN111752554A (zh) * | 2020-05-18 | 2020-10-09 | 南京认知物联网研究院有限公司 | 基于模型编排的多模型协作系统及方法 |
CN112527463A (zh) * | 2020-12-17 | 2021-03-19 | 重庆邮电大学 | 一种基于对象存储的容器镜像下载加速方法 |
CN112527463B (zh) * | 2020-12-17 | 2023-08-04 | 重庆邮电大学 | 一种基于对象存储的容器镜像下载加速方法 |
CN115665157A (zh) * | 2022-11-14 | 2023-01-31 | 杭州谐云科技有限公司 | 一种基于应用资源类型的均衡调度方法和系统 |
Also Published As
Publication number | Publication date |
---|---|
CN106453492B (zh) | 2019-05-14 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN106453492A (zh) | 基于模糊模式识别的Docker容器云平台下的容器调度方法 | |
US11836578B2 (en) | Utilizing machine learning models to process resource usage data and to determine anomalous usage of resources | |
US11089457B2 (en) | Personalized entity repository | |
Cheng et al. | Mobile big data: The fuel for data-driven wireless | |
Mohanty | Big data: An introduction | |
Dolev et al. | A survey on geographically distributed big-data processing using MapReduce | |
CN105706086B (zh) | 用于获取、存储和消费大规模数据流的管理服务 | |
Bu et al. | CAMAS: A cluster-aware multiagent system for attributed graph clustering | |
Ju et al. | iGraph: an incremental data processing system for dynamic graph | |
US11080207B2 (en) | Caching framework for big-data engines in the cloud | |
US11503149B2 (en) | Device-cloud collaboration method, platform, and apparatus | |
Zheng et al. | KDE based outlier detection on distributed data streams in multimedia network | |
CN106874320A (zh) | 分布式流式数据处理的方法和装置 | |
CN109978177A (zh) | 模型训练方法、业务处理方法、装置及相关设备 | |
Atta et al. | Spatial-crowd: A big data framework for efficient data visualization | |
Corradi et al. | Automatic extraction of POIs in smart cities: Big data processing in ParticipAct | |
CN106575296B (zh) | 用于托管的分析的动态n维立方体 | |
US9558208B1 (en) | Cluster file system comprising virtual file system having corresponding metadata server | |
Anwar | Towards Efficient and Flexible Object Storage Using Resource and Functional Partitioning | |
Cheng | Workload-aware efficient storage systems | |
CN112633513A (zh) | 数据处理方法、系统、装置及计算机可读存储介质 | |
Marin et al. | A meta-index for querying distributed moving object database servers | |
Thu | Dynamic replication management scheme for effective cloud storage | |
Lu | Geospatial data indexing analysis and visualization via web services with autonomic resource management | |
Sheng et al. | Guest Editorial: Big Data Analytics and the Web. |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
C06 | Publication | ||
PB01 | Publication | ||
C10 | Entry into substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
CB03 | Change of inventor or designer information |
Inventor after: Wang Zhe Inventor after: Li Shanping Inventor before: Wang Zhe |
|
CB03 | Change of inventor or designer information | ||
GR01 | Patent grant | ||
GR01 | Patent grant |