CN112068943A - 一种基于复杂异构环境的微服务调度方法及其实现系统 - Google Patents

一种基于复杂异构环境的微服务调度方法及其实现系统 Download PDF

Info

Publication number
CN112068943A
CN112068943A CN202010933828.8A CN202010933828A CN112068943A CN 112068943 A CN112068943 A CN 112068943A CN 202010933828 A CN202010933828 A CN 202010933828A CN 112068943 A CN112068943 A CN 112068943A
Authority
CN
China
Prior art keywords
micro
service
services
virtual machine
scheduling
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Granted
Application number
CN202010933828.8A
Other languages
English (en)
Other versions
CN112068943B (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.)
Shandong Computer Science Center National Super Computing Center in Jinan
Original Assignee
Shandong Computer Science Center National Super Computing Center in Jinan
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 Shandong Computer Science Center National Super Computing Center in Jinan filed Critical Shandong Computer Science Center National Super Computing Center in Jinan
Priority to CN202010933828.8A priority Critical patent/CN112068943B/zh
Publication of CN112068943A publication Critical patent/CN112068943A/zh
Application granted granted Critical
Publication of CN112068943B publication Critical patent/CN112068943B/zh
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/46Multiprogramming arrangements
    • G06F9/48Program initiating; Program switching, e.g. by interrupt
    • G06F9/4806Task transfer initiation or dispatching
    • G06F9/4843Task transfer initiation or dispatching by program, e.g. task dispatcher, supervisor, operating system
    • G06F9/4881Scheduling strategies for dispatcher, e.g. round robin, multi-level priority queues
    • 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
    • G06F9/45533Hypervisors; Virtual machine monitors
    • G06F9/45558Hypervisor-specific management and integration aspects
    • 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/46Multiprogramming arrangements
    • G06F9/50Allocation of resources, e.g. of the central processing unit [CPU]
    • G06F9/5061Partitioning or combining of resources
    • G06F9/5077Logical partitioning of resources; Management or configuration of virtualized resources

Landscapes

  • Engineering & Computer Science (AREA)
  • Software Systems (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Data Exchanges In Wide-Area Networks (AREA)
  • Multi Processors (AREA)

Abstract

本发明涉及一种复杂异构环境下的微服务调度方法及其实现系统,包括:(1)第一级调度:实时获取所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;保证各个微服务之间调用的高性能;(2)第二级调度:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,动态更新虚拟机之间的关系距离矩阵,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。通过对微服务的两级调度之后,保证微服务能够被调度到合适的虚拟机上,尽量减少微服务跨虚拟机、跨物理服务器、跨网段调用,达到微服务之间高效调用的效果。

Description

一种基于复杂异构环境的微服务调度方法及其实现系统
技术领域
本发明涉及一种复杂异构环境下的微服务调度方法及其实现系统,更具体的说,尤其涉及一种复杂异构环境下通过将有调用关系的微服务调度到相同的宿主机或关联较紧密的宿主机上,从而提高多服务集群整体性能的调度方法及实现系统。
背景技术
随着近几年DevOps的日渐火热,微服务架构和容器技术作为DevOps的支撑技术,也逐渐成为软件行业的热点。微服务架构简单来说,就是将原来一个较大的服务,拆分成若干个小的微服务,每一个微服务都能够独立部署,并且独立承担一项功能。这样将服务微服务化之后,不仅能够降低服务之间的耦合性,而且能够有效降低服务的故障率,便于微服务的横向扩展和故障微服务的快速替换。但是,在微服务架构下,微服务和微服务之间、服务与服务之间的调用会更加频繁,本来程序内部通信可以完成的功能,现在需要通过接口请求的方式来完成。因此,如何能够让微服务与微服务之间、服务与服务之间调用更加高效,将是一个非常有价值的研究方向。
目前,在微服务的架构下,为了能够更好的利用有限和异构的物理服务器资源,通常将业务应用服务及其微服务部署到容器中,而容器运行在虚拟机中,最后虚拟机运行在物理服务器中。这种复杂异构的虚拟化部署架构,虽然能够充分的利用物理服务器的各种资源,但是主流的网络虚拟化技术都会在宿主机上建立一个类似于网桥的设备,来完成虚拟资源之间、虚拟资源与外部之间的通信。例如kubernetes的flannel网络插件,openstack的使用Linux Bridge网络模式等,都是类似的实现方式。因此,在微服务架构下,使用复杂异构虚拟化环境来部署业务应用时,如果不考虑微服务所在的虚拟机、物理服务器,将会出现微服务之间相互调用的过程是跨虚拟机、跨物理服务器、跨多个虚拟网段。这样不仅微服务之间调用会非常低效,而且会拖慢整个业务应用的性能,影响用户的体验。而传统的服务调度平台,没有统一考虑微服务所处的位置以及微服务之间是否存在调用关系这两个条件,而是近乎随机的将微服务调度到不同的虚拟机或物理服务器中,这就会导致调用关系频繁的服务被调度到跨虚拟机、跨物理服务器、跨物理网段的情况出现,从而拖慢整个业务应用的运行速度。
通过以上对微服务架构下服务与微服务的调度方法的分析可以看出,传统的调度方法不能有效的考虑微服务之间的调用关系以及微服务所在的虚拟机和物理服务器,从而无法达到微服务之间高效调用的效果。
发明内容
本发明为了解决上述技术问题的难点,提供了一种复杂异构环境下通过将有调用关系的微服务调度到相同的宿主机或关联较紧密的宿主机上,从而提高多服务集群整体性能的调度方法。
本发明还提供了上述调度方法的实现系统。
术语解释:
距离因子:对两台虚拟机之间通信延迟造成影响的因素进行相对定量化的描述。例如,两台虚拟机处在不同的网络的距离因子为2,处在相同网络的距离因子为1。
本发明的技术方案为:
一种基于复杂异构环境的微服务调度方法,运行于基于微服务架构的分布式容器应用平台,基于微服务架构的分布式容器应用平台包括若干台物理服务器,每台物理服务器包括若干台虚拟机,待调度的业务应用中包括若干个服务,每个服务中包括若干个微服务;初始化所有物理服务器、虚拟机、服务及微服务的基本信息,包括步骤如下:
(1)第一级调度:实时获取所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;保证各个微服务之间调用的高性能;
(2)第二级调度:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,通过虚拟机之间通信的延时动态更新虚拟机之间的关系距离矩阵,根据虚拟机之间的关系距离矩阵和微服务之间的调用频繁程度,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。同时尽量保证各虚拟机的带宽利用率尽量均衡。
通过对微服务的两级调度之后,保证微服务能够被调度到合适的虚拟机上,尽量减少微服务跨虚拟机、跨物理服务器、跨网段调用,最终达到微服务之间高效调用的效果。
根据本发明优选的,步骤(1)中,所有物理服务器的基本信息,包括物理服务器集合PH,PH={PH1,PH2,PH3,...,PHm},共有m台物理服务器,PHm是指第m台物理服务器;
所有虚拟机的基本信息,包括虚拟机集合VM及每一台虚拟机能够提供的资源量集合R,VM={VM1,VM2,VM3,...,VMn},共有n台虚拟机,VMn是指第n台虚拟机;R={R1,R2,R3,...,Rn},Rn是指第n台虚拟机能够提供的资源量;
服务及微服务的基本信息,包括服务集合S、每个服务包含的微服务集合Si、微服务占用资源MRij、微服务之间的调用关系列表CI、每个微服务需要预留的标准虚拟资源量CRij、微服务之间的关系系数、定时调度周期AT、虚拟机关系距离矩阵DL、业务应用微服务调度状态矩阵SL;
S={S1,S2,S3,...,Si,...,SI},共有I个服务,Si是指第i个服务;
Si={MSi1,MSi2,MSi3,...,MSij...,MSiJ},是指第i个服务中包含J个微服务;
MRij是指第i个服务中的第j个微服务所占用的资源量;
CI=[[(MSab,MScd),(MScd,MSef)],[(MSgh,MSij)],...|a,b,c,d,e,f,g,h,i,j...=1,2,3,...];
(MSgh,MSij)代表第g个服务中第h个微服务会调用第i个服务中第j个微服务;假设CI是根据微服务调用关系链条的服务节点的个数降序排序,即微服务调用关系链条长的被优先调度,微服务调用关系链条是一系列有先后调用关系的微服务;例如,A服务调用B服务,B服务调用C服务,则这样就组成一个有三个服务节点的链条,一个关系链条最少有两个服务节点;CI包含了一个业务应用中所有微服务调用关系。该列表是一个二维列表,每一个子列表代表一个微服务调用关系分支。微服务调用关系列表按照子列表元素的数量降序排列,即调用关系分支元素越多,则会优先调度该分支上的服务。
每个微服务需要预留的标准虚拟资源量为CRij,CRij表示第i个服务的第j个微服务所占用的虚拟资源;
微服务之间的关系系数是指一个定时调度周期AT微服务之间调用的次数,反应了微服务之间调用的频繁程度;例如,在AT时间内第i个服务中的第j个微服务调用第k个服务中的第l个微服务的次数,表示为Cij,kl。微服务之间的关系系数都初始化为0;
初始化定时调度周期AI,定时调度周期AI初始化值为10分钟;调度实现系统会在定时调度周期AT内统计各微服务之间调用的次数,并且在周期结束时触发自动调度,将调用较频繁的微服务迁移到相同的虚拟机中。
DL={{D11,D12,D13,...,D1n},{D21,D22,D23,...,D2n},...,{Dn1,Dn2,Dn3,...,Dnn}},Dnn是指第n台虚拟机与第n台虚拟机的关系距离,初始化为0;
假设第n台虚拟机与第n台虚拟机有m个距离因子,即:E1,E2,E3,...,Em,则
Figure BDA0002671205090000031
距离因子为大于等于0的值;影响距离因子的因素包括:虚拟机所处物理服务器、虚拟机所处网络、物理服务器所处网络、物理服务器所处机架、物理服务器所处网络中心。
进一步优选的,距离因子的数值定义如下:处在相同物理服务器的两台虚拟机的距离因子为1;处在不同物理服务器的两台虚拟机距离因子为2;处在相同网络的两台虚拟机的距离因子为1;处在不同网络的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同网络的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同网络的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同机架的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同机架的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同网络中心的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同网络中心的两台虚拟机的距离因子为2。
业务应用微服务调度状态矩阵SL用于查找微服务的调度状态,第i个服务中的第j个微服务调度状态表示为MSIij,状态包括:是否已调度is_scheduled、调度到的虚拟机VM;
该虚拟机关系距离矩阵可以方便查询两台虚拟机之间的关系距离。初始化时,虚拟机关系距离是由两台虚拟机所处物理机、虚拟机网段、物理机网段等距离因子因素确定。运行过程中,通过虚拟机之间的网络延时来确定。关系距离值越小,则代表两台虚拟机之间的网络延时越小。第i台虚拟机与第i台虚拟机的关系距离为0。
根据本发明优选的,步骤(1)中,将有调用关系的微服务调度到关系距离更近的虚拟机中,包括步骤如下:
a、用户提交待调度业务应用的信息,包括服务及微服务的基本信息;
b、判断虚拟机提供的总资源能否承载业务应用服务所占用总资源,虚拟机提供的总资源为
Figure BDA0002671205090000041
业务应用服务所占用总资源为
Figure BDA0002671205090000042
如果不能承载,则调度失败;否则,正式开始调度,进入步骤c;
c、依次进行三层嵌套循环,遍历所有有调用关系的微服务;
三层嵌套循环包括:第一层嵌套循环是:微服务之间的调用关系列表CI中的所有微服务调用关系链条;第二层嵌套循环是:遍历每一个调用关系链条中微服务调用关系;第三层嵌套循环是:遍历每一个微服务调用关系中的微服务;
将一个微服务调用关系链条中有调用关系的微服务调度到关系距离较近的虚拟机中;注意:第一层嵌套循环钟,在对每一个微服务调用关系链条进行调度之前,会按提供资源量来对虚拟机进行逆序排列,这样可以使一个链条中的微服务尽量调度到关系距离较近的虚拟机中。对于不同链条中存在微服务交叉调用的情况,在交叉点确定已经被调度的微服务所在的虚拟机,将该链条中其他的微服务调度到与该虚拟机距离较近的虚拟机中,这样可以让有交叉关系的链条中的微服务尽量在关系距离较近的虚拟机中。
d、根据虚拟机能够提供的资源量,对每一台虚拟机能够提供的资源量集合R重新按降序排序;记录当前待调度虚拟机索引p=1;
e、遍历业务应用微服务调度状态矩阵SL,查找未调度的微服务,并且将其调度资源充足的虚拟机中;
遍历业务应用微服务调度状态矩阵SL中所有的微服务,判断该微服务是否已经被调度,是的话,进入步骤f,否则,判断虚拟机能否承载该微服务,可以承载,将该微服务调度到该虚拟机上,不可以承载,则切换下一个虚拟机,p加1,继续判断虚拟机能否承载该微服务。
f、确认所有的微服务都已经被调度完成,第一级调度结束。
判断业务应用微服务调度状态矩阵SL中的微服务是否全部遍历完成,是的话,第一调度结束,否则,返回步骤e。
进一步优选的,步骤c,包括步骤如下:
①遍历微服务之间的调用关系列表CI中的所有微服务调用关系链条;
②根据每一台虚拟机能够提供的资源量,降序排列每一台虚拟机能够提供的资源量集合R;
③初始化当前待调度虚拟机索引p=1;
④遍历当前微服务调用关系链条中所有微服务调用关系;微服务调用关系,例如,微服务之间的调用关系列表CI中(MSgh,MSij)代表第g个服务中第h个微服务会调用第i个服务中第j个微服务;
⑤遍历当前微服务调用关系中的微服务;例如,第i个服务中第j个微服务会调用第k个服务中第l个微服务中第j个微服务和第l个微服务;
⑥根据业务应用微服务调度状态矩阵SL判断当前微服务是否已被调度,如果是,记录调度到的虚拟机VM的索引p为当前微服务所在虚拟机;否则,进入步骤i;
⑦判断当前待调度虚拟机能否承载该当前微服务,如果能,则将当前微服务调度到当前待调度虚拟机上,否则,通过虚拟机关系距离矩阵DL找到与当前待调度虚拟机关系距离最近且能够承载当前微服务的虚拟机,记录待调度虚拟机索引p为该找到的虚拟机;
⑧判断微服务调用关系中的微服务是否全部遍历,如果是,进入步骤⑨,否则,返回步骤⑤;
⑨判断微服务调用关系链条中微服务调用关系是否全部遍历,如果是,进入步骤⑩,否则,返回步骤④;
⑩判断微服务之间的调用关系列表CI中的所有微服务调用关系链条是否全部遍历,如果是,进入步骤d,否则,返回步骤①。
通过第一级调度,可以达到以下效果:首先,根据调用关系链条的长短,将较长链条上的微服务调度到距离较近且能够承载该微服务的虚拟机中;其次,对于不同链条中存在微服务交叉调用的情况,在交叉点确定已经被调度的微服务所在的虚拟机,将该链条中其他的微服务调度到与该虚拟机距离较近的虚拟机中。这样可以使得一个链条中的微服务尽量处在相同或距离较近的虚拟机中,同时满足了不同链条中存在交叉调用的微服务也能够处在相同或距离较近的虚拟机中,最终提高了微服务之间的调用性能。
根据本发明优选的,步骤(2)中,调度器将根据定时调度周期AT内统计的虚拟机之间通信的延时和虚拟机关系距离矩阵DL,并生成微服务之间的关系系数列表C和按关系系数逆序排列的微服务之间的关系系数列表Csort,将微服务之间的关系系数较大的微服务尽量调度到关系距离较近的虚拟机中,包括步骤如下:
g、到达定时调度周期AT时间节点,开始周期调度,获得上一定时调度周期AT内统计的微服务调用关系系数列表C、排序后的微服务关系系数列表Csort和更新后的虚拟机关系距离矩阵DL;
微服务调用关系系数列表C是指所有的微服务的微服务之间调用的次数;排序后计算微服务之间的关系系数,假设第1组微服务关系一个周期内调用了F1次,则第1组微服务调用关系系数为1;第2组在一个周期内调用了F2次,则第2组微服务调用关系系数为F2/F1;第n组在一个周期内调用了Fn次,则第n组微服务调用关系系数为Fn/F1,这样形成了排序后的微服务调用关系系数列表为Csort
将定时调度周期AT内的虚拟机之间的网络延时作为虚拟机之间的关系距离,并更新虚拟机关系距离矩阵DL;例如,可以使用较轻量级的ping工具,来获得虚拟机之间的网络延时;也可以使用服务器客户端模式的qper工具。
h、依次遍历排序后的微服务调用关系列表CIsort
i、判断当前微服务关系系数是否大于微服务之间的关系系数的平均值,如果是,启动微服务的迁移,进入步骤j,否则,进入步骤l;微服务之间的关系系数的平均值Cave是指在一个定时调度周期AT内所有微服务关系系数的平均值;
j、通过业务应用微服务调度状态矩阵SL判断两个微服务是否在同一个虚拟机中,如果是,进入步骤l,否则,则将占用资源较少的微服务作为待迁移微服务,将占用资源较多的微服务所在的虚拟机作为目的虚拟机;
k、判断目的虚拟机是否能够承载该微服务,如果是,将待迁移微服务迁移到目的虚拟机中,进入步骤l,否则,根据关系距离矩阵DL查找能够承载该微服务且与目的虚拟机距离较近的虚拟机作为新目的虚拟机,将待迁移微服务迁移到新目的虚拟机中;
l、判断微服务调用关系列表是否全部遍历,是的话,第二级调度结束,否则,返回步骤h。
通过周期性的更新微服务调用关系系数和虚拟机关系距离矩阵,为第二级调度方法提供了必要的调度和迁移数据。第二级调度方法将周期性的执行,并且根据微服务调用关系系数和虚拟机关系距离矩阵,将相互调用频繁的微服务迁移到距离较近的虚拟机中。优先保证了相互调用频繁的微服务之间的调用性能,同时也能够均衡的使用虚拟机的网络资源。
上述调度方法的实现系统,包括依次连接的初始化模块、第一调度模块、第二调度模块;
所述初始化模块用于:初始化实时获取所有物理服务器、虚拟机、服务及微服务的基本信息;所述第一调度模块用于:根据实时获取的所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;所述第二调度模块用于:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,通过虚拟机之间通信的延时动态更新虚拟机之间的关系距离矩阵,根据虚拟机之间的关系距离矩阵和微服务之间的调用频繁程度,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。
进一步优选的,所述第一调度模块、第二调度模块均为调度器。
进一步优选的,所述第一调度模块执行所述步骤a至步骤f;所述第二调度模块执行所述步骤g至步骤l。
本发明的有益效果为:
1.初始调度后,将有调用关系的微服务调度到关系距离近的虚拟机中,一定程度上提高了微服务之间的调用效率。
2.微服务之间的关系系数,会根据周期AT内的每个微服务的负载情况进行动态调整。依据动态的关系系数进行服务迁移,这样保证了不同时间段内调用最频繁的微服务会在距离较近的虚拟机中运行。
3.虚拟机直接的关系距离,会根据周期AT内虚拟机之间的网络延时进行动态调整。这样保证了每次周期性迁移时,虚拟机之间的关系距离都是最新的,不会出现虚拟机之间的网络延时很高,而虚拟机之间的距离缺很低的情况。
附图说明
图1为本发明基于复杂异构环境的微服务调度方法的实现框图;
图2为本发明基于复杂异构环境的微服务调度方法中第一级调度的流程示意图;
图3为本发明基于复杂异构环境的微服务调度方法中第二级调度的流程示意图;
图4为本发明应用于Flume+HDFS构架海量日志文件存储系统的示意图;
图5为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传128M日志文件的上传时间对比曲线图;
图6为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传256M日志文件的上传时间对比曲线图;
图7为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传1G日志文件的上传时间对比曲线图;
图8为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传3G日志文件的上传时间对比曲线图;
图9为本发明基于复杂异构环境的微服务调度方法的实现系统的结构框图。
具体实施方式
下面结合说明书附图和实施例对本发明作进一步限定,但不限于此。
实施例1
一种基于复杂异构环境的微服务调度方法,运行于基于微服务架构的分布式容器应用平台,基于微服务架构的分布式容器应用平台包括若干台物理服务器,每台物理服务器包括若干台虚拟机,待调度的业务应用中包括若干个服务,每个服务中包括若干个微服务;如图1所示,底层一共有N台物理服务器,这N台物理服务器中有M台虚拟机,每台虚拟机所能提供的资源各不相同;中间调度器可以直接将待调度的微服务调度到不同的虚拟机中;上层待调度的业务应用中,包含了两个服务,每个服务中又包含了4个微服务,并且微服务与微服务之间存在调用的关系。初始化所有物理服务器、虚拟机、服务及微服务的基本信息,包括步骤如下:
(1)第一级调度:实时获取所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;保证各个微服务之间调用的高性能;
(2)第二级调度:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,通过虚拟机之间通信的延时动态更新虚拟机之间的关系距离矩阵,根据虚拟机之间的关系距离矩阵和微服务之间的调用频繁程度,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。同时尽量保证各虚拟机的带宽利用率尽量均衡。
通过对微服务的两级调度之后,保证微服务能够被调度到合适的虚拟机上,尽量减少微服务跨虚拟机、跨物理服务器、跨网段调用,最终达到微服务之间高效调用的效果。
实施例2
根据实施例1所述的一种基于复杂异构环境的微服务调度方法,其区别在于:步骤(1)中,
所有物理服务器的基本信息,包括物理服务器集合PH,PH={PH1,PH2,PH3,...,PHm},共有m台物理服务器,PHm是指第m台物理服务器;
所有虚拟机的基本信息,包括虚拟机集合VM及每一台虚拟机能够提供的资源量集合R,VM={VM1,VM2,VM3,...,VMn},共有n台虚拟机,VMn是指第n台虚拟机;R={R1,R2,R3,...,Rn},Rn是指第n台虚拟机能够提供的资源量;
服务及微服务的基本信息,包括服务集合S、每个服务包含的微服务集合Si、微服务占用资源MRij、微服务之间的调用关系列表CI、每个微服务需要预留的标准虚拟资源量CRij、微服务之间的关系系数、定时调度周期AT、虚拟机关系距离矩阵DL、业务应用微服务调度状态矩阵SL;
S={S1,S2,S3,...,Si,...,SI},共有I个服务,Si是指第i个服务;
Si={MSi1,MSi2,MSi3,...,MSij...,MSiJ},是指第i个服务中包含J个微服务;
MRij是指第i个服务中的第j个微服务所占用的资源量;
CI=[[(MSab,MScd),(MScd,MSef)],[(MSgh,MSij)],...|a,b,c,d,e,f,g,h,i,j...=1,2,3,...];
(MSgh,MSij)代表第g个服务中第h个微服务会调用第i个服务中第j个微服务;假设CI是根据微服务调用关系链条的服务节点的个数降序排序,即微服务调用关系链条长的被优先调度,微服务调用关系链条是一系列有先后调用关系的微服务;例如,A服务调用B服务,B服务调用C服务,则这样就组成一个有三个服务节点的链条,一个关系链条最少有两个服务节点;CI包含了一个业务应用中所有微服务调用关系。该列表是一个二维列表,每一个子列表代表一个微服务调用关系分支。微服务调用关系列表按照子列表元素的数量降序排列,即调用关系分支元素越多,则会优先调度该分支上的服务。
每个微服务需要预留的标准虚拟资源量为CRij,CRij表示第i个服务的第j个微服务所占用的虚拟资源;
微服务之间的关系系数是指一个定时调度周期AT微服务之间调用的次数,反应了微服务之间调用的频繁程度;例如,在AT时间内第i个服务中的第j个微服务调用第k个服务中的第l个微服务的次数,表示为Cij,kl。微服务之间的关系系数都初始化为0;
初始化定时调度周期AI,定时调度周期AI初始化值为10分钟;调度实现系统会在定时调度周期AT内统计各微服务之间调用的次数,并且在周期结束时触发自动调度,将调用较频繁的微服务迁移到相同的虚拟机中。
DL={{D11,D12,D13,...,D1n},{D21,D22,D23,...,D2n},...,{Dn1,Dn2,Dn3,...,Dnn}},Dnn是指第n台虚拟机与第n台虚拟机的关系距离,初始化为0;
假设第n台虚拟机与第n台虚拟机有m个距离因子,即:E1,E2,E3,...,Em,则
Figure BDA0002671205090000101
距离因子为大于等于0的值;影响距离因子的因素包括:虚拟机所处物理服务器、虚拟机所处网络、物理服务器所处网络、物理服务器所处机架、物理服务器所处网络中心。
距离因子的数值定义如下:处在相同物理服务器的两台虚拟机的距离因子为1;处在不同物理服务器的两台虚拟机距离因子为2;处在相同网络的两台虚拟机的距离因子为1;处在不同网络的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同网络的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同网络的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同机架的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同机架的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同网络中心的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同网络中心的两台虚拟机的距离因子为2。
业务应用微服务调度状态矩阵SL用于查找微服务的调度状态,第i个服务中的第j个微服务调度状态表示为MSIij,状态包括:是否已调度is_scheduled、调度到的虚拟机VM;
该虚拟机关系距离矩阵可以方便查询两台虚拟机之间的关系距离。初始化时,虚拟机关系距离是由两台虚拟机所处物理机、虚拟机网段、物理机网段等距离因子因素确定。运行过程中,通过虚拟机之间的网络延时来确定。关系距离值越小,则代表两台虚拟机之间的网络延时越小。第i台虚拟机与第i台虚拟机的关系距离为0。
本实施例中出现的具体字符及该字符的名称、含义,如表1所述:
表1
Figure BDA0002671205090000102
Figure BDA0002671205090000111
Figure BDA0002671205090000121
步骤(1)中,将有调用关系的微服务调度到关系距离更近的虚拟机中,如图2所示,调度器根据虚拟机可以提供的资源、虚拟机之间的距离、业务应用服务中各微服务的调用关系、各微服务占用的资源等信息完成业务应用服务的调度过程,包括步骤如下:
a、用户提交待调度业务应用的信息,包括服务及微服务的基本信息;
b、判断虚拟机提供的总资源能否承载业务应用服务所占用总资源,虚拟机提供的总资源为
Figure BDA0002671205090000122
业务应用服务所占用总资源为
Figure BDA0002671205090000123
如果不能承载,则调度失败;否则,正式开始调度,进入步骤c;
c、依次进行三层嵌套循环,遍历所有有调用关系的微服务;
三层嵌套循环包括:第一层嵌套循环是:微服务之间的调用关系列表CI中的所有微服务调用关系链条;第二层嵌套循环是:遍历每一个调用关系链条中微服务调用关系;第三层嵌套循环是:遍历每一个微服务调用关系中的微服务;
将一个微服务调用关系链条中有调用关系的微服务调度到关系距离较近的虚拟机中;注意:第一层嵌套循环钟,在对每一个微服务调用关系链条进行调度之前,会按提供资源量来对虚拟机进行逆序排列,这样可以使一个链条中的微服务尽量调度到关系距离较近的虚拟机中。对于不同链条中存在微服务交叉调用的情况,在交叉点确定已经被调度的微服务所在的虚拟机,将该链条中其他的微服务调度到与该虚拟机距离较近的虚拟机中,这样可以让有交叉关系的链条中的微服务尽量在关系距离较近的虚拟机中。
d、根据虚拟机能够提供的资源量,对每一台虚拟机能够提供的资源量集合R重新按降序排序;记录当前待调度虚拟机索引p=1;
e、遍历业务应用微服务调度状态矩阵SL,查找未调度的微服务,并且将其调度资源充足的虚拟机中;
遍历业务应用微服务调度状态矩阵SL中所有的微服务,判断该微服务是否已经被调度,是的话,进入步骤f,否则,判断虚拟机能否承载该微服务,可以承载,将该微服务调度到该虚拟机上,不可以承载,则切换下一个虚拟机,p加1,继续判断虚拟机能否承载该微服务。
f、确认所有的微服务都已经被调度完成,第一级调度结束。
判断业务应用微服务调度状态矩阵SL中的微服务是否全部遍历完成,是的话,第一调度结束,否则,返回步骤e。
步骤c,包括步骤如下:
①遍历微服务之间的调用关系列表CI中的所有微服务调用关系链条;
②根据每一台虚拟机能够提供的资源量,降序排列每一台虚拟机能够提供的资源量集合R;
③初始化当前待调度虚拟机索引p=1;
④遍历当前微服务调用关系链条中所有微服务调用关系;微服务调用关系,例如,微服务之间的调用关系列表CI中(MSgh,MSij)代表第g个服务中第h个微服务会调用第i个服务中第j个微服务;
⑤遍历当前微服务调用关系中的微服务;例如,第i个服务中第j个微服务会调用第k个服务中第l个微服务中第j个微服务和第l个微服务;
⑥根据业务应用微服务调度状态矩阵SL判断当前微服务是否已被调度,如果是,记录调度到的虚拟机VM的索引p为当前微服务所在虚拟机;否则,进入步骤i;
⑦判断当前待调度虚拟机能否承载该当前微服务,如果能,则将当前微服务调度到当前待调度虚拟机上,否则,通过虚拟机关系距离矩阵DL找到与当前待调度虚拟机关系距离最近且能够承载当前微服务的虚拟机,记录待调度虚拟机索引p为该找到的虚拟机;
⑧判断微服务调用关系中的微服务是否全部遍历,如果是,进入步骤⑨,否则,返回步骤⑤;
⑨判断微服务调用关系链条中微服务调用关系是否全部遍历,如果是,进入步骤⑩,否则,返回步骤④;
⑩判断微服务之间的调用关系列表CI中的所有微服务调用关系链条是否全部遍历,如果是,进入步骤d,否则,返回步骤①。
通过第一级调度,可以达到以下效果:首先,根据调用关系链条的长短,将较长链条上的微服务调度到距离较近且能够承载该微服务的虚拟机中;其次,对于不同链条中存在微服务交叉调用的情况,在交叉点确定已经被调度的微服务所在的虚拟机,将该链条中其他的微服务调度到与该虚拟机距离较近的虚拟机中。这样可以使得一个链条中的微服务尽量处在相同或距离较近的虚拟机中,同时满足了不同链条中存在交叉调用的微服务也能够处在相同或距离较近的虚拟机中,最终提高了微服务之间的调用性能。
根据虚拟机及物理服务器的初始化信息,以及业务应用的服务信息,进行第一级服务的调度。第一级调度将业务应用服务中的各个微服务分别调度到虚拟机中,尽力满足有关联的微服务被调度到相同的虚拟机中。第一级调度方法若调度成功返回True,否则则返回False。调度方法具体如下:
Figure BDA0002671205090000141
Figure BDA0002671205090000151
Figure BDA0002671205090000161
Figure BDA0002671205090000171
注:(1)函数update()功能为更新微服务调度状态矩阵。
(2)函数length()功能为计算列表的长度。
(3)函数count()功能为计算微服务占用资源量。
(4)函数min()功能为检索列表中最小的值。
(5)函数index()功能为获取元素在列表中的索引值。
(6)函数chech_vm()功能为查找服务所在的虚拟机。
实施例3
根据实施例1或2所述的一种基于复杂异构环境的微服务调度方法,其区别在于:
步骤(2)中,调度器将根据定时调度周期AT内统计的虚拟机之间通信的延时和虚拟机关系距离矩阵DL,并生成微服务之间的关系系数列表C和按关系系数逆序排列的微服务之间的关系系数列表Csort,将微服务之间的关系系数较大的微服务尽量调度到关系距离较近的虚拟机中,如图3所示,包括步骤如下:
g、到达定时调度周期AT时间节点,开始周期调度,获得上一定时调度周期AT内统计的微服务调用关系系数列表C、排序后的微服务关系系数列表Csort和更新后的虚拟机关系距离矩阵DL;
微服务调用关系系数列表C是指所有的微服务的微服务之间调用的次数;排序后计算微服务之间的关系系数,假设第1组微服务关系一个周期内调用了F1次,则第1组微服务调用关系系数为1;第2组在一个周期内调用了F2次,则第2组微服务调用关系系数为F2/F1;第n组在一个周期内调用了Fn次,则第n组微服务调用关系系数为Fn/F1,这样形成了排序后的微服务调用关系系数列表为Csort
将定时调度周期AT内的虚拟机之间的网络延时作为虚拟机之间的关系距离,并更新虚拟机关系距离矩阵DL;例如,可以使用较轻量级的ping工具,来获得虚拟机之间的网络延时;也可以使用服务器客户端模式的qper工具。
h、依次遍历排序后的微服务调用关系列表CIsort
i、判断当前微服务关系系数是否大于微服务之间的关系系数的平均值,如果是,启动微服务的迁移,进入步骤j,否则,进入步骤l;微服务之间的关系系数的平均值Cave是指在一个定时调度周期AT内所有微服务关系系数的平均值;
j、通过业务应用微服务调度状态矩阵SL判断两个微服务是否在同一个虚拟机中,如果是,进入步骤l,否则,则将占用资源较少的微服务作为待迁移微服务,将占用资源较多的微服务所在的虚拟机作为目的虚拟机;
k、判断目的虚拟机是否能够承载该微服务,如果是,将待迁移微服务迁移到目的虚拟机中,进入步骤l,否则,根据关系距离矩阵DL查找能够承载该微服务且与目的虚拟机距离较近的虚拟机作为新目的虚拟机,将待迁移微服务迁移到新目的虚拟机中;
l、判断微服务调用关系列表是否全部遍历,是的话,第二级调度结束,否则,返回步骤h。
通过第二级周期性的调度,将彼此之间调用频繁的微服务调度到关系距离较近的虚拟机中,可以尽量保证调用频繁的微服务之间通信的高性能。
周期性的第二级调度方法如下:
Figure BDA0002671205090000181
Figure BDA0002671205090000191
Figure BDA0002671205090000201
注:is_on_same_ph()函数作用为判断两个微服务是否在同一台虚拟机中。在同一台物理服务中返回True;不在同一台虚拟机中返回False。
通过周期性的更新微服务调用关系系数和虚拟机关系距离矩阵,为第二级调度方法提供了必要的调度和迁移数据。第二级调度方法将周期性的执行,并且根据微服务调用关系系数和虚拟机关系距离矩阵,将相互调用频繁的微服务迁移到距离较近的虚拟机中。优先保证了相互调用频繁的微服务之间的调用性能,同时也能够均衡的使用虚拟机的网络资源。
图4为本发明应用于Flume+HDFS构架海量日志文件存储系统的示意图;该场景中,待调度的业务应用服务是一个海量日志文件存储系统。为简化问题,Flume将直接从本地读取固定大小的日志文件。Flume通过HDFS的Namenode获取相关信息后,会将读取的本地日志文件转存到HDFS的Datanode中,Datanode之间也会进行通信传输相关的文件。因为HDFS是一个分布式的文件系统,因此在该场景中部署了三个节点的Datanode。在该场景中,Flume是一个服务,Flume服务下只有一个微服务即Flume服务(MS11);HDFS是一个服务,HDFS服务下有四个微服务即Datanode1服务(MS21)、Datanode2服务(MS22)、Datanode3服务(MS23)、Namenode服务(MS24)。根据微服务之间的调用关系,可以得到微服务调用关系列表CI=[[(MS11,MS21),(MS21,MS22),(MS22,MS23)],[MS11,MS24]],可以看到CI中包含了两个调用关系链条,其中从Flume到HDFS Datanode是最长的一个链条,排在了CI的第一个元素。通过图4中的虚拟机集合可以看出,一共有5台虚拟机,分别处在4台物理服务器中,其中VM03和VM04处在相同的物理服务器中;5台虚拟机所处网段相同,4台物理服务器所处网段相同。假设虚拟机在相同物理服务器、虚拟机在不同物理服务器、虚拟机网段、物理机网段这三个虚拟机距离影响因素的值分别是0.5、1、1、1,则这5台虚拟机的关系距离矩阵DL=[[0,1,1,1,1],[1,0,1,1,1],[1,1,0,0.5,1],[1,1,0.5,0,1],[1,1,1,1,0]],通过关系距离矩阵,可以方便得到两台虚拟机之间的距离,例如VM03和VM05之间的关系距离为DL[3][5]=1。
图5为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传128M日志文件的上传时间对比曲线图;图6为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传256M日志文件的上传时间对比曲线图;图7为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传1G日志文件的上传时间对比曲线图;图8为Flume+HDFS框架海量日志文件存储系统分别使用本发明的调度方法和原始的调度方法调度系统的服务,并测试上传3G日志文件的上传时间对比曲线图。使用默认调度方法以及本发明调度方法,分别转存128M、256M、1G、3G的日志文件到HDFS中,分别测试20次上传时间的效果曲线。为了更好地凸显效果,默认调度方法将没有调用关系的Namenode和Datanode1两个微服务调度到VM03和VM04上,其余的微服务可以任意调度到不同的虚拟机中。本发明的调度方法也是测试两种情况,第一种情况是假设一台虚拟机能够承载所有的微服务;第二种情况是假设VM03和VM04两台虚拟机能够承载所有的微服务。其中使用默认调度方法调度的效果曲线在图中用实线表示;本发明的调度方法将服务调度到相同虚拟机的效果曲线在图中用点线表示;本发明的调度方法将服务调度到关系距离较近虚拟机的效果曲线在图中用虚线表示。最终,通过测试效果曲线可以整体看出,通过本调度方法调度后的业务应用在上传日志文件时,整体的上传时间更短,即业务应用的性能更加优秀。
实施例4
实施例3所述调度方法的实现系统,如图9所示,包括依次连接的初始化模块、第一调度模块、第二调度模块;
初始化模块用于:初始化实时获取所有物理服务器、虚拟机、服务及微服务的基本信息;第一调度模块用于:根据实时获取的所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;第二调度模块用于:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,通过虚拟机之间通信的延时动态更新虚拟机之间的关系距离矩阵,根据虚拟机之间的关系距离矩阵和微服务之间的调用频繁程度,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。
第一调度模块、第二调度模块均为调度器。
第一调度模块执行步骤a至步骤f;第二调度模块执行步骤g至步骤l。
显然,在具体实施方式中所列举的示例只是本发明的一部分示例,而不是所有的示例。基于本发明的示例,技术人员在没有做创造性劳动的前提下所获得的所有其他示例,都应当属于本发明的保护范围。

Claims (10)

1.一种基于复杂异构环境的微服务调度方法,其特征在于,运行于基于微服务架构的分布式容器应用平台,基于微服务架构的分布式容器应用平台包括若干台物理服务器,每台物理服务器包括若干台虚拟机,待调度的业务应用中包括若干个服务,每个服务中包括若干个微服务;初始化所有物理服务器、虚拟机、服务及微服务的基本信息,包括步骤如下:
(1)第一级调度:实时获取所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;
(2)第二级调度:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,通过虚拟机之间通信的延时动态更新虚拟机之间的关系距离矩阵,根据虚拟机之间的关系距离矩阵和微服务之间的调用频繁程度,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。
2.根据权利要求1所述的一种基于复杂异构环境的微服务调度方法,其特征在于,步骤(1)中,所有物理服务器的基本信息,包括物理服务器集合PH,PH={PH1,PH2,PH3,...,PHm},共有m台物理服务器,PHm是指第m台物理服务器;
所有虚拟机的基本信息,包括虚拟机集合VM及每一台虚拟机能够提供的资源量集合R,VM={VM1,VM2,VM3,...,VMn},共有n台虚拟机,VMn是指第n台虚拟机;R={R1,R2,R3,...,Rn},Rn是指第n台虚拟机能够提供的资源量;
服务及微服务的基本信息,包括服务集合S、每个服务包含的微服务集合Si、微服务占用资源MRij、微服务之间的调用关系列表CI、每个微服务需要预留的标准虚拟资源量CRij、微服务之间的关系系数、定时调度周期AT、虚拟机关系距离矩阵DL、业务应用微服务调度状态矩阵SL;
S={S1,S2,S3,...,Si,...,SI},共有I个服务,Si是指第i个服务;
Si={MSi1,MSi2,MSi3,...,MSij...,MSiJ},是指第i个服务中包含J个微服务;
MRij是指第i个服务中的第j个微服务所占用的资源量;
CI=[[(MSab,MScd),(MScd,MSef)],[(MSgh,MSij)],...|a,b,c,d,e,f,g,h,i,j...=1,2,3,...];
(MSgh,MSij)代表第g个服务中第h个微服务会调用第i个服务中第j个微服务;假设CI是根据微服务调用关系链条的服务节点的个数降序排序,即微服务调用关系链条长的被优先调度,微服务调用关系链条是一系列有先后调用关系的微服务;
CRij表示第i个服务的第j个微服务所占用的虚拟资源;
微服务之间的关系系数是指一个定时调度周期AT微服务之间调用的次数,反应了微服务之间调用的频繁程度;微服务之间的关系系数都初始化为0;
初始化定时调度周期AI,DL={{D11,D12,D13,...,D1n},{D21,D22,D23,...,D2n},...,{Dn1,Dn2,Dn3,...,Dnn}},Dnn是指第n台虚拟机与第n台虚拟机的关系距离,初始化为0;
假设第n台虚拟机与第n台虚拟机有m个距离因子,即:E1,E2,E3,...,Em,则
Figure FDA0002671205080000021
距离因子为大于等于0的值;
业务应用微服务调度状态矩阵SL用于查找微服务的调度状态,第i个服务中的第j个微服务调度状态表示为MSIij,状态包括:是否已调度is_scheduled、调度到的虚拟机VM。
3.根据权利要求2所述的一种基于复杂异构环境的微服务调度方法,其特征在于,步骤(1)中,将有调用关系的微服务调度到关系距离更近的虚拟机中,包括步骤如下:
a、用户提交待调度业务应用的信息,包括服务及微服务的基本信息;
b、判断虚拟机提供的总资源能否承载业务应用服务所占用总资源,虚拟机提供的总资源为
Figure FDA0002671205080000022
业务应用服务所占用总资源为
Figure FDA0002671205080000023
如果不能承载,则调度失败;否则,正式开始调度,进入步骤c;
c、依次进行三层嵌套循环,遍历所有有调用关系的微服务;
三层嵌套循环包括:第一层嵌套循环是:微服务之间的调用关系列表CI中的所有微服务调用关系链条;第二层嵌套循环是:遍历每一个调用关系链条中微服务调用关系;第三层嵌套循环是:遍历每一个微服务调用关系中的微服务;
将一个微服务调用关系链条中有调用关系的微服务调度到关系距离较近的虚拟机中;
d、根据虚拟机能够提供的资源量,对每一台虚拟机能够提供的资源量集合R重新按降序排序;
e、遍历业务应用微服务调度状态矩阵SL,查找未调度的微服务,并且将其调度资源充足的虚拟机中;
f、确认所有的微服务都已经被调度完成,第一级调度结束。
4.根据权利要求3所述的一种基于复杂异构环境的微服务调度方法,其特征在于,步骤c,包括步骤如下:
①遍历微服务之间的调用关系列表CI中的所有微服务调用关系链条;
②根据每一台虚拟机能够提供的资源量,降序排列每一台虚拟机能够提供的资源量集合R;
③初始化当前待调度虚拟机索引p=1;
④遍历当前微服务调用关系链条中所有微服务调用关系;
⑤遍历当前微服务调用关系中的微服务;
⑥根据业务应用微服务调度状态矩阵SL判断当前微服务是否已被调度,如果是,记录调度到的虚拟机VM的索引p为当前微服务所在虚拟机;否则,进入步骤i;
⑦判断当前待调度虚拟机能否承载该当前微服务,如果能,则将当前微服务调度到当前待调度虚拟机上,否则,通过虚拟机关系距离矩阵DL找到与当前待调度虚拟机关系距离最近且能够承载当前微服务的虚拟机,记录待调度虚拟机索引p为该找到的虚拟机;
⑧判断微服务调用关系中的微服务是否全部遍历,如果是,进入步骤⑨,否则,返回步骤⑤;
⑨判断微服务调用关系链条中微服务调用关系是否全部遍历,如果是,进入步骤⑩,否则,返回步骤④;
⑩判断微服务之间的调用关系列表CI中的所有微服务调用关系链条是否全部遍历,如果是,进入步骤d,否则,返回步骤①。
5.根据权利要求2-4任一所述的一种基于复杂异构环境的微服务调度方法,其特征在于,步骤(2)中,根据定时调度周期AT内统计的虚拟机之间通信的延时和虚拟机关系距离矩阵DL,并生成微服务之间的关系系数列表C和按关系系数逆序排列的微服务之间的关系系数列表Csort,将微服务之间的关系系数较大的微服务尽量调度到关系距离较近的虚拟机中,包括步骤如下:
g、到达定时调度周期AT时间节点,开始周期调度,获得上一定时调度周期AT内统计的微服务调用关系系数列表C、排序后的微服务关系系数列表Csort和更新后的虚拟机关系距离矩阵DL;微服务调用关系系数列表C是指所有的微服务的微服务之间调用的次数;将定时调度周期AT内的虚拟机之间的网络延时作为虚拟机之间的关系距离,并更新虚拟机关系距离矩阵DL;
h、依次遍历排序后的微服务调用关系列表CIsort
i、判断当前微服务关系系数是否大于微服务之间的关系系数的平均值,如果是,启动微服务的迁移,进入步骤j,否则,进入步骤l;微服务之间的关系系数的平均值Cave是指在一个定时调度周期AT内所有微服务关系系数的平均值;
j、通过业务应用微服务调度状态矩阵SL判断两个微服务是否在同一个虚拟机中,如果是,进入步骤l,否则,则将占用资源较少的微服务作为待迁移微服务,将占用资源较多的微服务所在的虚拟机作为目的虚拟机;
k、判断目的虚拟机是否能够承载该微服务,如果是,将待迁移微服务迁移到目的虚拟机中,进入步骤l,否则,根据关系距离矩阵DL查找能够承载该微服务且与目的虚拟机距离较近的虚拟机作为新目的虚拟机,将待迁移微服务迁移到新目的虚拟机中;
l、判断微服务调用关系列表是否全部遍历,是的话,第二级调度结束,否则,返回步骤h。
6.根据权利要求2所述的一种基于复杂异构环境的微服务调度方法,其特征在于,定时调度周期AI初始化值为10分钟。
7.根据权利要求2所述的一种基于复杂异构环境的微服务调度方法,其特征在于,距离因子的数值定义如下:处在相同物理服务器的两台虚拟机的距离因子为1;处在不同物理服务器的两台虚拟机距离因子为2;处在相同网络的两台虚拟机的距离因子为1;处在不同网络的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同网络的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同网络的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同机架的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同机架的两台虚拟机的距离因子为2;分别处在两台物理服务器中且两台物理服务器处在相同网络中心的两台虚拟机的距离因子为1;分别处在两台物理服务器中且两台物理服务器处在不同网络中心的两台虚拟机的距离因子为2。
8.权利要求5所述调度方法的实现系统,其特征在于,包括依次连接的初始化模块、第一调度模块、第二调度模块;
所述初始化模块用于:初始化实时获取所有物理服务器、虚拟机、服务及微服务的基本信息;所述第一调度模块用于:根据实时获取的所有物理服务器、虚拟机、服务及微服务的基本信息,将有调用关系的微服务调度到关系距离更近的虚拟机中;所述第二调度模块用于:在业务应用运行过程中,统计一个时间段内虚拟机之间通信的延时和微服务之间的调用频繁程度,通过虚拟机之间通信的延时动态更新虚拟机之间的关系距离矩阵,根据虚拟机之间的关系距离矩阵和微服务之间的调用频繁程度,周期性检查并迁移符合条件的微服务,保证调用频繁的微服务迁移到关系距离较近的虚拟机上。
9.根据权利要求8所述调度方法的实现系统,其特征在于,所述第一调度模块、第二调度模块均为调度器。
10.根据权利要求8或9所述调度方法的实现系统,其特征在于,所述第一调度模块执行所述步骤a至步骤f;所述第二调度模块执行所述步骤g至步骤l。
CN202010933828.8A 2020-09-08 2020-09-08 一种基于复杂异构环境的微服务调度方法及其实现系统 Active CN112068943B (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202010933828.8A CN112068943B (zh) 2020-09-08 2020-09-08 一种基于复杂异构环境的微服务调度方法及其实现系统

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202010933828.8A CN112068943B (zh) 2020-09-08 2020-09-08 一种基于复杂异构环境的微服务调度方法及其实现系统

Publications (2)

Publication Number Publication Date
CN112068943A true CN112068943A (zh) 2020-12-11
CN112068943B CN112068943B (zh) 2022-11-25

Family

ID=73664263

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202010933828.8A Active CN112068943B (zh) 2020-09-08 2020-09-08 一种基于复杂异构环境的微服务调度方法及其实现系统

Country Status (1)

Country Link
CN (1) CN112068943B (zh)

Cited By (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934076A (zh) * 2023-01-03 2023-04-07 北京百度网讯科技有限公司 跨平台客户端的微服务提供装置、方法和电子设备
CN117349036A (zh) * 2023-12-06 2024-01-05 湖北省楚天云有限公司 微服务实例部署方法、系统、设备及存储介质

Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096461A (zh) * 2011-01-13 2011-06-15 浙江大学 基于虚拟机迁移和负载感知整合的云数据中心节能方法
CN102508714A (zh) * 2011-11-03 2012-06-20 南京邮电大学 一种云计算中基于绿色计算的虚拟机调度方法
CN103077082A (zh) * 2013-01-08 2013-05-01 中国科学院深圳先进技术研究院 一种数据中心负载分配及虚拟机迁移节能方法及系统
US20170230349A1 (en) * 2016-02-04 2017-08-10 International Business Machines Corporation Microservices inter-operational trust management
CN109634816A (zh) * 2018-11-27 2019-04-16 平安科技(深圳)有限公司 应用管理方法及终端设备
CN110673941A (zh) * 2019-09-27 2020-01-10 掌阅科技股份有限公司 多机房中微服务的迁移方法、电子设备及存储介质
CN111027736A (zh) * 2019-07-30 2020-04-17 中国人民解放军国防科技大学 多目标优化下的微服务组合部署与调度方法

Patent Citations (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN102096461A (zh) * 2011-01-13 2011-06-15 浙江大学 基于虚拟机迁移和负载感知整合的云数据中心节能方法
CN102508714A (zh) * 2011-11-03 2012-06-20 南京邮电大学 一种云计算中基于绿色计算的虚拟机调度方法
CN103077082A (zh) * 2013-01-08 2013-05-01 中国科学院深圳先进技术研究院 一种数据中心负载分配及虚拟机迁移节能方法及系统
US20170230349A1 (en) * 2016-02-04 2017-08-10 International Business Machines Corporation Microservices inter-operational trust management
CN109634816A (zh) * 2018-11-27 2019-04-16 平安科技(深圳)有限公司 应用管理方法及终端设备
CN111027736A (zh) * 2019-07-30 2020-04-17 中国人民解放军国防科技大学 多目标优化下的微服务组合部署与调度方法
CN110673941A (zh) * 2019-09-27 2020-01-10 掌阅科技股份有限公司 多机房中微服务的迁移方法、电子设备及存储介质

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN115934076A (zh) * 2023-01-03 2023-04-07 北京百度网讯科技有限公司 跨平台客户端的微服务提供装置、方法和电子设备
CN115934076B (zh) * 2023-01-03 2024-01-02 北京百度网讯科技有限公司 跨平台客户端的微服务提供装置、方法和电子设备
CN117349036A (zh) * 2023-12-06 2024-01-05 湖北省楚天云有限公司 微服务实例部署方法、系统、设备及存储介质
CN117349036B (zh) * 2023-12-06 2024-04-05 湖北省楚天云有限公司 微服务实例部署方法、系统、设备及存储介质

Also Published As

Publication number Publication date
CN112068943B (zh) 2022-11-25

Similar Documents

Publication Publication Date Title
CN108829494B (zh) 基于负载预测的容器云平台智能资源优化方法
Zheng et al. An approach for cloud resource scheduling based on Parallel Genetic Algorithm
Verma et al. Two sides of a coin: Optimizing the schedule of mapreduce jobs to minimize their makespan and improve cluster performance
CN104636204B (zh) 一种任务调度方法与装置
CN112068943B (zh) 一种基于复杂异构环境的微服务调度方法及其实现系统
CN110554909A (zh) 任务的调度处理方法、装置及计算机设备
US8843929B1 (en) Scheduling in computer clusters
US11816509B2 (en) Workload placement for virtual GPU enabled systems
CN109861850B (zh) 一种基于sla的无状态云工作流负载均衡调度的方法
Domanal et al. Load balancing in cloud environment using a novel hybrid scheduling algorithm
CN110990154B (zh) 一种大数据应用优化方法、装置及存储介质
CN108769182A (zh) 一种预测执行任务执行时间的组合优化调度方法
CN111147604B (zh) 一种车联网边缘计算的负载均衡方法
CN111488210A (zh) 基于云计算的任务调度方法、装置和计算机设备
Mohamed et al. Hadoop-MapReduce job scheduling algorithms survey
CN114625500A (zh) 云环境下拓扑感知的微服务应用调度的方法及应用
Javanmardi et al. An architecture for scheduling with the capability of minimum share to heterogeneous Hadoop systems
CN113672391A (zh) 一种基于Kubernetes的并行计算任务调度方法与系统
Huang et al. AutoVNF: An Automatic Resource Sharing Schema for VNF Requests.
CN111880898B (zh) 一种基于微服务架构的服务调度方法及其实现系统
CN116010051A (zh) 一种联邦学习多任务调度方法及装置
Qin et al. Dependent task scheduling algorithm in distributed system
CN115061811A (zh) 一种资源调度方法、装置、设备及存储介质
CN113391891B (zh) 基于Rete和字符串模式匹配算法的负载均衡资源调度方法
Merkouche et al. TERA-Scheduler for a Dependency-based Orchestration of 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
GR01 Patent grant
GR01 Patent grant