CN116069470A - 日志分配调度方法、装置、设备和存储介质 - Google Patents

日志分配调度方法、装置、设备和存储介质 Download PDF

Info

Publication number
CN116069470A
CN116069470A CN202310041914.1A CN202310041914A CN116069470A CN 116069470 A CN116069470 A CN 116069470A CN 202310041914 A CN202310041914 A CN 202310041914A CN 116069470 A CN116069470 A CN 116069470A
Authority
CN
China
Prior art keywords
log
server
log storage
servers
storage units
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
Application number
CN202310041914.1A
Other languages
English (en)
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.)
Alibaba Cloud Computing Ltd
Original Assignee
Alibaba Cloud Computing 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 Alibaba Cloud Computing Ltd filed Critical Alibaba Cloud Computing Ltd
Priority to CN202310041914.1A priority Critical patent/CN116069470A/zh
Publication of CN116069470A publication Critical patent/CN116069470A/zh
Pending legal-status Critical Current

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
    • G06F11/00Error detection; Error correction; Monitoring
    • G06F11/30Monitoring
    • G06F11/34Recording or statistical evaluation of computer activity, e.g. of down time, of input/output operation ; Recording or statistical evaluation of user activity, e.g. usability assessment
    • G06F11/3466Performance evaluation by tracing or monitoring
    • G06F11/3476Data logging
    • 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/5005Allocation of resources, e.g. of the central processing unit [CPU] to service a request
    • G06F9/5027Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
    • G06F9/505Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the load
    • 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/5083Techniques for rebalancing the load in a distributed system
    • YGENERAL TAGGING OF NEW TECHNOLOGICAL DEVELOPMENTS; GENERAL TAGGING OF CROSS-SECTIONAL TECHNOLOGIES SPANNING OVER SEVERAL SECTIONS OF THE IPC; TECHNICAL SUBJECTS COVERED BY FORMER USPC CROSS-REFERENCE ART COLLECTIONS [XRACs] AND DIGESTS
    • Y02TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
    • Y02DCLIMATE CHANGE MITIGATION TECHNOLOGIES IN INFORMATION AND COMMUNICATION TECHNOLOGIES [ICT], I.E. INFORMATION AND COMMUNICATION TECHNOLOGIES AIMING AT THE REDUCTION OF THEIR OWN ENERGY USE
    • Y02D10/00Energy efficient computing, e.g. low power processors, power management or thermal management

Landscapes

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

Abstract

本申请提供一种日志分配调度方法、装置、设备和存储介质,该方法包括:获取多个服务器的负载压力和已分配的日志存储单元,若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,设定更新事件包括服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件。若发生设定更新事件,则确定设定更新事件对应的分配决策因素,根据分配决策因素确定与设定更新事件对应的日志存储单元分配结果。分配决策因素包括如下至少一种:服务器的负载压力、服务器已分配的日志存储单元数量、同一日志库中的日志存储单元分配到不同服务器。通过本方可以实现服务器的负载均衡,还可以实现同一日志库中的日志存储单元的均衡分配。

Description

日志分配调度方法、装置、设备和存储介质
技术领域
本发明涉及云计算技术领域,尤其涉及一种日志分配调度方法、装置、设备和存储介质。
背景技术
在云计算的场景下,有大量用户的海量日志需要进行安全检测等处理,比如检测日志中是否包含某些特定字段,若包含则进行告警。
每个用户的海量日志存储在各自对应的日志库(比如logstore)中,具体地,在日志库中以日志存储单元(比如shard)对日志进行存储,即一条日志会存入某一个日志存储单元中。日志存储单元可以配置有设定的容量大小。
为了对大量用户的海量日志进行安全检测等消费处理,会搭建有相应的服务器集群,由服务器集群中的服务器从日志库中获取日志存储单元,以对日志存储单元中存储的日志进行安全检测等消费处理。其中,每个日志存储单元只能被一个服务器来进行消费处理。
目前一种常用的日志分配调度方案是:服务器集群中的服务器按照设定的顺序被定期依次启动,当某服务器被启动时,从每个日志库中获取一个日志存储单元中存储的日志进行安全检测等处理。由此可见,在大量日志库中存在的日志存储单元数量较少,但是服务器集群中服务器数量较多的时候,会存在部分服务器繁忙但是部分服务器较为空闲的负载不均衡现象,此时,即使通过提升单个服务器的规格来满足海量日志的处理需求,也会出现性能瓶颈,因为实际上服务器规格无法无限提升,而且,获取了更多的日志存储单元的服务器对日志的处理实时性会比较差,不能满足大量用户的海量日志的实时处理。
发明内容
本发明实施例提供一种日志分配调度方法、装置、设备和存储介质,用以通过动态调整分配的日志存储单元实现服务器集群中服务器的负载均衡,提高日志分配调度的实时性。
第一方面,本发明实施例提供一种日志分配调度方法,所述方法包括:
获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元;
若所述多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,其中,所述设定更新事件包括所述服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件;
若发生所述设定更新事件,则确定所述设定更新事件对应的分配决策因素,所述分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器;
根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果。
第二方面,本发明实施例提供一种日志分配调度装置,所述装置包括:
获取模块,用于获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元;
确定模块,用于若所述多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,其中,所述设定更新事件包括所述服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件;
分配模块,用于若发生所述设定更新事件,则确定所述设定更新事件对应的分配决策因素,根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,所述分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器。
第三方面,本发明实施例提供一种电子设备,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如第一方面所述的日志分配调度方法。
第四方面,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如第一方面所述的日志分配调度方法。
在本发明实施例提供的日志分配调度方案中,定期对用于进行日志分配调度的服务器集群中各服务器负责处理的日志存储单元进行分配更新调度。在当前调度时间,获取服务器集群中当前存在的多个服务器的负载压力以及这些服务器各自已分配的日志存储单元,若发现不存在负载压力大于设定阈值的服务器,并且确定当前发生了某种设定更新事件(比如服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件、日志库新增事件),则确定当前发生的更新事件所对应的分配决策因素,以根据该分配决策因素对当前存在的各日志库中的日志存储单元进行分配调度,确定各日志存储单元对应的服务器。其中,分配决策因素包括服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器中的至少一种。
在上述方案中,由于针对不同更新事件,结合了上述分配决策因素进行日志存储单元的分配调度,不仅可以实现服务器的负载均衡,还可以实现同一日志库中的日志存储单元在多个服务器中的均衡,有利于提高同一日志库中日志存储单元的处理及时性。
附图说明
为了更清楚地说明本发明实施例中的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为本发明实施例提供的一种日志分配调度系统的示意图;
图2为本发明实施例提供的一种日志分配调度方法的流程图;
图3为本发明实施例提供的一种日志分配调度方法的流程图;
图4为本发明实施例提供的一种日志分配调度方法的应用示意图;
图5为本发明实施例提供的一种日志分配调度方法的流程图;
图6为本发明实施例提供的一种日志分配调度方法的应用示意图;
图7为本发明实施例提供的一种日志分配调度方法的流程图;
图8为本发明实施例提供的一种日志分配调度方法的应用示意图;
图9为本发明实施例提供的一种日志分配调度方法的流程图;
图10为本发明实施例提供的一种日志分配调度方法的应用示意图;
图11为本发明实施例提供的一种日志分配调度方法的流程图;
图12为本发明实施例提供的一种日志分配调度方法的应用示意图;
图13为本发明实施例提供的一种日志分配调度方法的流程图;
图14为本发明实施例提供的一种日志分配调度方法的应用示意图;
图15为本发明实施例提供的一种日志分配调度装置的结构示意图;
图16为本实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
另外,下述各方法实施例中的步骤时序仅为一种举例,而非严格限定。
图1为本发明实施例提供的一种日志分配调度系统的示意图,如图1所示,该系统中包括:服务器集群以及多个日志库,比如图1中示意的包括服务器1、服务器2、服务器3以及服务器4的服务器集群,以及对应于用户1的日志库A,对应于用户2的日志库B,对应于用户3的日志库C,等等。
其中,每个日志库中包括至少一个日志存储单元。比如日志库A中目前包括日志存储单元A1和日志存储单元A2,日志库B中目前包括日志存储单元B1和日志存储单元B2,日志库C中目前包括日志存储单元C1、日志存储单元C2和日志存储单元C3。
基于上述示意可知,实际上,上述服务器集群是用于对众多用户所产生的日志进行诸如安全检测等消费处理的。而实际上,每个用户产生的日志可以是用户的某一个或多个应用程序运行过程中所产生的,一个用户可以具有一个或多个日志库用于存储日志。一个用户对应的日志库可以部署在云端的不同服务器中,需要注意的是:存储日志库的服务器与上述用于对日志进行处理的服务器集群中服务器是独立的。
在日志库中,可以设置日志存储单元,以用于存储日志。做一种形象化的比喻:日志存储单元类比于水池,用户的应用程序所产生的日志类比于水流,不断向水池中注入水流,而服务器集群中的服务器类比于抽水管,定期从水池中抽水。因此,日志存储单元是用于存储日志的容器。
另外,可选地,在上述服务器集群中,如图1中所示,还可以包括供服务器集群中各服务器访问的数据库。实际应用中,每个服务器对应的日志存储单元的分配结果以及每个服务器的负载压力可以写入该数据库中,从而,每个服务器可以访问该数据库以获得自己的日志存储单元分配结果,基于该分配结果从相应的日志库中获取相应日志存储单元中存储的日志进行处理。
在一可选实施例中,执行本发明实施例提供的日志分配调度方法的主体可以是该服务器集群中的各服务器。具体地,可以定期(设置分配调度周期)从该服务器集群中筛选出一个作为本次执行日志存储单元分配调度过程的执行主体(为便于描述称为簇头服务器),服务器集群中各服务器中运行有相关的协商协议,以用于协商出每个调度周期的簇头服务器,比如结合各服务器的负载压力,每次协商确定负载压力最小的一个服务器作为簇头服务器。
在另一可选实施例中,还可以在上述日志分配调度系统中设置一个管理设备,该管理设备作为执行主体,用于定期对服务器集群中各服务器负责处理的日志存储单元进行分配调度。
实际应用中,服务器的负载压力可以根据服务器的CPU利用率、内存利用率来确定,比如预先建立CPU利用率和内存利用率与负载压力的取值之间的转换关系,基于该转换关系以及服务器当前的CPU利用率和内存利用率,确定当前该服务器的负载压力。
基于上述日志分配调度系统的组成,下面先介绍初始阶段,多个日志库的日志存储单元在服务器集群中的分配过程:
服务器集群中已经加入的服务器可以定期上报自己的负载压力。其中,负载压力的上报周期可以等于或小于日志存储单元的分配调度周期。另外,上述数据库中存储有每个分配调度周期各个服务器的分配结果:各服务器已分配的日志存储单元,其中包括日志存储单元的标识以及日志存储单元所对应(即所归属)的日志库的标识。
假设在根据分配调度周期确定的当前分配调度时间T1,由上述管理设备或此时筛选出的簇头服务器从上述数据库中获取每个服务器当前的负载压力以及已分配的日志存储单元。在初始情况下,每个服务器已分配的日志存储单元均为0,此时,可以根据目前服务器集群中存在的多个服务器的负载压力对这多个服务器进行排序:按照负载压力由低到高的顺序进行排序。针对某日志库中当前存在的日志存储单元,按照上述排序结果,逐个分配到多个服务器。
比如此时图1中示意的四个服务器的负载压力由低到高的顺序依次是:服务器1、服务器2、服务器3和服务器4,比如针对日志库A中的两个日志存储单元,将日志存储单元A1分配给服务器1,日志存储单元A2分配给服务器2。针对日志库B中的两个日志存储单元,将日志存储单元B1分配给服务器3,日志存储单元B2分配给服务器4。这四个服务器分别被分配了某个日志库中的一个日志存储单元之后,针对日志库C中的三个日志存储单元,再按照上述排序结果逐个分配:将日志存储单元C1分配给服务器1,日志存储单元C2分配给服务器2,日志存储单元C3分配给服务器3。
将上述分配结果存入服务器集群中的数据库中,各服务器查询该数据库以获知自己此时负责处理的日志存储单元及其所属的日志库,从而与存储相应日志库的设备建立通信连接,以从相应的日志存储单元中读取其中已经存储的日志进行处理。被读取以进行处理的日志随时间老化过期从相应日志存储单元中删除,从而使得日志存储单元中继续存入新产生的日志。
可以理解的是,服务器在读取日志以进行处理的过程中,会消耗服务器的CPU、内存等资源,从而导致服务器的负载压力发生变化。服务器根据设定的上报周期上报自己的实时负载压力信息。
结合图1中分配结果的举例,本发明实施例中提供的日志分配调度方案,在将多个日志库中的日志存储单元向服务器集群中的服务器进行定期分配调度的过程中,一方面可以实现多个服务器的负载均衡,另一方面,还可以实现同一日志库中的不同日志存储单元的均衡分配,即让同一日志库中的日志存储单元尽量分配到不同服务器中,比如图1中示意的日志存储单元A1和日志存储单元A2被分配到不同服务器中,这样,避免同一日志库中的日志存储单元在某个服务器或少量的某几个服务器中集中而导致该日志库中日志被延迟处理的概率提高。
下面具体说明本发明实施例提供的日志分配调度方法的实施过程。
图2为本发明实施例提供的一种日志分配调度方法的流程图,如图2所示,该方法包括如下步骤:
201、获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元。
202、若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,其中,设定更新事件包括所述服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件。
203、若发生设定更新事件,则确定设定更新事件对应的分配决策因素,分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器。
204、根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果。
如上文所述,可以以设定的分配调度周期来定期地执行多个日志库中日志存储单元向服务器集群中服务器的分配调度过程。
在当前调度周期,可以从服务器集群中的数据库中获取此时服务器集群中存在的多个服务器各自的负载压力以及已分配的日志存储单元。
假设此时查询到的多个服务器的负载压力都比较低,均低于设定阈值,则确定此时是否发生了某种设定的更新事件。比如当前处于服务器集群被启动运行后的短时间内,各个服务器的负载压力都比较低。
本发明实施例中的设定更新事件主要包括服务器集群有关的更新事件以及日志库有关的更新事件。
其中,服务器集群有关的更新事件主要是服务器数量的增减事件:比如新增了服务器,或减少了服务器。比如由于已经存在的某个服务器发生了故障而宕机导致该服务器被移出集群。
其中,日志库有关的更新事件主要包括日志库新增事件、已有日志库中日志存储单元的数量增减事件:比如已经存在的某日志库中增加了新的日志存储单元(即日志存储单元分裂事件),已经存在的某日志库中多个日志存储单元合并为一个日志存储单元(即日志存储单元合并事件),导致该日志库中日志存储单元数量减少。
实际应用中,上述服务器集群中的数据库中可以存储有日志存储单元列表,该日志存储单元列表中实时记录了当前存在的日志存储单元的信息,基于当前调度周期从日志存储单元列表中查询得到的日志存储单元信息与上个调度周期从日志存储单元列表中查询得到的日志存储单元信息的对比结果,可以确定当前调度周期是否发生了某种与日志库相关的更新事件。
另外,实际应用中,当服务器集群中加入新的服务器时,该新加入的服务器可以向上述数据库中存入自己的标识信息以及负载压力。同理,当服务器集群中某服务器退出时,该退出的服务器的标识将从上述数据库中删除。
本发明实施例中,预先设定了每种更新事件所对应的分配调度策略,每种更新事件所对应的分配调度策略会有所不同。该差异主要体现为每种更新事件所需考虑的分配决策因素以及分配决策因素的执行顺序不同。每种更新事件所对应的分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器。
其中,服务器的负载压力主要用于评价服务器的算力,如上文所述,可以基于服务器的CPU利用率、内存利用率来确定,服务器的负载压力用以反映服务器的剩余可用算力,负载压力高则说明剩余可用算力低。实际应用中,服务器中除需要执行日志处理任务外还可能执行其他任务,某服务器的负载压力高并不能直接说明该服务器需要处理的日志存储单元多,也可能是处理其他任务导致消耗了更多的算力。
其中,服务器已分配的日志存储单元数量,用于评价服务器当前需要处理的日志存储单元的数量多少。
其中,同一日志库中的日志存储单元分配到不同服务器,是为了实现同一日志库中多个日志存储单元的均衡分配,避免同一日志库中多个日志存储单元过于集中在同一或少量几个服务器中。比如,如果某日志库中的多个日志存储单元最终都被分配到同一服务器上,而该服务器上分配的日志存储单元的数量也比较多,其负载压力也比较高,那么意味着这多个日志存储单元需要等待更长的时间才能被进行日志处理,对于该日志库所对应的用户来说,体验不佳。
在确定当前调度周期发生了某种设定更新事件后,便可以根据该设定更新事件所对应的分配决策因素和集群中目前多个服务器各自已分配的日志存储单元,确定当前调度周期内各日志存储单元的分配结果,即确定各日志存储单元与各服务器的分配关系,将该分配关系更新到数据库中,使得各服务器查询该数据库确定当前调度周期内各自需要处理的日志存储单元。从而从相应的日志存储单元中读取需要处理的日志进行诸如安全检测等处理。比如若检测到其中某个日志中包括特定的与设定的某种安全问题相对应的字段内容,则进行告警。
可以理解的是,若在当前调度周期,服务器集群中存在的多个服务器的负载压力均小于设定阈值,并且确定当前并未发生设定更新事件,则确定当前调度周期各日志存储单元的分配结果仍采用上一分配调度周期所生成的分配结果。
在上述方案中,由于针对不同更新事件,结合了上述分配决策因素进行日志存储单元的分配调度,不仅有助于实现服务器的负载均衡,还有助于实现同一日志库中的日志存储单元在多个服务器中的均衡,以提高同一日志库中日志存储单元的处理及时性。
后续其他实施例中会举例说明每种设定更新事件发生时相应的分配调度过程。下面先结合图2所示实施例介绍在当前调度周期如果发现服务器集群中存在负载压力高于设定阈值的服务器时的分配调度过程。
图3为本发明实施例提供的一种日志分配调度方法的流程图,如图3所示,该方法包括如下步骤:
301、获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元。
302、若根据多个服务器的负载压力确定存在负载压力大于设定阈值的第一服务器,则根据多个服务器的负载压力确定负载压力符合设定条件的第二服务器,第二服务器的负载压力小于第一服务器。
303、确定第一服务器已分配的日志存储单元对应的第一日志库集合以及所述第二服务器已分配的日志存储单元对应的第二日志库集合。
304、若确定第一日志库集合中存在未包含在第二日志库集合中的第一日志库,则将第一服务器已分配的日志存储单元中对应于第一日志库的第一日志存储单元分配给第二服务器。
假设在当前调度周期,根据获得的多个服务器的负载压力确定存在负载压力大于设定阈值的第一服务器,则首先根据多个服务器的负载压力对多个服务器进行负载压力由低到高的排序,从而确定比如负载压力最低的服务器作为第二服务器,或者在负载压力小于上述设定阈值的服务器中确定一个服务器作为第二服务器。然后,确定第一服务器已分配的日志存储单元(是指基于上一个分配调度周期的分配结果确定的第一服务器被分配的日志存储单元)对应的第一日志库集合以及第二服务器已分配的日志存储单元对应的第二日志库集合。也就是说,第一日志库集合中包括第一服务器已分配的日志存储单元各自所属的日志库的标识,同理,第二日志库集合中包括第二服务器已分配的日志存储单元各自所属的日志库的标识。
之后,确定第一日志库集合中是否存在未包含在第二日志库集合中的日志库。假设第一日志库集合中包括日志库A和日志库B,第二日志库集合中包括日志库A和日志库C,则日志库B是未包含在第二日志库集合中的日志库,作为上述第一日志库。
若存在上述第一日志库,则将第一服务器已分配的日志存储单元中属于该第一日志库的第一日志存储单元分配给第二服务器。其中,第一日志存储单元是第一服务器已分配的日志存储单元中属于该第一日志库的任一日志存储单元。此时,第一服务器停止对第一日志存储单元的处理,即在将已经从第一日志存储单元中读取的日志处理完毕之后,不需要继续读取第一日志存储单元中的日志,转而由第二服务器读取第一日志存储单元中存入的日志进行处理。
在本次将第一日志存储单元重新分配给第二服务器后,第一服务器、第二服务器的负载压力可能发生变化,若变化后的负载压力仍旧表示第一服务器的负载压力大于设定阈值,则继续重复上述步骤的执行,本次执行过程中确定出的负载压力符合设定条件的服务器可能与上次确定的第二服务器不同或相同。
在一可选实施例中,若本次执行过程中确定出的负载压力符合设定条件的服务器仍包括上述第二服务器,即若除第二服务器外还存在其他满足该设定条件的服务器(称为其他服务器),则如果第一日志库集合中存在未包含在该其他服务器已分配的日志存储单元所对应的日志库集合中的日志库X,则将第一服务器已分配的日志存储单元中对应于该日志库X的某个日志存储单元分配给该其他服务器。而若本次执行过程中确定出的负载压力符合设定条件的服务器仅为上述第二服务器,那么可以继续从上述将第一服务器已分配的日志存储单元中对应于所述第一日志库的另一日志存储单元分配给第二服务器。由此可见,实际应用中,不能完全保证同一日志库中的不同日志存储单元被分配到不同服务器中,但是基于上述分配策略可以降低同一日志库中的不同日志存储单元被分配到同一服务器的概率。
为便于理解,结合图4示意图3所示实施例介绍的分配过程。
在图4中,假设目前服务器集群中包括服务器1、服务器2、服务器3和服务器4,假设日志库A中包括日志存储单元A1,日志库B中包括日志存储单元B1、日志存储单元B2和日志存储单元B3,日志库C中包括日志存储单元C1、日志存储单元C2和日志存储单元C3,日志库D中包括日志存储单元D1、日志存储单元D2、日志存储单元D3、日志存储单元D4、日志存储单元D5。
假设上一分配调度周期的分配结果如图4中所示,图中日志存储单元与服务器之间的连线表示分配关系。在当前分配调度周期,假设基于这几个服务器的负载压力确定服务器4的负载压力大于设定阈值,并确定服务器2的负载压力小于其他服务器,则上述步骤中的第一服务器为服务器4,第二服务器为服务器2。由图中的示意可知:服务器4对应的日志库包括日志库B和日志库D,服务器2对应的日志库包括日志库A、日志库C和日志库D,因此确定将服务器4上属于日志库B的日志存储单元B2重新分配给服务器2。
在上述实施例提供的日志分配调度方案中,定期对用于进行日志分配调度的服务器集群中各服务器负责处理的日志存储单元进行分配更新调度。在当前调度时间,获取服务器集群中当前存在的多个服务器的负载压力以及这些服务器各自已分配的日志存储单元,若发现存在负载压力大于设定阈值的第一服务器,则根据多个服务器的负载压力确定负载压力符合设定条件的第二服务器,第二服务器的负载压力小于第一服务器,从而可以将第一服务器已分配的部分日志存储单元重新分配给第一服务器进行处理。具体地,为保证同一日志库中的不同日志存储单元尽量分配到不同服务器上,即实现同一日志库中多个日志存储单元的均衡分配,首先,确定第一服务器已分配的日志存储单元对应的第一日志库集合以及第二服务器已分配的日志存储单元对应的第二日志库集合,之后,若确定第一日志库集合中存在未包含在第二日志库集合中的第一日志库,则将第一服务器已分配的日志存储单元中对应于第一日志库的第一日志存储单元分配给第二服务器,即将第一日志存储单元由原来的第一服务器进行处理更新为由第二服务器进行处理。如此,一方面有助于实现不同服务器的负载均衡,另一方面有助于实现同一日志库中不同日志存储单元的均衡分配。
下面结合以下实施例中介绍每种设定更新事件发生时相应的分配调度过程。
图5为本发明实施例提供的一种日志分配调度方法的流程图,如图5所示,该方法包括如下步骤:
501、获取服务器集群中当前存在的多个服务器的负载压力以及多个服务器各自已分配的日志存储单元。
502、若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件。
503、若确定发生的设定更新事件是指示新增了第二日志库的日志库新增事件,则根据多个服务器的负载压力对多个服务器进行排序,将第二日志库中的多个日志存储单元按照排序结果逐个分配给多个服务器。
本实施例中假设发生的设定更新事件是指示新增了第二日志库的日志库新增事件,此时对应的分配决策因素包括:服务器的负载压力。
具体来说,如当前调度周期查询日志存储单元列表发现新增了一个日志库,且该日志库中包括至少一个日志存储单元,则根据此时服务器集群中各服务器的负载压力,对服务器进行负载压力由低到高的排序,该新增日志库中的日志存储单元按照该排序结果,逐个地向服务器进行分配。比如该新增日志库中的日志存储单元为5个,但是服务器集群中目前仅包括4个服务器,则分配结果是:第一个服务器被分配了其中的两个日志存储单元,剩下的3个服务器被分别分配了其中的一个日志存储单元。
为便于理解,结合图6来示例说明上述分配过程。
在图6中,假设服务器集群中包括服务器1、服务器2、服务器3和服务器4,假设日志库A中包括日志存储单元A1和日志存储单元A2,日志库B中包括日志存储单元B1和日志存储单元B2,日志库C中包括日志存储单元C1、日志存储单元C2和日志存储单元C3。并假设上一分配调度周期的分配结果如图6中所示。
在当前分配调度周期,假设基于这几个服务器的负载压力确定所有服务器的负载压力均小于设定阈值,并通过查询日志存储单元列表确定新增加了一个日志库D,其中包括日志存储单元D1、日志存储单元D2、日志存储单元D3、日志存储单元D4、日志存储单元D5。假设基于这几个服务器的负载压力确定按照负载压力由低到高的顺序服务器的排序结果是:服务器1、服务器2、服务器3、服务器4。
基于上述假设情形,确定将日志存储单元D1分配给服务器1,将日志存储单元D2分配给服务器2,将日志存储单元D3分配给服务器3,将日志存储单元D4分配给服务器4,将日志存储单元D5分配给服务器1,分配结果如图6中所示。
由此可见,按照上述服务器排序结果,每次给一个服务器分配一个日志存储单元,这样实际上可以实现同一日志库中的不同日志存储单元被均衡地分配到不同服务器的效果。
图7为本发明实施例提供的一种日志分配调度方法的流程图,如图7所示,该方法包括如下步骤:
701、获取服务器集群中当前存在的多个服务器的负载压力以及多个服务器各自已分配的日志存储单元。
702、若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件。
703、若确定发生的设定更新事件是指示服务器集群中新增了第三服务器的服务器数量增加事件,则确定服务器数量增加事件对应的分配决策因素包括同一日志库中的日志存储单元分配到不同服务器以及服务器已分配的日志存储单元数量。
704、确定多个服务器中是否存在已分配的至少两个日志存储单元对应于同一日志库的第四服务器,若存在,则将所述至少两个日志存储单元中的部分日志存储单元重新分配给第三服务器。
705、确定多个服务器各自已分配的日志存储单元数量与第三服务器已分配的日志存储单元数量的差值,确定多个服务器中所述差值大于设定值的第五服务器,将第五服务器已分配的日志存储单元中目标数量的日志存储单元重新分配给第三服务器,所述目标数量根据第五服务器对应的所述差值与所述设定值确定。
本实施例中假设发生的设定更新事件是指示了服务器集群中新增了第三服务器的服务器数量增加事件,此时对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器已分配的日志存储单元数量。
由于服务器集群中新增了服务器,那么可以将此前一些服务器被分配的日志存储单元转移到新增的第三服务器中。
具体地,先确定服务器集群中原来的各个服务器已分配的日志存储单元中是否存在对应于同一日志库的情形,即先筛选出被分配了同一日志库中至少两个日志存储单元的服务器作为第四服务器。
实际上,第四服务器的数量可能是一个也可能不止一个。在第四服务器的数量不止一个的时候,针对每个第四服务器,可以先选出其上属于同一日志库的至少两个日志存储单元中的一个,将选出的一个分配给新增的第三服务器。假设第四服务器的数量为N,且假设每个第四服务器对应的日志库中仅存在一个日志库中包含了至少两个日志存储单元,因此,服务器集群中一共筛选出N个第四服务器,且涉及到N个日志库可能需要被调度。
此时,可以从上述N个日志库中分别选出一个,即共选出N个日志存储单元以重新分配给新增的第三服务器。
需要说明的是,这里是假设N个日志库是不同的。如果实际确定出的上述N个日志库中存在重复的,则要去重处理,即如果两个第四服务器对应于符合上述条件的相同日志库,则可以仅从这两个第四服务器中先选出一个第四服务器。这样,可以初步保证第三服务器上被分配的日志存储单元是对应于不同日志库的。
综上,在步骤704的执行过程中,先确定出N个第四服务器,且这N个第四服务器分别对应的N个日志库是不同的,这N个日志库中的任一日志库Ni是指:在其对应的第Ni个第四服务器上已分配有至少两个日志存储单元属于该日志库Ni。基于该确定结果,将N个日志库中选出的N个日志存储单元重新分配给第三服务器。这个分配结果只是初步的重新分配结果,该初始的重新分配结果在经过步骤705的执行后可能会更新。
之后,基于该初始的重新分配结果确定此时各服务器的已分配的日志存储单元数量。可以理解的是,假设某日志存储单元从服务器a重新分配给服务器b,则服务器a此时的日志存储单元数量减一,而服务器b的日志存储单元数量加一。
预先设置了一个约束不同服务器上分配的日志存储单元数量的差值的设定值,比如取值为2、4等设定数值,从而使得不同服务器上分配的日志存储单元数量相差不大。
基于此,可选地,可以确定服务器集群中多个服务器(除第三服务器外的服务器)各自已分配的日志存储单元数量(是指经过上述初始的重分配结果更新后的数量)与第三服务器已分配的日志存储单元数量的差值。如果发现第五服务器与第三服务器的已分配日志存储单元数量的差值大于设定值,则可以将第五服务器已分配的日志存储单元中目标数量的日志存储单元重新分配给第三服务器。其中,可选地,该目标数量可以根据第五服务器对应的所述差值与该设定值确定。比如,设定值为2,差值为3,则目标数量可以是3-2=1。实际应用中,该目标数量也可以设置为1,即每次针对一个服务器仅进行一个日志存储单元的重新分配。
可以理解的是,确定出的第五服务器可能包含在上述确定出的至少一个第四服务器中,也可以与各第四服务器不同。
另外,在将第五服务器已分配的日志存储单元中目标数量的日志存储单元重新分配给第三服务器的过程中,该目标数量的日志存储单元所对应的日志库与第三服务器已分配的日志存储单元所对应的日志库应该尽量不同。也就是说,若能满足日志库不同这个条件,则应该优先保证该条件,若不能,意味着比如第三服务器上已经分配有属于日志库a和日志库b的日志存储单元,但是第五服务器上已分配的日志存储单元恰好也都是属于这两个日志库的,则若第五服务器上日志库a对应的日志存储单元数量大于日志库b对应的日志存储单元数量,则将日志库a对应的上述目标数量的日志存储单元重新分配给第三服务器。
上述举例的是经过初始的重新分配结果确定第五服务器已分配的日志存储单元数量比第三服务器已分配的日志存储单元数量多的情形。实际应用中,可能也存在第三服务器已分配的日志存储单元数量比第五服务器已分配的日志存储单元数量多的情形,也就是经过初始的重新分配结果,第三服务器已分配的日志存储单元数量较多,而原来的某些服务器已分配的日志存储单元数量较小的情形。此时,类似地,可以将第三服务器已分配的日志存储单元中目标数量的日志存储单元再重新分配给第五服务器,该重新分配过程与从第五服务器中重新分配目标数量的日志存储单元给第三服务器的过程相似,不再赘述。
为便于理解,结合图8示例说明上述分配过程。
在图8中,假设服务器集群中包括服务器1、服务器2、服务器3和服务器4,假设日志库A中包括日志存储单元A1和日志存储单元A2,日志库B中包括日志存储单元B1和日志存储单元B2,日志库C中包括日志存储单元C1、日志存储单元C2和日志存储单元C3。日志库D包括日志存储单元D1、日志存储单元D2、日志存储单元D3、日志存储单元D4、日志存储单元D5,并假设上一分配调度周期的分配结果如图8中所示。
在当前分配调度周期,假设新增了服务器5,并且基于这几个服务器的负载压力确定所有服务器的负载压力均小于设定阈值。
基于上述假设情形,可以确定服务器1中存在属于同一日志库D的两个日志存储单元:日志存储单元D1和日志存储单元D5,如图8中所示,将其中的日志存储单元D5重新分配给了新增的服务器5。之后,计算服务器1-4分别与服务器5的已分配日志存储单元数量的差值,并假设上述设定值为2,即让不同服务器上已分配的日志存储单元的相差小于2。
从图8中示意的情形可知:服务器5上已分配的日志存储单元数量是1,服务器1、服务器2和服务器3目前已分配的日志存储单元数量都是3,与服务器5上已分配的日志存储单元数量的差值都等于2,可以从中确定一个目标服务器:目标服务器上已分配的日志存储单元所对应的日志库中存在未包含在服务器5上已分配的日志存储单元所对应的日志库集合中的日志库。如图8中所示,实际上服务器1、服务器2和服务器3均满足该条件,则可以从中随机选定一个作为目标服务器,比如服务器1,将服务器1上的日志存储单元A1或日志存储单元C1重新分配到第三服务器,图8中示意的是将服务器1上的日志存储单元A1重新分配到第三服务器。
图9为本发明实施例提供的一种日志分配调度方法的流程图,如图9所示,该方法包括如下步骤:
901、获取服务器集群中当前存在的多个服务器的负载压力以及多个服务器各自已分配的日志存储单元。
902、若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件。
903、若确定发生的设定更新事件是指示服务器集群中的第六服务器被移出的服务器数量减少事件,则确定服务器数量减少事件对应的分配决策因素包括同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力。
904、根据多个剩余服务器的负载压力对多个剩余服务器进行排序,在同一日志库中的日志存储单元分配到不同服务器的约束条件下,根据排序结果,将第六服务器已分配的日志存储单元重新分配给多个剩余服务器。
本实施例中假设发生的设定更新事件是指示服务器集群中的第六服务器被移出的服务器数量减少事件,此时对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力。
由于第六服务器退出了服务器集群,那么原本由第六服务器处理的日志存储单元需要被重新分配给目前位于服务器集群中的多个剩余服务器。
首先,根据多个剩余服务器的负载压力对多个剩余服务器进行负载压力由低到高的排序,然后针对排在第一位的服务器i,从第六服务器上已分配的日志存储单元中确定一个所对应的日志库未包含在服务器i所对应的日志库集合中的日志存储单元,将该日志存储单元重新分配给服务器i。之后,针对排在第二位的服务器j,进行相似的重新分配过程,以此类推。
可选地,如果实际应用中遇到上述多个剩余服务器中存在负载压力相同的至少两个服务器的情形时,可以根据该至少两个服务器各自已分配的日志存储单元的数量确定其排位:已分配的日志存储单元数量少的排在前面。
另外,如果在根据上述服务器排序结果遍历到排在第一位的服务器i时,发现第六服务器上已分配的各日志存储单元所对应的日志库均包含在服务器i对应的日志库集合中,此时可以确定服务器i上包含日志存储单元数量最少的日志库x,将第六服务器上的一个属于日志库x的日志存储单元重新分配给服务器i。
为便于理解,结合图10示例说明上述分配过程。
在图10中,假设服务器集群中包括服务器1、服务器2、服务器3、服务器4和服务器5,假设日志库A中包括日志存储单元A1和日志存储单元A2,日志库B中包括日志存储单元B1和日志存储单元B2,日志库C中包括日志存储单元C1、日志存储单元C2和日志存储单元C3。日志库D包括日志存储单元D1、日志存储单元D2、日志存储单元D3、日志存储单元D4、日志存储单元D5,并假设上一分配调度周期的分配结果如图10中所示。
在当前分配调度周期,假设服务器5退出服务器集群,并且基于这几个服务器的负载压力确定所有服务器的负载压力均小于设定阈值。而且,根据负载压力由低到高的顺序对剩余的多个服务器的排序结果是:服务器4、服务器3、服务器2、服务器1。
基于上述假设情形,确定服务器5已分配的日志存储单元A1和日志存储单元D5需要被重新分配。针对服务器4,由于其上已分配的日志存储单元B2和日志存储单元D4对应于日志库B和日志库D,而服务器5已分配的日志存储单元D5也属于日志库D,服务器4上不存在属于日志库A的日志存储单元,所以确定将日志存储单元A1分配给服务器4。之后,针对服务器3,将日志存储单元D5分配给服务器3。可以看到:此时无法避免服务器3上对应的日志库中仅包括一个日志存储单元,即已分配的日志存储单元D3和日志存储单元D5属于同一日志库D。
图11为本发明实施例提供的一种日志分配调度方法的流程图,如图11所示,该方法包括如下步骤:
1101、获取服务器集群中当前存在的多个服务器的负载压力以及多个服务器各自已分配的日志存储单元。
1102、若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件。
1103、若确定发生的设定更新事件是指示已存在的日志库中增加了新的第二日志存储单元的日志存储单元数量增加事件,则确定日志存储单元数量增加事件对应的分配决策因素包括同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力。
1104、根据多个服务器的负载压力对多个服务器进行排序,在同一日志库中的日志存储单元分配到不同服务器的约束条件下,根据排序结果,从多个服务器中确定将第二日志存储单元分配至的目标服务器。
本实施例中假设发生的设定更新事件是指示已存在的日志库中增加了新的第二日志存储单元的日志存储单元数量增加事件,此时对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力。
新增的第二日志存储单元需要被分配给服务器集群中某服务器,为完成该分配,先根据多个服务器的负载压力对多个服务器进行负载压力由低到高的排序。如果其中至少两个服务器的负载压力相同,则可以根据该至少两个服务器各自已分配的日志存储单元的数量确定其排位:已分配的日志存储单元数量少的排在前面。
之后,根据上述排序结果,找到一个还没有处理该第二日志存储单元所属的日志库中的其他日志存储单元的服务器,作为分配该第二日志存储单元的目标服务器。
为便于理解,结合图12示例说明上述分配过程。
在图12中,假设服务器集群中目前包括服务器1、服务器2、服务器3和服务器4,假设日志库A中包括日志存储单元A1和日志存储单元A2,日志库B中包括日志存储单元B1和日志存储单元B2,日志库C中包括日志存储单元C1、日志存储单元C2和日志存储单元C3。日志库D包括日志存储单元D1、日志存储单元D2、日志存储单元D3、日志存储单元D4、日志存储单元D5,并假设上一分配调度周期的分配结果如图12中所示。
在当前分配调度周期,假设日志库B中新增了日志存储单元B3,并且基于这几个服务器的负载压力确定所有服务器的负载压力均小于设定阈值。而且,根据负载压力由低到高的顺序对剩余的多个服务器的排序结果是:服务器1、服务器2、服务器3、服务器4。
针对服务器1,由于其已分配的日志存储单元C1和日志存储单元D1分别对应于日志库C和日志库D,而新增的日志存储单元B3对应于日志库B,所以确定将日志存储单元B3分配给服务器1。
图13为本发明实施例提供的一种日志分配调度方法的流程图,如图13所示,该方法包括如下步骤:
1301、获取服务器集群中当前存在的多个服务器的负载压力以及多个服务器各自已分配的日志存储单元。
1302、若多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件。
1303、若确定发生的设定更新事件是指示已存在的第三日志库中的至少两个日志存储单元合并为第三日志存储单元的日志存储单元数量减少事件,则确定日志存储单元数量减少事件对应的分配决策因素包括服务器已分配的日志存储单元数量。
1304、确定第三日志库中所述至少两个日志存储单元分配至的至少两个服务器,根据该至少两个服务器已分配的日志存储单元数量确定该至少两个服务器中的第七服务器,将第三日志存储单元分配至第七服务器,该至少两个服务器中第七服务器已分配的日志存储单元数量少于其他服务器已分配的日志存储单元数量。
本实施例中假设发生的设定更新事件是指示已存在的第三日志库中的至少两个日志存储单元合并为第三日志存储单元的日志存储单元数量减少事件,此时对应的分配决策因素包括:服务器已分配的日志存储单元数量。
实际应用中,比如第三日志库所对应的用户的应用程序产生的日志数量比较少,导致原本设置的多个日志存储单元较为冗余,所以对其中的部分日志存储单元进行了合并处理,以减少了第三日志库中包含的日志存储单元的数量。
比如,第三日志库中原本包括日志存储单元k1和日志存储单元k2,将两个合并为一个,将数量减少为1,此时可以保留日志存储单元k1或日志存储单元k2,假设保留的是日志存储单元k1,则将日志存储单元k2中还未被服务器读取的日志存入到日志存储单元k1中。
基于该举例,假设日志存储单元k1此前被分配给服务器a,日志存储单元k2此前被分配给服务器b,则分别确定服务器a和服务器b已分配的日志存储单元数量,假设服务器a已分配的日志存储单元数量为5,服务器b已分配的日志存储单元数量为2,则确定服务器b作为上述步骤中的第七服务器。将合并后保留的那个日志存储单元分配给服务器b。
为便于理解,结合图14示例说明上述分配过程。
在图14中,假设服务器集群中目前包括服务器1、服务器2、服务器3和服务器4,假设日志库A中包括日志存储单元A1和日志存储单元A2,日志库B中包括日志存储单元B1、日志存储单元B2和日志存储单元B3,日志库C中包括日志存储单元C1、日志存储单元C2和日志存储单元C3。日志库D包括日志存储单元D1、日志存储单元D2、日志存储单元D3、日志存储单元D4、日志存储单元D5,并假设上一分配调度周期的分配结果如图14中所示。
在当前分配调度周期,假设日志库A中日志存储单元A1和日志存储单元A2合并为一个,比如如图14中示意的保留了日志存储单元A1,删掉了日志存储单元A2。并且,基于图14中的示意可知:日志存储单元A1此前分配给了服务器4,日志存储单元A2分配给了服务器2,服务器2和服务器4各自已分配的日志存储单元数量均为3,则可以随机从中确定一个服务器,比如确定服务器2,将日志存储单元A1分配给服务器2。
在一可选实施例中,在发生日志存储单元减少事件时,对应的分配决策因素还可以包括服务器的负载压力。在遇到比如上述服务器2和服务器4各自已分配的日志存储单元数量相等的情形时,可以根据服务器2和服务器4各自的负载压力确定负载压力小的服务器,以将合并后保留的那个日志存储单元分配给该服务器。
以下将详细描述本发明的一个或多个实施例的日志分配调度装置。本领域技术人员可以理解,这些装置均可使用市售的硬件组件通过本方案所教导的步骤进行配置来构成。
图15为本发明实施例提供的一种日志分配调度装置的结构示意图,如图15所示,该装置包括:获取模块11、确定模块12、分配模块13。
获取模块11,用于获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元。
确定模块12,用于若所述多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,其中,所述设定更新事件包括所述服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件。
分配模块13,用于若发生所述设定更新事件,则确定所述设定更新事件对应的分配决策因素,根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,所述分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器。
可选地,所述确定模块12还用于:若根据所述多个服务器的负载压力确定存在负载压力大于设定阈值的第一服务器,则根据所述多个服务器的负载压力确定负载压力符合设定条件的第二服务器,所述第二服务器的负载压力小于所述第一服务器。所述分配模块13还用于:确定所述第一服务器已分配的日志存储单元对应的第一日志库集合以及所述第二服务器已分配的日志存储单元对应的第二日志库集合;若确定所述第一日志库集合中存在未包含在所述第二日志库集合中的第一日志库,则将所述第一服务器已分配的日志存储单元中对应于所述第一日志库的第一日志存储单元分配给所述第二服务器。
可选地,所述设定更新事件是指示新增了第二日志库的日志库新增事件;所述分配决策因素包括:服务器的负载压力。此时,所述分配模块13具体用于:根据所述多个服务器的负载压力对所述多个服务器进行排序;将所述第二日志库中的多个日志存储单元按照所述排序逐个分配给所述多个服务器。
可选地,所述设定更新事件是服务器数量增加事件,所述服务器数量增加事件指示所述服务器集群中新增了第三服务器;所述服务器数量增加事件对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器已分配的日志存储单元数量。此时,所述分配模块13具体用于:确定所述多个服务器中是否存在已分配的至少两个日志存储单元对应于同一日志库的第四服务器;若存在,则将所述至少两个日志存储单元中的部分日志存储单元重新分配给所述第三服务器;确定所述多个服务器各自已分配的日志存储单元数量与所述第三服务器已分配的日志存储单元数量的差值;确定所述多个服务器中所述差值大于设定值的第五服务器;将所述第五服务器已分配的日志存储单元中目标数量的日志存储单元重新分配给所述第三服务器,所述目标数量根据所述第五服务器对应的所述差值与所述设定值确定。
可选地,所述设定更新事件是服务器数量减少事件,所述服务器数量减少事件指示所述多个服务器中的第六服务器被从所述服务器集群中移出;所述服务器数量减少事件对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力。此时,所述分配模块13具体用于:根据多个剩余服务器的负载压力对所述多个剩余服务器进行排序;在同一日志库中的日志存储单元分配到不同服务器的约束条件下,根据所述排序,将所述第六服务器已分配的日志存储单元重新分配给所述多个剩余服务器。
可选地,所述设定更新事件是日志存储单元数量增加事件,所述日志存储单元数量增加事件指示已存在的日志库中增加了新的第二日志存储单元;所述日志存储单元数量增加事件对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力。此时,所述分配模块13具体用于:根据所述多个服务器的负载压力对所述多个服务器进行排序;在同一日志库中的日志存储单元分配到不同服务器的约束条件下,根据所述排序,从所述多个服务器中确定将所述第二日志存储单元分配至的目标服务器。
可选地,所述设定更新事件是日志存储单元数量减少事件,所述日志存储单元数量减少事件指示已存在的第三日志库中的至少两个日志存储单元合并为第三日志存储单元;所述日志存储单元数量减少事件对应的分配决策因素包括:服务器已分配的日志存储单元数量。此时,所述分配模块13具体用于:确定所述第三日志库中所述至少两个日志存储单元分配至的至少两个服务器;根据所述至少两个服务器已分配的日志存储单元数量确定所述至少两个服务器中的第七服务器,所述至少两个服务器中所述第七服务器已分配的日志存储单元数量少于其他服务器已分配的日志存储单元数量;将所述第三日志存储单元分配至所述第七服务器。
图15所示装置可以执行前述实施例中的步骤,详细的执行过程和技术效果参见前述实施例中的描述,在此不再赘述。
在一个可能的设计中,上述图15所示日志分配调度装置的结构可实现为一电子设备。如图16所示,该电子设备可以包括:处理器21、存储器22、通信接口23。其中,存储器22上存储有可执行代码,当所述可执行代码被处理器21执行时,使处理器21至少可以实现如前述实施例中提供的日志分配调度方法。
另外,本发明实施例提供了一种非暂时性机器可读存储介质,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器至少可以实现如前述实施例中提供的日志分配调度方法。
以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。本领域普通技术人员在不付出创造性的劳动的情况下,即可以理解并实施。
通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助加必需的通用硬件平台的方式来实现,当然也可以通过硬件和软件结合的方式来实现。基于这样的理解,上述技术方案本质上或者说对现有技术做出贡献的部分可以以计算机产品的形式体现出来,本发明可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。
最后应说明的是:以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。

Claims (10)

1.一种日志分配调度方法,其特征在于,包括:
获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元;
若所述多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,其中,所述设定更新事件包括所述服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件;
若发生所述设定更新事件,则确定所述设定更新事件对应的分配决策因素,所述分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器;
根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果。
2.根据权利要求1所述的方法,其特征在于,所述方法还包括:
若根据所述多个服务器的负载压力确定存在负载压力大于设定阈值的第一服务器,则根据所述多个服务器的负载压力确定负载压力符合设定条件的第二服务器,所述第二服务器的负载压力小于所述第一服务器;
确定所述第一服务器已分配的日志存储单元对应的第一日志库集合以及所述第二服务器已分配的日志存储单元对应的第二日志库集合;
若确定所述第一日志库集合中存在未包含在所述第二日志库集合中的第一日志库,则将所述第一服务器已分配的日志存储单元中对应于所述第一日志库的第一日志存储单元分配给所述第二服务器。
3.根据权利要求1或2所述的方法,其特征在于,所述设定更新事件为指示新增第二日志库的日志库新增事件;所述分配决策因素包括:服务器的负载压力;
所述根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,包括:
根据所述多个服务器的负载压力对所述多个服务器进行排序;
将所述第二日志库中的多个日志存储单元按照所述排序逐个分配给所述多个服务器。
4.根据权利要求1或2所述的方法,其特征在于,所述设定更新事件是服务器数量增加事件,所述服务器数量增加事件指示所述服务器集群中新增了第三服务器;所述服务器数量增加事件对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器已分配的日志存储单元数量;
所述根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,包括:
确定所述多个服务器中是否存在已分配的至少两个日志存储单元对应于同一日志库的第四服务器;
若存在,则将所述至少两个日志存储单元中的部分日志存储单元重新分配给所述第三服务器;
确定所述多个服务器各自已分配的日志存储单元数量与所述第三服务器已分配的日志存储单元数量的差值;
在所述多个服务器中确定所述差值大于设定值的第五服务器;
将所述第五服务器已分配的日志存储单元中目标数量的日志存储单元重新分配给所述第三服务器,所述目标数量根据所述第五服务器对应的所述差值与所述设定值确定。
5.根据权利要求1或2所述的方法,其特征在于,所述设定更新事件是服务器数量减少事件,所述服务器数量减少事件指示所述多个服务器中的第六服务器被从所述服务器集群中移出;所述服务器数量减少事件对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力;
所述根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,包括:
根据多个剩余服务器的负载压力对所述多个剩余服务器进行排序,所述多个剩余服务器是指所述服务器集群中移出所述第六服务器外剩余的服务器;
在同一日志库中的日志存储单元分配到不同服务器的约束条件下,根据所述排序,将所述第六服务器已分配的日志存储单元重新分配给所述多个剩余服务器。
6.根据权利要求1或2所述的方法,其特征在于,所述设定更新事件是日志存储单元数量增加事件,所述日志存储单元数量增加事件指示已存在的日志库中增加了新的第二日志存储单元;所述日志存储单元数量增加事件对应的分配决策因素包括:同一日志库中的日志存储单元分配到不同服务器以及服务器的负载压力;
所述根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,包括:
根据所述多个服务器的负载压力对所述多个服务器进行排序;
在同一日志库中的日志存储单元分配到不同服务器的约束条件下,根据所述排序,从所述多个服务器中确定将所述第二日志存储单元分配至的目标服务器。
7.根据权利要求1或2所述的方法,其特征在于,所述设定更新事件是日志存储单元数量减少事件,所述日志存储单元数量减少事件指示已存在的第三日志库中的至少两个日志存储单元合并为第三日志存储单元;所述日志存储单元数量减少事件对应的分配决策因素包括:服务器已分配的日志存储单元数量;
所述根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,包括:
确定所述第三日志库中所述至少两个日志存储单元分配至的至少两个服务器;
根据所述至少两个服务器已分配的日志存储单元数量确定所述至少两个服务器中的第七服务器,所述至少两个服务器中所述第七服务器已分配的日志存储单元数量少于其他服务器已分配的日志存储单元数量;
将所述第三日志存储单元分配至所述第七服务器。
8.一种日志分配调度装置,其特征在于,包括:
获取模块,用于获取服务器集群中当前存在的多个服务器的负载压力以及所述多个服务器各自已分配的日志存储单元;
确定模块,用于若所述多个服务器的负载压力均小于设定阈值,则确定当前是否发生设定更新事件,其中,所述设定更新事件包括所述服务器集群中服务器数量增减事件、日志库中日志存储单元数量增减事件或日志库新增事件;
分配模块,用于若发生所述设定更新事件,则确定所述设定更新事件对应的分配决策因素,根据所述分配决策因素和所述多个服务器各自已分配的日志存储单元,确定与所述设定更新事件对应的日志存储单元分配结果,所述分配决策因素包括如下多个因素中的全部或部分:服务器的负载压力、服务器已分配的日志存储单元数量以及同一日志库中的日志存储单元分配到不同服务器。
9.一种电子设备,其特征在于,包括:存储器、处理器、通信接口;其中,所述存储器上存储有可执行代码,当所述可执行代码被所述处理器执行时,使所述处理器执行如权利要求1至7中任一项所述的日志分配调度方法。
10.一种非暂时性机器可读存储介质,其特征在于,所述非暂时性机器可读存储介质上存储有可执行代码,当所述可执行代码被电子设备的处理器执行时,使所述处理器执行如权利要求1至7中任一项所述的日志分配调度方法。
CN202310041914.1A 2023-01-12 2023-01-12 日志分配调度方法、装置、设备和存储介质 Pending CN116069470A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN202310041914.1A CN116069470A (zh) 2023-01-12 2023-01-12 日志分配调度方法、装置、设备和存储介质

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN202310041914.1A CN116069470A (zh) 2023-01-12 2023-01-12 日志分配调度方法、装置、设备和存储介质

Publications (1)

Publication Number Publication Date
CN116069470A true CN116069470A (zh) 2023-05-05

Family

ID=86179741

Family Applications (1)

Application Number Title Priority Date Filing Date
CN202310041914.1A Pending CN116069470A (zh) 2023-01-12 2023-01-12 日志分配调度方法、装置、设备和存储介质

Country Status (1)

Country Link
CN (1) CN116069470A (zh)

Similar Documents

Publication Publication Date Title
US7610425B2 (en) Approach for managing interrupt load distribution
CN107832153B (zh) 一种Hadoop集群资源自适应分配方法
US7979862B2 (en) System and method for replacing an inoperable master workload management process
US7945913B2 (en) Method, system and computer program product for optimizing allocation of resources on partitions of a data processing system
CN113342477B (zh) 一种容器组部署方法、装置、设备及存储介质
US8176037B2 (en) System and method for SQL query load balancing
EP1564638B1 (en) A method of reassigning objects to processing units
US20050149540A1 (en) Remastering for asymmetric clusters in high-load scenarios
US20090313635A1 (en) System and/or method for balancing allocation of data among reduce processes by reallocation
CN110221920B (zh) 部署方法、装置、存储介质及系统
CN101963969B (zh) Oracle RAC系统中实现负载均衡的方法和数据库服务器
US8560690B2 (en) Automatic assignment of services to servers in a multi-server system
CN113655969B (zh) 一种基于流式分布式存储系统的数据均衡存储方法
CN1602480A (zh) 管理附装在数据网络上的存储器资源
US6549931B1 (en) Distributing workload between resources used to access data
CN111124673A (zh) 数据采集系统及方法
CN111767145A (zh) 容器调度系统、方法、装置和设备
Zhang et al. Txallo: Dynamic transaction allocation in sharded blockchain systems
CN115658311A (zh) 一种资源的调度方法、装置、设备和介质
CN114281479A (zh) 一种容器管理方法及装置
CN109285015B (zh) 一种虚拟资源的分配方法及系统
US8650571B2 (en) Scheduling data analysis operations in a computer system
US7647592B2 (en) Methods and systems for assigning objects to processing units
CN117707756A (zh) 一种分布式计算系统的实现方法、装置及计算引擎
CN116069470A (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