CN111930523A - 一种用于服务集群的负载均衡方法和*** - Google Patents
一种用于服务集群的负载均衡方法和*** Download PDFInfo
- Publication number
- CN111930523A CN111930523A CN202011042169.5A CN202011042169A CN111930523A CN 111930523 A CN111930523 A CN 111930523A CN 202011042169 A CN202011042169 A CN 202011042169A CN 111930523 A CN111930523 A CN 111930523A
- Authority
- CN
- China
- Prior art keywords
- service
- memory
- working node
- trusted execution
- execution environment
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Pending
Links
Images
Classifications
-
- 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/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5083—Techniques for rebalancing the load in a distributed system
-
- 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/57—Certifying or maintaining trusted computer platforms, e.g. secure boots or power-downs, version controls, system software checks, secure updates or assessing vulnerabilities
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Computer Hardware Design (AREA)
- Computer Security & Cryptography (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Debugging And Monitoring (AREA)
Abstract
本说明书实施例公开了一种用于服务集群的负载均衡方法和***,所述服务集群包括多个具有可信执行环境的工作节点,所述方法包括:获取服务集群中工作节点的可信执行环境的内存状态信息;至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。
Description
技术领域
本说明书涉及通信技术领域,特别涉及一种用于服务集群的负载均衡方法和***。
背景技术
随着互联网的快速发展和业务量的不断提高,基于网络的数据访问流量迅速增长,特别是对数据中心、大型企业以及门户网站等的访问,其访问流量通常为海量级别,对应用服务提出了高性能和高可靠性的需求。然而,相对于网络技术的发展,服务器处理速度和内存访问速度的增长却远远低于网络带宽和应用服务的增长,网络带宽增长的同时带来的用户数量的增长,也使得服务器资源消耗严重,因而服务器成为了网络瓶颈。
相关技术中,提出了组建服务器集群,利用负载均衡技术在服务器集群间进行业务均衡,本说明书旨在针对基于可信执行环境的服务集群,提出一种更适宜的负载均衡方法和***。该服务集群能够在对外提供服务的过程中进行数据隐私保护。
发明内容
本说明书实施例的一个方面提供一种用于服务集群的负载均衡方法,所述服务集群包括多个具有可信执行环境的工作节点,所述方法包括:获取服务集群中工作节点的可信执行环境的内存状态信息;至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。
本说明书实施例的另一个方面提供一种用于服务集群的负载均衡******,所述***包括:获取模块,可以用于获取服务集群中工作节点的可信执行环境的内存状态信息。调整模块,可以用于至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。
本说明书实施例的另一个方面提供一种用于服务集群的负载均衡装置,包括处理器,所述处理器用于执行用于服务集群的负载均衡方法。
本说明书实施例的另一个方面提供一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行用于服务集群的负载均衡方法。
附图说明
本说明书将以示例性实施例的方式进一步说明,这些示例性实施例将通过附图进行详细描述。这些实施例并非限制性的,在这些实施例中,相同的编号表示相同的结构,其中:
图1是根据本说明书一些实施例所示的用于服务集群的负载均衡***的应用场景的示例性示意图;
图2是根据本说明书一些实施例所示的用于服务集群的负载均衡方法的示例性流程图;
图3是根据本说明书一些实施例所示的实施负载均衡的方法的示例性流程图;
图4是根据本说明书一些实施例所示的调整工作节点的负载权重方法的示例性流程图;
图5是根据本说明书一些实施例所示的临界指标的确定方法的示例性流程图;
图6是根据本说明书的一些实施例所示的用于服务集群的负载均衡***的模块图。
具体实施方式
为了更清楚地说明本说明书实施例的技术方案,下面将对实施例描述中所需要使用的附图作简单的介绍。显而易见地,下面描述中的附图仅仅是本说明书的一些示例或实施例,对于本领域的普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图将本说明书应用于其它类似情景。除非从语言环境中显而易见或另做说明,图中相同标号代表相同结构或操作。
应当理解,本文使用的“***”、“装置”、“单元”和/或“模块”是用于区分不同级别的不同组件、元件、部件、部分或装配的一种方法。然而,如果其他词语可实现相同的目的,则可通过其他表达来替换所述词语。
如本说明书和权利要求书中所示,除非上下文明确提示例外情形,“一”、“一个”、“一种”和/或“该”等词并非特指单数,也可包括复数。一般说来,术语“包括”与“包含”仅提示包括已明确标识的步骤和元素,而这些步骤和元素不构成一个排它性的罗列,方法或者设备也可能包含其它的步骤或元素。
本说明书中使用了流程图用来说明根据本说明书的实施例的***所执行的操作。应当理解的是,前面或后面操作不一定按照顺序来精确地执行。相反,可以按照倒序或同时处理各个步骤。同时,也可以将其他操作添加到这些过程中,或从这些过程移除某一步或数步操作。
图1是根据本说明书一些实施例所示的用于服务集群的负载均衡***的应用场景的示例性示意图。
用于服务集群的负载均衡***可以通过实施本说明书中披露的方法和/或过程来对服务集群中工作节点实施负载均衡。服务集群是指将多个服务器集中进行一种或多种服务的***。服务集群可以包括多个可以执行相同任务的工作节点。在一些实施例中,服务集群可以应用于各种应用服务,例如,推荐服务、预测服务、智能客服服务、隐私保护服务等。在实际应用场景中,可能会存在多个用户终端同时发出服务请求,此时服务集群中的管理节点或负载均衡节点需要按照一定的负载均衡策略(或算法)将接收到的多个服务请求分发给不同的工作节点,以提高服务集群处理服务请求的效率,降低服务集群处理服务请求的响应时间。
在一些应用场景中,可以基于已分发给每个工作节点的服务请求数量进行负载均衡,如将新来的服务请求分发给拥有服务请求较少的工作节点。在又一些应用场景中,可以按照轮询的方式进行负载均衡,如按照顺序向各个工作节点分发新来的服务请求。然而,在基于可信执行环境的服务集群中,服务请求的响应时间还会受到可信执行环境的内存(如,SGX技术的EPC,Enclave Page Cache)状态的影响,仅通过前述方式进行负载均衡已经不能满足基于可信执行环境的服务集群的服务要求。本说明书一些实施例提出一种用于服务集群的负载均衡方法和***,该方法可以基于可信执行环境的内存状态信息对服务集群实施负载均衡,确保基于可信执行环境的服务集群的服务响应时间能够满足要求。
如图1所示,在应用场景中可以包括服务集群110、网络120和用户终端130。
服务集群110可以包括管理节点(或称为负载均衡器)110-1以及若干并行的工作节点110-2、110-3…。服务集群110中的节点可以是带有数据获取、存储、计算、分析和/或发送功能的设备,例如,服务器、个人计算机等。服务集群110可以用于处理用户终端130发送的服务请求。服务集群110中的工作节点可以是本地的或远程的。在一些实施例中,工作节点可以在云端平台实施。仅作为示例,云端平台可以包括私有云、公共云、混合云、社区云、分布云、内部云、多云等或其任意组合。在一些实施中,工作节点110-2、110-3、……中具有可信执行环境(TEE,Trusted Execution Environment),例如,工作节点具有基于SoftwareGuard Extensions(SGX)、Secure Encrypted Virtualization或TrustZone等技术的可信执行环境。以SGX为例,当程序在可信执行环境中执行时会受到Enclave保护,外界是无法篡改位于Enclave中的数据或影响该程序的执行过程。同时,SGX还可以向其他设备提供Enclave签名,以便向其他设备证明某程序正运行在本工作节点的可信执行环境中并受到保护。多个工作节点110-2、110-3、…可以共同处理服务请求,例如,在多个工作节点上运行同一个服务(或称为服务程序副本),管理节点110-1可以将服务请求分配至多个工作节点110-2、110-3、……进行处理。在一些实施例中,可以在各个工作节点中设置节点状态监控器,节点状态监控器可以用于获取工作节点的可信执行环境的内存状态信息。在一些实施例中,管理节点110-1可以获取服务集群中工作节点的可信执行环境的内存状态信息,并至少基于该内存状态信息实施负载均衡。
网络120可以连接***的各组成部分和/或连接***与外部资源部分,如可以连接用户终端130与服务集群110。网络120使得各组成部分之间,以及与***之外其他部分之间可以进行通讯,促进数据和/或信息的交换。在一些实施例中,网络120可以是有线网络或无线网络中的任意一种或多种。例如,网络120可以包括电缆网络、光纤网络、电信网络、互联网、局域网络(LAN)、广域网络(WAN)、无线局域网络(WLAN)、城域网(MAN)、公共交换电话网络(PSTN)、蓝牙网络、紫蜂网络(ZigBee)、近场通信(NFC)、设备内总线、设备内线路、线缆连接等或其任意组合。各部分之间的网络连接可以是采用上述一种方式,也可以是采取多种方式。在一些实施例中,网络可以是点对点的、共享的、中心式的等各种拓扑结构或者多种拓扑结构的组合。在一些实施例中,网络120可以包括一个或以上网络接入点。例如,网络120可以包括有线或无线网络接入点,例如基站和/或网络交换点,通过这些接入点,***100的一个或多个组件可连接到网络120上以交换数据和/或信息。
用户终端130指用户所使用的一个或多个终端设备或软件。用户可以通过用户终端130经由网络120向服务集群110发送服务请求,如基于统一的IP地址和端口向管理节点110-1发送服务请求,管理节点110-1再基于一定的策略将服务请求分发给工作节点,之后,管理节点110-1将处理结果返回给用户终端130。在一些实施例中,用户终端130可以是移动设备130-1、平板计算机130-2、膝上型计算机130-3、台式计算机(图未示)……等其他具有输入和/或输出功能的设备中的一种或其任意组合。
图2是根据本说明书一些实施例所示的用于服务集群的负载均衡方法的示例性流程图。在一些实施例中,流程200可以由处理设备,如管理节点110-1(或负载均衡器)执行。例如,流程200可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程200。流程200可以包括以下操作。
步骤202,获取服务集群中工作节点的可信执行环境的内存状态信息。在一些实施例中,步骤202可以由获取模块610执行。
服务集群是指将多个服务器集中起来一起进行一种或多种服务的***。组成服务集群的服务器即可以作为所述工作节点,多个工作节点可以同时运行一种服务,也可以分别运行不同的服务。
可信执行环境的内存是指在可信执行环境中用于运行和存储服务程序的内存空间。可信执行环境(TEE,Trusted Execution Environment)可以提供一种与不可信环境隔离的安全计算环境,在可信执行环境中运行各种服务,例如计算服务,可以有效地保护数据、应用程序等的隐私安全。可信执行环境可以包括Software Guard Extensions、SecureEncrypted Virtualization或TrustZone等。
可信执行环境的内存状态信息可以是指运行在可信执行环境的内存中的应用程序/服务对内存的使用状态。例如,内存的使用率、剩余率、内存页交换数据等。
在一些实施例中,可信执行环境的内存状态信息可以包括可信执行环境的内存与外存储介质进行数据交换的数据量、可信执行环境的内存占用量以及可信执行环境的内存剩余量中的一种,或其任意组合。
可信执行环境的内存与外存储介质进行数据交换的数据量可以是指可信执行环境与外存储介质交换的内存页数量,其中内存页可理解为单位存储量,如一个内存页可以为4kb。例如,运行在可信执行环境中的程序可以被分配一定量的内存,例如,10MB、20MB、50MB、100MB等,其被分配的内存大小超过可信执行环境的内存的上限时,例如,94MB,会触发可信执行环境的内存与外存储介质(例如,位于TEE外部的存储介质DRAM)的数据交换。例如,超过94MB的部分可以被加密后放置在普通内存(如DRAM)上,当程序访问位于DRAM上的数据时,可信执行环境的驱动程序会将外存储介质上的内存页调入到可信执行环境的内存中并在解密后使用。将原来可信执行环境的内存中的一些内存页调出到外存储介质中,其调出的内存页的数量可以作为所述数据交换的数据量。可信执行环境的内存占用量可以是指已经被占用的内存量。可行执行环境的内存剩余量可以是指可信执行环境中未被分配或未被使用的内存量。
由于可信执行环境中的数据在与外存储介质进行交换时,往往需要消耗一定量的设备性能,从而影响在可信执行环境中运行的服务程序的性能,例如,增加服务程序对于服务请求的响应时间。因此可以将可信执行环境的内存与外存储介质进行数据交换的数据量作为内存状态信息,反映工作节点的负载压力,以判断当前工作节点的负载压力是否需要均衡调节。可以理解的是,内存占用量和内存剩余量同样可以一定程度上反映工作节点的负载压力。
在一些实施例中,处理设备(例如,获取模块610)可以通过在每个工作节点处设置的节点状态监控器获取服务集群中各工作节点的所述内存状态信息。
节点状态监控器可以是硬件装置或软件程序。例如,以可信执行环境为intel公司提供的SGX(Software Guard Extensions)为例,可以通过使用驱动程序(比如,开源的SGX驱动程序)或编写代码,以从工作节点中收集所述内存状态信息。具体地,可以通过该驱动程序将可信执行环境的内存状态信息暴露出来形成数据记录,节点状态监控器可以基于所述数据记录中得到所述内存状态信息,并将内存状态信息发送给负载均衡器。负载均衡器可以用于根据所述内存状态信息对服务集群实施负载均衡。
在一些实施例中,节点状态监控器可以定期(例如,每1秒、每100毫秒等)从工作节点中获取所述内存状态信息。
在一些实施例中,还可以在管理节点或负载均衡器以外设置集群状态监控器。集群状态监控器可以用于收集各个工作节点的节点状态监控器获取的内存状态信息,然后再将各工作节点的内存状态信息发送给管理节点。设置集群状态监控器可以进一步将工作节点的内存状态信息收集工作与负载均衡任务分开,提高管理节点110-1的工作效率。
在一些实施例中,可以基于现有的开源监控软件进行功能改进以实现集群状态监控器的设置。例如,以开源监控软件中的Prometheus程序为例,可以在各个工作节点处设置node exporter程序,以监控集群中各工作节点的信息,但是node exporter程序并不具备监控工作节点的可信执行环境的内存状态信息的能力,进一步的,可以通过在nodeexporter中设置一个新的模块,比如,sgxinfo collector模块,通过该模块可以收集SGX驱动程序暴露出来的可信执行环境的内存状态信息,并发送给Prometheus,从而实现监控服务集群的各个工作节点的可信执行环境的内存状态信息的功能。
需要说明的是,以上例子仅仅是出于示例的目的,并不旨在对获取工作节点的内存状态信息的方式进行限定,例如,还可以在相似的开源监控软件(例如,Graphite,InfluxDB,OpenTSDB,Nagios等)的基础上实现所描述的功能。
在一些实施例中,对于任一工作节点,可以获取该工作节点预设历史时期的历史内存状态信息。预设历史时期可以是指预设的历史时刻或历史周期,例如,上一秒、过去每10秒、过去每1分钟等。历史内存状态信息是指工作节点在预设历史时期内的内存状态信息。
在一些实施例中,可以将历史内存状态信息输入预先训练好的内存状态预测模型,得到该工作节点当前的内存状态信息。具体地,将历史内存状态信息输入至内存状态预测模型后,内存状态预测模型输出预测的工作节点当前的内存状态信息。在一些实施例中,还可以将历史内存状态信息输入至内存状态预测模型,内存状态预测模型预测工作节点在下一时刻或下一时间段内的内存状态信息。
在一些实施例中,工作节点可以将内存状态信息进行存储,如可以将sgxinfocollector模块获得的内存状态信息存储。所述历史内存状态信息可以从已存储的历史数据中获取,又例如,所述历史内存状态信息还可以从工作节点的运行日志中读取,或其他方式获取,本实施例对此不作限定。
在一些实施例中,可以基于带有标签的多个训练样本训练初始内存状态预测模型。训练样本可以是历史内存状态信息,标签可以是工作节点当前的内存状态信息。在一些实施例中,可以通过人工标注或其他方式添加训练样本的标签。
具体地,可以将带有标签的训练样本输入至初始内存状态预测模型,通过不断训练更新模型参数直至训练完成。
在一些实施例中,内存状态预测模型可以包括但不限于逻辑回归模型、神经网络模型、支持向量机等。
步骤204,至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。步骤204可以由调整模块620执行。
负载均衡可以是指将一个服务对应的服务请求基于一定的策略分配至多个工作节点处理,以避免某些工作节点的工作压力过大,进而确保服务集群的服务性能。
实施负载均衡可以是指对多个工作节点接收服务请求的数量进行调整。例如,调整各个工作节点接收服务请求的多少、是否可以接收服务请求、以及接收到服务请求的权重(概率)大小等。
在一些实施例中,调整模块620可以根据所述可信执行环境的内存状态信息判断对应的工作节点是否适合继续接收服务请求,进而根据判断结果实施负载均衡。例如,根据所述内存状态信息判断出工作节点的当前负载较高,对于服务请求的响应时间较长,会影响到用户的使用体验,则可以调整该工作节点接收到的服务请求的数量,例如,减少接收到的服务请求的数量或使其不再接收服务请求等。
关于如何基于工作节点的可信执行环境的内存状态信息实施负载均衡的更多细节,可以参见图3、图4及其相关描述,此处不再赘述。
在本实施例中,通过获取工作节点的可信执行环境的内存状态信息,并将可信执行环境的内存状态信息用于判断工作节点的运行负载,相较于仅仅利用工作节点的服务请求的数量,或工作节点与客户端的连接数量的多少进行判断,可以更加准确的判断各工作节点的负载压力,从而通过实施负载均衡确保运行在可信执行环境中的服务程序的服务响应时间能够满足要求,提高用户的使用体验。
应当注意的是,上述有关流程200的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程200进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
图3是根据本说明书一些实施例所示的实施负载均衡的方法的示例性流程图。在一些实施例中,流程300可以由处理设备,如管理节点110-1或负载均衡器,执行。例如,流程300可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程300。在一些实施例中,流程300可以由位于管理节点上的调整模块620执行。如图3所示,流程300可以包括以下操作。
步骤302,确定各工作节点的负载权重。
在一些实施例中,调整模块620可以确定各个工作节点的负载权重,负载权重是指将服务请求分配至对应的工作节点以处理服务请求的权值或概率。所述负载权重与工作节点接收到的服务请求的数量相关。例如,负载权重越大,工作节点在一定时间内接收到服务请求的数量越多;负载权重越小,工作节点在一定时间内接收到服务请求的数量越少。
在一些实施例中,调整模块620可以基于各个工作节点的计算资源配置情况(如CPU处理速度、内存大小等)设置对应的负载权重。例如,计算资源配置越高的工作节点的负载权重也越大。负载均衡算法是指用于调度工作节点接收服务请求的数量的算法。在一些实施例中,调整模块620可以基于负载均衡算法确定各工作节点的负载权重和/或基于负载权重调整各个工作节点接收到的请求数量。在一些实施例中,负载均衡算法可以包括加权轮询算法、加权随机算法或加权最少连接法等。作为示例,以加权轮询算法为例,调整模块620可以根据各工作节点的计算资源配置情况,为各工作节点分配不同的负载权重。例如,现有工作节点a、工作节点b和工作节点c,设置上述三个工作节点的负载权重分别为1、2和4,可以通过加权轮询算法生成上述工作节点的序列。例如,该序列可以是{c, c, b, c, a,b, c},则代表服务集群每接收到7个服务请求时,可以按照该序列将7个服务请求中的4个分配给工作节点c,把其中的2个分配给工作节点b,把其中的1个分配给工作节点a。并且,当接收到第8个服务请求时,可以继续从该序列第一位对应的工作节点c处开始轮询分配服务请求。又例如,以加权随机算法为例,可以为每个工作节点赋予一个初始的负载权重,再按照工作节点的负载权重大小设置工作节点序列,例如,序列中各工作节点的数量与其负载权重成正比或相等,然后从0~各工作节点的初始权重和中随机产生一个整数作为工作节点序列的索引,将该索引对应的工作节点作为接收新服务请求的节点。不难理解,基于以上负载均衡算法,负载权重越大的工作节点,在一定时间(如1小时、5小时等)内接收的服务请求的数量越多。
步骤304,基于内存状态信息,调整对应的工作节点的负载权重,进而调整该工作节点接收到的服务请求的数量。
在一些实施例中,处理设备可以将内存状态信息与预先设置的目标服务对应的临界指标进行对比,判断工作节点的负载权重是否需要调整,若是,则调整负载权重,进一步,调整模块620可以通过前述的负载均衡算法基于调整后的负载权重调整各个工作节点接收到的请求数量。调整该工作节点接收到的服务请求的数量,实现负载均衡。
关于基于内存状态信息,调整对应的工作节点的负载权重的更多细节可以参考图4及其相关描述,此处不再赘述。
应当注意的是,上述有关流程300的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程300进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
图4是根据本说明书一些实施例所示的调整工作节点的负载权重方法的示例性流程图。在一些实施例中,流程400可以由处理设备,如管理节点110-1或负载均衡器执行。例如,流程400可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程400。在一些实施例中,流程400可以由调整模块620执行。如图4所示,流程400可以包括以下操作。
步骤402,获取目标服务对应的临界指标。
目标服务可以是指在服务集群的工作节点的可信执行环境中运行的服务程序。目标服务可以是任意类型的服务程序,例如,基于机器学习模型的智能问答服务、预测推荐服务、计算分析服务等。
临界指标是指使得目标服务的服务质量违反目标服务的服务级别目标(SLO,Service Level Objective)或不能达到目标服务的服务质量下限的内存状态信息的临界值。临界指标可以是使得工作节点对于目标服务的服务请求的响应时间超过或不能达到设定的服务级别目标(例如,给定时长内,99%的服务请求在500毫秒内必须得到响应)时,运行所述目标服务的工作节点的内存状态信息的临界值。服务质量可以是指用于评价服务集群处理服务请求能力优劣的指标。例如,工作节点对于服务请求的响应时间。
在一些实施例中,临界指标可以包括目标服务的服务质量下限对应的可信执行环境的内存与外存储介质进行数据交换的数据量的值、可信执行环境的内存占用量的最大值、可信执行环境的内存剩余量的最小值。例如,以可信执行环境的内存与外存储进行数据交换的数据量为例,临界指标可以是使得工作节点对于目标服务的服务请求的响应时间超过设定的服务级别目标(例如,99%的服务请求在500毫秒内必须得到响应)时,可信执行环境的内存与外存储进行数据交换的数据量的值。
在一些实施例中,对于不同的目标服务,其对应服务级别目标可以相同,也可以不同。处理设备可以根据内存状态信息与服务质量的对应关系获取所述临界指标。例如,每一种目标服务都有对应的服务级别目标(SLO),服务级别目标可以视为服务质量的阈值,可以根据内存状态信息与服务质量的对应关系获取服务级别目标对应的临界指标。例如,目标服务A的服务级别目标为S1,S1对应的临界指标为A1;目标服务B的服务级别目标为S2,S2对应的临界指标为A2,则处理设备可以根据目标服务的类型或版本等,确定服务级别目标为S1,进而根据S1确定对应的临界指标为A1。
关于目标服务对应的临界指标的确定方式,可以参见图5及其相关描述,此处不再赘述。
在一些实施例中,处理设备可以通过从存储设备读取、调用相关接口、从数据库中读取,或其他常见方式获取得到,本实施例对此不作限定。
步骤404,判断该工作节点对应的内存状态信息是否满足预设条件。
预设条件可以是指在预设的多个时间周期内,工作节点对应的内存状态信息连续超过或未达到临界指标的预设百分比。时间周期可以是指每1秒、每10秒、每分钟等,预设的多个时间周期可以是指过去连续的多个时间周期,例如,连续5秒、连续5个10秒等。预设百分比可以是90%、95%、99%等,其可以根据目标服务的服务级别目标进行设定。
在一些实施例中,处理设备可以将内存状态信息与所述临界指标进行对比,以判断该工作节点的内存状态信息是否满足预设条件。例如,临界指标为可信执行环境的内存与外存储进行数据交换的数据量的值,则将内存状态信息与该数据量的值进行比较,若超过该数据量的值,则认为该工作节点对应的内存状态信息满足预设条件。
在一些实施例中,在判断出该工作节点对应的内存状态信息满足预设条件时,则可以执行步骤406;否,则可以不对该工作节点的负载权重进行调整。
步骤406,调整该工作节点的负载权重,以减少该工作节点接收到的服务请求的数量或者使该工作节点不再接收服务请求。
在一些实施例中,调整该工作节点的负载权重可以是指调整该工作节点接收服务请求的数量的权值或概率。例如,将权值从10调整为1,或将概率从0.8调整为0.1,以减少该工作节点接收到的服务请求的数量。又例如,将权值从10调整为0,或将概率从0.8调整为0,以使该工作节点不再接收服务请求。
通过调整工作节点的负载权重,可以减少或使该工作节点接收的服务请求数量,进而降低该工作节点的负载压力,避免或减少该工作节点在较大负载压力下处理服务请求的数量,从而使得服务集群整理上处理服务请求的响应时间能够满足服务级别目标,以提高用户的使用体验。
在一些实施例中,负载均衡器对于工作节点的负载权重的调整是动态的,工作节点的负载压力也并不是一直处于高负载状态,为了减少或避免工作节点资源浪费,以及保证服务集群的服务质量,处理设备可以通过执行以下步骤408和步骤410,以在减少该工作节点接收到的服务请求的数量或者使该工作节点不再接收服务请求之后,使得该工作节点可以增加该工作节点的服务请求的数量或使该工作节点可以重新接收服务请求。
步骤408,判断该工作节点的可信执行环境中,除目标服务以外的程序是否结束运行。
在一些实施例中,处理设备可以通过获取可信执行环境中运行的程序信息来判断除目标服务以外的程序是否结束运行。例如,可信执行环境中运行的程序已经只剩目标服务,则可以确定其他程序已经结束运行。
在一些实施例中,处理设备可以通过获取可信执行环境的内存状态信息来判断除目标服务以外的程序是否结束运行。例如,内存状态信息可以包括内存占用量和内存剩余量,工作节点在运行目标服务时,可以分配给目标服务一定大小的内存,将该内存除以内存总量即可得到只运行目标服务时的内存占用率,通过将该占用率与内存状态信息进行比较,即可确定除目标服务以外的程序是否结束运行。内存剩余量的判断方式与此类似,通过计算只运行目标服务时的内存剩余,与当前工作节点的内存剩余量进行比较,即可确定除目标服务以外的程序是否结束运行。
若除目标服务以外的程序已经结束运行,则可以执行步骤410;否,则可以不做处理,继续等待该工作节点的可信执行环境中除目标服务以外的程序结束运行。
步骤410,调整该工作节点的负载权重,以增加该工作节点接收到的服务请求的数量或者使该工作节点可重新接收服务请求。
调整该工作节点的负载权重的方式与步骤406所描述的相似,不同之处仅在于调整方向不同,此处为增加该工作节点接收服务请求的权值或概率。相同部分的细节可以参见步骤406,此处不再赘述。
通过调整负载权重,可以增加或恢复该工作节点处理服务请求的能力,进而能够保证工作节点不过载的前提下,确保服务集群处理服务请求的服务响应时间可以满足服务级别目标,均衡服务集群的各工作节点的负载。
应当注意的是,上述有关流程400的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程400进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。又例如,图4中虚线框对应的步骤408和步骤410为可选步骤,在一些实施例中可以省略。
图5是根据本说明书一些实施例所示的临界指标的确定方法的示例性流程图。在一些实施例中,流程500可以由处理设备执行。例如,流程500可以以程序或指令的形式存储在存储装置(如处理设备的自带存储单元或外接存储设备)中,所述程序或指令在被执行时,可以实现流程500。如图5所示,流程500可以包括以下操作。
步骤502,在工作节点上运行用于实现所述目标服务的目标服务程序,并向所述工作节点发送服务请求。在一些实施例中,步骤502由第一运行模块630执行。
目标服务程序可以是指与所述目标服务相关联的程序。目标服务程序可以是目标服务本身,也可以是目标服务的副本程序。副本程序与所述目标服务程序本质上相同,并可以同时运行于多个工作节点。
在一些实施例中,处理设备(例如,第一运行模块630)可以将可信执行环境的内存分配至少一部分给所述目标服务程序,以使所述目标服务程序可以在所述工作节点的可信执行环境中运行。
在一些实施例中,可以通过客户端(例如,用户终端130)向运行在工作节点的可信执行环境中的目标服务程序发送服务请求,例如,向所述目标服务程序发送数据获取请求、搜索请求等。通过向目标服务程序发送服务请求,可以使得所述目标服务程序在可信执行环境的内存中处于活跃状态,并且可以通过不断发送服务请求,使得目标服务程序一直处于活跃状态,以模拟目标服务程序在实际运行时,对于工作节点的可信执行环境的内存的真实使用状态。
步骤504,在所述工作节点上运行内存占用程序。在一些实施例中,步骤504由第二运行模块640执行。
内存占用程序可以是指除所述目标服务程序以外的其他程序。对于内存占用程序的类型本实施例不作限定,内存占用程序与目标服务程序的类型可以相同,也可以不同。例如,两者可以均为计算程序。所述内存占用程序可以与所述目标服务的程序共同使用可信执行环境的内存,以致触发可信执行环境的内存与外存储介质进行数据交换。
在一些实施例中,处理设备(例如,第二运行模块640)可以将可信执行环境的内存分配一部分给所述内存占用程序,以使所述内存占用程序与所述目标服务程序共同运行在工作节点的可信执行环境中。
步骤506,基于所述目标服务程序对服务请求的响应确定当前目标服务的服务质量,获取当前可信执行环境的内存与外存储介质进行数据交换的数据量,将当前的可信执行环境的内存与外存储介质进行数据交换的数据量及其对应的目标服务的服务质量进行关联并存储。在一些实施例中,步骤506由第一确定模块650执行。
服务质量是指用于评价服务集群处理服务请求能力优劣的指标。
在一些实施例中,处理设备(例如,第一确定模块650)可以获取所述目标服务程序的日志数据,并从所述日志数据中读取得到所述目标服务程序对服务请求的响应时间。进而根据所述响应时间确定所述当前目标服务的服务质量。具体地,处理设备可以从日志数据中读取目标服务程序对于多个服务请求(如观测时间段内的多个服务请求)的多个响应时间,并将多个响应时间按照时间长短从低到高进行排序,取预设分位数(例如,99%分位、95%分位)的响应时间作为当前目标服务的服务质量。例如,一共有100个响应时间,依次为从80ms到100ms,当取第95%分位的响应时间时,如排序为95的响应时间为99ms,则将排序为95的响应时间99ms作为当前目标服务的服务质量。
在一些实施例中,可以通过节点状态监控器获取工作节点的当前可信执行环境的内存与外存储介质进行数据交换的数据量。具体地,由于工作节点的可信执行环境的内存大小一般是固定的,例如,94MB,在该内存中运行目标服务程序时,对目标服务程序分配有一定量大小的内存,例如,50MB;同样地,在该内存中运行内存占用程序时,其也会被分配一定量大小的内存,例如,10MB、20MB、50MB等(被分配的内存大小可以超过可信执行环境的总内存大小,因为程序在运行时所使用的内存不一定会达到所分配的内存大小);内存占用程序不断地访问分配给内存占用程序的内存页,例如,第一次访问内存占用程序的第一内存页,该内存页大小为4kb,第二次时同时访问该内存占用程序的第二内存页,此时访问的内存页大小为4kb+4kb,以此类推,可以依次访问所有内存页,从而使该内存占用程序一直处于活跃状态,并尽可能占用分配给它的内存大小。当分配给内存占用程序的内存较大时,就会强制触发可信执行环境与外存储介质进行数据交换,记录触发强制交换时的数据交换的数据量(如内存页数量)。
在一些实施例中,可以在所述观测时间段内多次获取可信执行环境的内存与外存储介质进行数据交换的数据量,并将其均值或和值作为所述当前可信执行环境的内存与外存储介质进行数据交换的数据量。例如,在10秒时间内,该工作节点一共处理了10个服务请求,则可以将该时间段内可信执行环境的内存与外存储介质进行数据交换的数据量的总和除以10,得到该时间段内数据交换的数据量的平均值,并作为该服务质量对应的当前可信执行环境的内存与外存储介质进行数据交换的数据量。
将所述当前目标服务的服务质量与所述数据量进行关联,可以是指确定所述数据交换的数据量与服务质量的对应关系。该对应关系可以用于相互查找,例如,A与B关联,则可以根据其对应关系通过A查找到B,或通过B查找到A。
在一些实施例中,处理设备可以将关联的所述数据交换的数据量和目标服务的服务质量存储至存储设备中,也可以存储至数据库,或其他存储设备中,本实施例对此不作限定。
在一些实施例中,处理设备(例如,循环模块660)可以通过改变内存占用程序使用的可信执行环境的内存大小,或改变内存占用程序的类型,如步骤508,并循环上述步骤506以获得多组可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量。每一组的可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量相关联。当获得足够数量的数据量及其对应的服务质量后,可终止循环。
步骤510,将目标服务的服务质量下限对应的可信执行环境的内存与外存储介质进行数据交换的数据量确定为所述临界指标。在一些实施例中,步骤510可以由第二确定模块670执行。
服务质量下限是指满足服务级别目标的最低服务质量。关于临界指标获取的其他内容可以参见本说明书步骤402的相关描述。
可以理解,由于目标服务的服务质量与可信执行环境的内存与外存储介质进行数据交换的数据量存在关联,在确定目标服务的服务质量下限后,即可根据可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量的对应关系,将目标服务的服务质量下限对应的可信执行环境的内存与外存储介质进行数据交换的数据量确定为所述临界指标。以此,在实施负载均衡时,即可以通过该临界指标准确的判断当前工作节点的服务质量是否能够满足服务级别目标,进而确定是否对其实施负载均衡,以确保各工作节点的在响应服务请求时的响应时间能够满足要求,从而提升用户使用体验。
应当注意的是,上述有关流程500的描述仅仅是为了示例和说明,而不限定本说明书的适用范围。对于本领域技术人员来说,在本说明书的指导下可以对流程500进行各种修正和改变。然而,这些修正和改变仍在本说明书的范围之内。例如,对本说明书有关流程步骤的改变,如添加预处理步骤和存储步骤等。
图6是根据本说明书的一些实施例所示的用于服务集群的负载均衡***的模块图。在一些实施例中,所述用于服务集群的负载均衡***600可以包括获取模块610、调整模块620、第一运行模块630、第二运行模块640、第一确定模块650、循环模块660和第二确定模块670。
获取模块610可以用于获取服务集群中工作节点的可信执行环境的内存状态信息。在一些实施例中,获取模块610可以通过在每个所述工作节点处设置的节点状态监控器获取服务集群中各工作节点的所述内存状态信息。在一些实施例中,获取模块610可以通过集群状态监控器收集各个工作节点的节点状态监控器获取的内存状态信息。在一些实施例中,获取模块610可以获取该工作节点预设历史时期的历史内存状态信息;将所述历史内存状态信息输入预先训练好的内存状态预测模型,得到该工作节点当前的内存状态信息。在一些实施例中,获取模块610可以用于获取该工作节点预设历史时期的历史内存状态信息。获取模块610还可以用于将所述历史内存状态信息输入预先训练好的内存状态预测模型,得到该工作节点当前的内存状态信息。在一些实施例中,可以将历史内存状态信息输入至内存状态预测模型后,内存状态预测模型输出预测的工作节点当前的内存状态信息。
调整模块620可以用于至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。在一些实施例中,调整模块620可以根据所述可信执行环境的内存状态信息判断对应的工作节点是否适合继续接收服务请求,进而根据判断结果实施负载均衡。
第一运行模块630可以用于在工作节点上运行目标服务程序,并向所述工作节点发送服务请求。在一些实施例中,第一运行模块630可以将可信执行环境的内存分配至少一部分给所述目标服务程序,以使所述目标服务程序可以在所述工作节点的可信执行环境中运行。
第二运行模块640可以用于在所述工作节点上运行内存占用程序,所述内存占用程序与用于实现所述目标服务的程序共同使用可信执行环境的内存,以致触发可信执行环境的内存与外存储介质进行数据交换。在一些实施例中,第二运行模块640可以将可信执行环境的内存分配一部分给所述内存占用程序,以使所述内存占用程序与所述目标服务程序共同运行在工作节点的可信执行环境中。
第一确定模块650可以用于基于所述目标服务程序对服务请求的响应确定当前目标服务的服务质量,获取当前可信执行环境的内存与外存储介质进行数据交换的数据量,将当前的可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量进行关联并存储。在一些实施例中,将所述当前目标服务的服务质量与所述数据量进行关联,可以是指确定所述数据交换的数据量与服务质量的对应关系。该对应关系可以用于相互查找。在一些实施例中,处理设备可以将关联的所述数据交换的数据量和目标服务的服务质量存储至存储设备中,也可以存储至数据库,或其他存储设备中,本实施例对此不作限定。
循环模块660可以用于改变所述内存占用程序使用可信执行环境的内存大小并循环本步骤,获得多组可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量。在一些实施例中,各组中的数据交换的数据量以及目标服务的服务质量可以相同,也可以不同。
第二确定模块670可以用于将目标服务的服务质量下限对应的可信执行环境的内存与外存储介质进行数据交换的数据量确定为所述临界指标。
关于用于服务集群的负载均衡***的各模块的更多细节可以参见图2至图5及其描述,此处不再赘述。
应当理解,图6所示的***及其模块可以利用各种方式来实现。例如,在一些实施例中,***及其模块可以通过硬件、软件或者软件和硬件的结合来实现。其中,硬件部分可以利用专用逻辑来实现;软件部分则可以存储在存储器中,由适当的指令执行***,例如微处理器或者专用设计硬件来执行。本领域技术人员可以理解上述的方法和***可以使用计算机可执行指令和/或包含在处理器控制代码中来实现,例如在诸如磁盘、CD或DVD-ROM的载体介质、诸如只读存储器(固件)的可编程的存储器或者诸如光学或电子信号载体的数据载体上提供了这样的代码。本说明书的***及其模块不仅可以有诸如超大规模集成电路或门阵列、诸如逻辑芯片、晶体管等的半导体、或者诸如现场可编程门阵列、可编程逻辑设备等的可编程硬件设备的硬件电路实现,也可以用例如由各种类型的处理器所执行的软件实现,还可以由上述硬件电路和软件的结合(例如,固件)来实现。
需要注意的是,以上对于用于服务集群的负载均衡***100及其模块的描述,仅为描述方便,并不能把本说明书限制在所举实施例范围之内。可以理解,对于本领域的技术人员来说,在了解该***的原理后,可能在不背离这一原理的情况下,对各个模块进行任意组合,或者构成子***与其他模块连接。例如,在一些实施例中,图6中披露的获取模块610、调整模块620、第一运行模块630、第二运行模块640、第一确定模块650、循环模块660和第二确定模块670可以是一个***中的不同模块,也可以是一个模块实现上述的两个或两个以上模块的功能。例如,获取模块610和调整模块620可以是两个模块,也可以是一个模块同时具有获取和调整功能。用于服务集群的负载均衡***100中各个模块可以共用一个存储模块,各个模块也可以分别具有各自的存储模块。诸如此类的变形,均在本说明书的保护范围之内。
本说明书实施例可能带来的有益效果包括但不限于:(1)通过获取工作节点的可信执行环境的内存状态信息,并将可信执行环境的内存状态信息用于判断工作节点的运行负载,相较于仅仅利用工作节点的服务请求的数量,或工作节点与客户端的连接数量的多少进行判断,可以更加准确的判断各工作节点的负载压力,从而通过实施负载均衡确保运行在可信执行环境中的服务程序的服务响应时间能够满足要求,提高用户的使用体验。(2)通过调整工作节点的负载权重,可以增加或减少、停止或恢复工作节点处理服务请求的能力,既可以保证服务集群处理服务请求的服务响应时间可以满足服务级别目标,又可以避免服务器资源的浪费。需要说明的是,不同实施例可能产生的有益效果不同,在不同的实施例里,可能产生的有益效果可以是以上任意一种或几种的组合,也可以是其他任何可能获得的有益效果。
上文已对基本概念做了描述,显然,对于本领域技术人员来说,上述详细披露仅仅作为示例,而并不构成对本说明书的限定。虽然此处并没有明确说明,本领域技术人员可能会对本说明书进行各种修改、改进和修正。该类修改、改进和修正在本说明书中被建议,所以该类修改、改进、修正仍属于本说明书示范实施例的精神和范围。
同时,本说明书使用了特定词语来描述本说明书的实施例。如“一个实施例”、“一实施例”、和/或“一些实施例”意指与本说明书至少一个实施例相关的某一特征、结构或特点。因此,应强调并注意的是,本说明书中在不同位置两次或多次提及的“一实施例”或“一个实施例”或“一个替代性实施例”并不一定是指同一实施例。此外,本说明书的一个或多个实施例中的某些特征、结构或特点可以进行适当的组合。
此外,本领域技术人员可以理解,本说明书的各方面可以通过若干具有可专利性的种类或情况进行说明和描述,包括任何新的和有用的工序、机器、产品或物质的组合,或对他们的任何新的和有用的改进。相应地,本说明书的各个方面可以完全由硬件执行、可以完全由软件(包括固件、常驻软件、微码等)执行、也可以由硬件和软件组合执行。以上硬件或软件均可被称为“数据块”、“模块”、“引擎”、“单元”、“组件”或“***”。此外,本说明书的各方面可能表现为位于一个或多个计算机可读介质中的计算机产品,该产品包括计算机可读程序编码。
计算机存储介质可能包含一个内含有计算机程序编码的传播数据信号,例如在基带上或作为载波的一部分。该传播信号可能有多种表现形式,包括电磁形式、光形式等,或合适的组合形式。计算机存储介质可以是除计算机可读存储介质之外的任何计算机可读介质,该介质可以通过连接至一个指令执行***、装置或设备以实现通讯、传播或传输供使用的程序。位于计算机存储介质上的程序编码可以通过任何合适的介质进行传播,包括无线电、电缆、光纤电缆、RF、或类似介质,或任何上述介质的组合。
本说明书各部分操作所需的计算机程序编码可以用任意一种或多种程序语言编写,包括面向对象编程语言如Java、Scala、Smalltalk、Eiffel、JADE、Emerald、C++、C#、VB.NET、Python等,常规程序化编程语言如C语言、VisualBasic、Fortran2003、Perl、COBOL2002、PHP、ABAP,动态编程语言如Python、Ruby和Groovy,或其他编程语言等。该程序编码可以完全在用户计算机上运行、或作为独立的软件包在用户计算机上运行、或部分在用户计算机上运行部分在远程计算机运行、或完全在远程计算机或处理设备上运行。在后种情况下,远程计算机可以通过任何网络形式与用户计算机连接,比如局域网(LAN)或广域网(WAN),或连接至外部计算机(例如通过因特网),或在云计算环境中,或作为服务使用如软件即服务(SaaS)。
此外,除非权利要求中明确说明,本说明书所述处理元素和序列的顺序、数字字母的使用、或其他名称的使用,并非用于限定本说明书流程和方法的顺序。尽管上述披露中通过各种示例讨论了一些目前认为有用的发明实施例,但应当理解的是,该类细节仅起到说明的目的,附加的权利要求并不仅限于披露的实施例,相反,权利要求旨在覆盖所有符合本说明书实施例实质和范围的修正和等价组合。例如,虽然以上所描述的***组件可以通过硬件设备实现,但是也可以只通过软件的解决方案得以实现,如在现有的处理设备或移动设备上安装所描述的***。
同理,应当注意的是,为了简化本说明书披露的表述,从而帮助对一个或多个发明实施例的理解,前文对本说明书实施例的描述中,有时会将多种特征归并至一个实施例、附图或对其的描述中。但是,这种披露方法并不意味着本说明书对象所需要的特征比权利要求中提及的特征多。实际上,实施例的特征要少于上述披露的单个实施例的全部特征。
一些实施例中使用了描述成分、属性数量的数字,应当理解的是,此类用于实施例描述的数字,在一些示例中使用了修饰词“大约”、“近似”或“大体上”来修饰。除非另外说明,“大约”、“近似”或“大体上”表明所述数字允许有±20%的变化。相应地,在一些实施例中,说明书和权利要求中使用的数值参数均为近似值,该近似值根据个别实施例所需特点可以发生改变。在一些实施例中,数值参数应考虑规定的有效数位并采用一般位数保留的方法。尽管本说明书一些实施例中用于确认其范围广度的数值域和参数为近似值,在具体实施例中,此类数值的设定在可行范围内尽可能精确。
针对本说明书引用的每个专利、专利申请、专利申请公开物和其他材料,如文章、书籍、说明书、出版物、文档等,特此将其全部内容并入本说明书作为参考。与本说明书内容不一致或产生冲突的申请历史文件除外,对本说明书权利要求最广范围有限制的文件(当前或之后附加于本说明书中的)也除外。需要说明的是,如果本说明书附属材料中的描述、定义、和/或术语的使用与本说明书所述内容有不一致或冲突的地方,以本说明书的描述、定义和/或术语的使用为准。
最后,应当理解的是,本说明书中所述实施例仅用以说明本说明书实施例的原则。其他的变形也可能属于本说明书的范围。因此,作为示例而非限制,本说明书实施例的替代配置可视为与本说明书的教导一致。相应地,本说明书的实施例不仅限于本说明书明确介绍和描述的实施例。
Claims (16)
1.一种用于服务集群的负载均衡方法,所述服务集群包括多个具有可信执行环境的工作节点,所述方法包括:
获取服务集群中工作节点的可信执行环境的内存状态信息;其中,所述可信执行环境的内存状态信息包括可信执行环境的内存与外存储介质进行数据交换的数据量、可信执行环境的内存占用量以及可信执行环境的内存剩余量中的一种或多种组合;
至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。
2.根据权利要求1所述的方法,所述至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量,包括:
确定各工作节点的负载权重,所述负载权重与工作节点接收到的服务请求的数量相关;
基于内存状态信息,调整对应的工作节点的负载权重,进而调整该工作节点接收到的服务请求的数量。
3.根据权利要求2所述的方法,所述基于内存状态信息,调整对应的工作节点的负载权重,进而调整该工作节点接收到的服务请求的数量,包括:
获取目标服务对应的临界指标;
基于所述临界指标,判断该工作节点对应的内存状态信息是否满足预设条件;
若是,则调整该工作节点的负载权重,以减少该工作节点接收到的服务请求的数量或者使该工作节点不再接收服务请求。
4.根据权利要求3所述的方法,所述基于内存状态信息,调整对应的工作节点的负载权重,进而调整该工作节点接收到的服务请求的数量,还包括,在减少该工作节点接收到的服务请求的数量或者使该工作节点不再接收服务请求之后:
判断该工作节点的可信执行环境中,除目标服务以外的程序是否结束运行;
若是,则调整该工作节点的负载权重,以增加该工作节点接收到的服务请求的数量或者使该工作节点可重新接收服务请求。
5.根据权利要求3所述的方法,所述临界指标通过以下方式确定:
在工作节点上运行用于实现所述目标服务的目标服务程序,并向所述工作节点发送服务请求;
在所述工作节点上运行内存占用程序,所述内存占用程序与所述目标服务程序共同使用可信执行环境的内存,以致触发可信执行环境的内存与外存储介质进行数据交换;
基于所述目标服务程序对服务请求的响应确定当前目标服务的服务质量,获取当前可信执行环境的内存与外存储介质进行数据交换的数据量,将当前的可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量进行关联并存储;改变所述内存占用程序使用可信执行环境的内存大小并循环本步骤,获得多组可信执行环境的内存与外存储介质进行数据交换的数据量及其对应的目标服务的服务质量;
将目标服务的服务质量下限对应的可信执行环境的内存与外存储介质进行数据交换的数据量确定为所述临界指标。
6.根据权利要求1所述的方法,所述获取服务集群中工作节点的可信执行环境的内存状态信息,包括:
通过在每个所述工作节点处设置的节点状态监控器获取服务集群中各工作节点的所述内存状态信息。
7.根据权利要求1所述的方法,所述获取服务集群中工作节点的可信执行环境的内存状态信息,包括对于任一工作节点:
获取该工作节点预设历史时期的历史内存状态信息;
将所述历史内存状态信息输入预先训练好的内存状态预测模型,得到该工作节点当前的内存状态信息。
8.一种用于服务集群的负载均衡***,所述***包括:
获取模块,用于获取服务集群中工作节点的可信执行环境的内存状态信息;其中,所述可信执行环境的内存状态信息包括可信执行环境的内存与外存储介质进行数据交换的数据量、可信执行环境的内存占用量以及可信执行环境的内存剩余量中的一种或多种组合;
调整模块,用于至少基于工作节点的可信执行环境的内存状态信息实施负载均衡,以调整工作节点接收到的服务请求的数量。
9.根据权利要求8所述的***,所述调整模块还用于:
确定各工作节点的负载权重,所述负载权重与工作节点接收到的服务请求的数量相关;
基于内存状态信息,调整对应的工作节点的负载权重,进而调整该工作节点接收到的服务请求的数量。
10.根据权利要求9所述的***,所述调整模块还用于:
获取目标服务对应的临界指标;
基于所述临界指标,判断该工作节点对应的内存状态信息是否满足预设条件;
若是,则调整该工作节点的负载权重,以减少该工作节点接收到的服务请求的数量或者使该工作节点不再接收服务请求。
11.根据权利要求10所述的***,在减少该工作节点接收到的服务请求的数量或者使该工作节点不再接收服务请求之后,所述调整模块还用于:
判断该工作节点的可信执行环境中,除目标服务以外的程序是否结束运行;
若是,则调整该工作节点的负载权重,以增加该工作节点接收到的服务请求的数量或者使该工作节点可重新接收服务请求。
12.根据权利要求10所述的***,所述***还包括:
第一运行模块,用于在工作节点上运行目标服务程序,并向所述工作节点发送服务请求;
第二运行模块,用于在所述工作节点上运行内存占用程序,所述内存占用程序与用于实现所述目标服务的程序共同使用可信执行环境的内存,以致触发可信执行环境的内存与外存储介质进行数据交换;
第一确定模块,用于基于所述目标服务程序对服务请求的响应确定当前目标服务的服务质量,获取当前可信执行环境的内存与外存储介质进行数据交换的数据量,将当前的可信执行环境的内存与外存储介质进行数据交换的数据量与目标服务的服务质量进行关联并存储;
循环模块,用于改变所述内存占用程序使用可信执行环境的内存大小并重复调用所述第一确定模块,获得多组可信执行环境的内存与外存储介质进行数据交换的数据量及其对应的目标服务的服务质量;
第二确定模块,用于将目标服务的服务质量下限对应的可信执行环境的内存与外存储介质进行数据交换的数据量确定为所述临界指标。
13.根据权利要求8所述的***,所述获取模块还用于:
通过在每个所述工作节点处设置的节点状态监控器获取服务集群中各工作节点的所述内存状态信息。
14.根据权利要求8所述的***,所述获取模块还用于:
获取该工作节点预设历史时期的历史内存状态信息;
将所述历史内存状态信息输入预先训练好的内存状态预测模型,得到该工作节点当前的内存状态信息。
15.一种用于服务集群的负载均衡装置,包括处理器,所述处理器用于执行如权利要求1~7中任一项所述的方法。
16.一种计算机可读存储介质,所述存储介质存储计算机指令,当计算机读取存储介质中的计算机指令后,计算机执行如权利要求1~7中任一项所述的方法。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011042169.5A CN111930523A (zh) | 2020-09-28 | 2020-09-28 | 一种用于服务集群的负载均衡方法和*** |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202011042169.5A CN111930523A (zh) | 2020-09-28 | 2020-09-28 | 一种用于服务集群的负载均衡方法和*** |
Publications (1)
Publication Number | Publication Date |
---|---|
CN111930523A true CN111930523A (zh) | 2020-11-13 |
Family
ID=73334264
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202011042169.5A Pending CN111930523A (zh) | 2020-09-28 | 2020-09-28 | 一种用于服务集群的负载均衡方法和*** |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN111930523A (zh) |
Cited By (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485811A (zh) * | 2021-07-23 | 2021-10-08 | 平安科技(深圳)有限公司 | 计算任务管理方法、装置、计算机设备及存储介质 |
CN115150399A (zh) * | 2022-07-25 | 2022-10-04 | 深圳爱换电科技有限公司 | 负载均衡方法、负载均衡装置、处理***及存储介质 |
CN115543924A (zh) * | 2022-11-29 | 2022-12-30 | 粤港澳大湾区数字经济研究院(福田) | 一种基于可信管理平台的任务处理方法及相关装置 |
CN115981877A (zh) * | 2023-03-21 | 2023-04-18 | 航天万源云数据河北有限公司 | 数据中心的数据安全运行方法、装置、服务器和介质 |
CN116126521A (zh) * | 2022-12-20 | 2023-05-16 | 北京海致星图科技有限公司 | 服务内存信息的负载均衡方法、装置、存储介质和设备 |
CN116225723A (zh) * | 2023-05-09 | 2023-06-06 | 粤港澳大湾区数字经济研究院(福田) | 数据处理方法、装置及计算机可读存储介质 |
WO2024088079A1 (zh) * | 2022-10-24 | 2024-05-02 | 杭州阿里云飞天信息技术有限公司 | 请求处理方法以及*** |
Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753461A (zh) * | 2010-01-14 | 2010-06-23 | 中国建设银行股份有限公司 | 实现负载均衡的方法、负载均衡服务器以及集群*** |
WO2019184739A1 (zh) * | 2018-03-29 | 2019-10-03 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN111047450A (zh) * | 2020-03-18 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 链上数据的链下隐私计算方法及装置 |
CN111090874A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 调用合约的方法及装置 |
CN111092914A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 访问外部数据的方法及装置 |
CN111259428A (zh) * | 2020-01-22 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、节点设备及存储介质 |
-
2020
- 2020-09-28 CN CN202011042169.5A patent/CN111930523A/zh active Pending
Patent Citations (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN101753461A (zh) * | 2010-01-14 | 2010-06-23 | 中国建设银行股份有限公司 | 实现负载均衡的方法、负载均衡服务器以及集群*** |
WO2019184739A1 (zh) * | 2018-03-29 | 2019-10-03 | 阿里巴巴集团控股有限公司 | 一种数据查询方法、装置及设备 |
CN111259428A (zh) * | 2020-01-22 | 2020-06-09 | 腾讯科技(深圳)有限公司 | 基于区块链的数据处理方法、装置、节点设备及存储介质 |
CN111047450A (zh) * | 2020-03-18 | 2020-04-21 | 支付宝(杭州)信息技术有限公司 | 链上数据的链下隐私计算方法及装置 |
CN111090874A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 调用合约的方法及装置 |
CN111092914A (zh) * | 2020-03-18 | 2020-05-01 | 支付宝(杭州)信息技术有限公司 | 访问外部数据的方法及装置 |
Cited By (10)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN113485811A (zh) * | 2021-07-23 | 2021-10-08 | 平安科技(深圳)有限公司 | 计算任务管理方法、装置、计算机设备及存储介质 |
CN115150399A (zh) * | 2022-07-25 | 2022-10-04 | 深圳爱换电科技有限公司 | 负载均衡方法、负载均衡装置、处理***及存储介质 |
WO2024088079A1 (zh) * | 2022-10-24 | 2024-05-02 | 杭州阿里云飞天信息技术有限公司 | 请求处理方法以及*** |
CN115543924A (zh) * | 2022-11-29 | 2022-12-30 | 粤港澳大湾区数字经济研究院(福田) | 一种基于可信管理平台的任务处理方法及相关装置 |
CN115543924B (zh) * | 2022-11-29 | 2023-08-15 | 粤港澳大湾区数字经济研究院(福田) | 一种基于可信管理平台的任务处理方法及相关装置 |
CN116126521A (zh) * | 2022-12-20 | 2023-05-16 | 北京海致星图科技有限公司 | 服务内存信息的负载均衡方法、装置、存储介质和设备 |
CN116126521B (zh) * | 2022-12-20 | 2023-10-31 | 北京海致星图科技有限公司 | 服务内存信息的负载均衡方法、装置、存储介质和设备 |
CN115981877A (zh) * | 2023-03-21 | 2023-04-18 | 航天万源云数据河北有限公司 | 数据中心的数据安全运行方法、装置、服务器和介质 |
CN116225723A (zh) * | 2023-05-09 | 2023-06-06 | 粤港澳大湾区数字经济研究院(福田) | 数据处理方法、装置及计算机可读存储介质 |
CN116225723B (zh) * | 2023-05-09 | 2023-11-21 | 粤港澳大湾区数字经济研究院(福田) | 数据处理方法、装置及计算机可读存储介质 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN111930523A (zh) | 一种用于服务集群的负载均衡方法和*** | |
EP3400535B1 (en) | System and method for distributed resource management | |
US10659371B1 (en) | Managing throttling limits in a distributed system | |
CN107124472A (zh) | 负载均衡方法及装置、计算机可读存储介质 | |
US11496413B2 (en) | Allocating cloud computing resources in a cloud computing environment based on user predictability | |
Song et al. | A two-stage approach for task and resource management in multimedia cloud environment | |
Taft et al. | P-store: An elastic database system with predictive provisioning | |
CN112685170A (zh) | 备份策略的动态优化 | |
CN115543577B (zh) | 基于协变量的Kubernetes资源调度优化方法、存储介质及设备 | |
Adhikary et al. | Quality of service aware cloud resource provisioning for social multimedia services and applications | |
Ralha et al. | Multiagent system for dynamic resource provisioning in cloud computing platforms | |
US11847503B2 (en) | Execution of functions by clusters of computing nodes | |
Siddesha et al. | A novel deep reinforcement learning scheme for task scheduling in cloud computing | |
Liu et al. | K‐PSO: An improved PSO‐based container scheduling algorithm for big data applications | |
Rahmani et al. | Burst‐aware virtual machine migration for improving performance in the cloud | |
CN111885184A (zh) | 高并发场景下热点访问关键字处理方法和装置 | |
CN114610475A (zh) | 一种智能资源编排模型的训练方法 | |
Mollamotalebi et al. | Multi-objective dynamic management of virtual machines in cloud environments | |
Al-Masri et al. | Energy-efficient cooperative resource allocation and task scheduling for Internet of Things environments | |
Yakubu et al. | Service level agreement violation preventive task scheduling for quality of service delivery in cloud computing environment | |
Qin et al. | Optimal workload allocation for edge computing network using application prediction | |
Lee et al. | A greedy load balancing algorithm for faas platforms | |
Naik et al. | EVMAS: an energy-aware virtual machine allocation scheme in fog centers | |
Mokhtari et al. | Multi-objective task scheduling using smart MPI-based cloud resources | |
CN106027685A (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 |