CN115695334A - 一种多服务节点的线程分配控制方法 - Google Patents
一种多服务节点的线程分配控制方法 Download PDFInfo
- Publication number
- CN115695334A CN115695334A CN202211240397.2A CN202211240397A CN115695334A CN 115695334 A CN115695334 A CN 115695334A CN 202211240397 A CN202211240397 A CN 202211240397A CN 115695334 A CN115695334 A CN 115695334A
- Authority
- CN
- China
- Prior art keywords
- service
- service node
- threads
- storage server
- shared storage
- 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
Images
Classifications
-
- Y—GENERAL 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
- Y02—TECHNOLOGIES OR APPLICATIONS FOR MITIGATION OR ADAPTATION AGAINST CLIMATE CHANGE
- Y02D—CLIMATE 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/00—Energy efficient computing, e.g. low power processors, power management or thermal management
Landscapes
- Hardware Redundancy (AREA)
Abstract
本发明公开了一种多服务节点的线程分配控制方法,本方法包括:首先已启动的每个服务节点都在共享存储服务器上进行注册;其次抢占到锁的服务节点将业务线程总数x进行注册;然后每个服务节点能够获取到线程总数x和服务节点的总数n,并启动x/n个服务节点或x/n的向上取整个服务节点;最后业务线程启动之后,必须先将自己注册到共享存储服务器上才能正常执行业务,当注册失败或者已注册成功的线程总数量超过x时,线程不会执行并一直尝试注册直到成功,这样能够对服务节点的处理线程进行均衡分配。
Description
技术领域
本发明涉及服务器资源分配相关技术领域,尤其是涉及一种多服务节点的线程分配控制方法。
背景技术
随着企业用户量、业务量的不断增长,以往的单台服务器架构已经不能满足业务的增长速度,单台服务器资源的提升成本也越来越贵,而且单台服务器会存在单点故障问题,当此台服务器硬件或者网络发生问题时会导致用户服务彻底不可用,在服务体验越来越严格的今天,服务不可用会导致用户业务的流失。所以为了提升业务服务的处理速度,降低单机的成本,减少故障的几率并提升用户体验,所以需要多台服务器协同处理同种业务。
但现有的多台服务器处理服务时会对有限的共享资源(如运营商的连接数)进行争抢,导致大部分业务集中于某台服务器,同时某台服务器负载压力过大,导致业务处理慢、大负载压垮服务器的情况。
发明内容
本发明旨在至少解决现有技术中存在的技术问题之一。为此,本发明提出一种多服务节点的线程分配控制方法,能够实现对服务节点的处理线程进行均衡分配。
根据本发明的实施例的多服务节点的线程分配控制方法,所述多服务节点的线程分配控制方法包括:
服务节点集群中已启动的每个服务节点分别在共享存储服务器进行注册并设置所述服务节点的第一过期时间;
每个所述服务节点抢占锁,抢占到锁的所述服务节点将所述服务节点集群的业务线程总数x注册在所述共享存储服务器中;
每个所述服务节点分别从所述共享存储服务器中获取所述线程总数x和服务节点总数n,并启动多个业务线程;其中,当x/n为整数,所述服务节点启动的所述多个业务线程为x/n个业务线程,当x/n不为整数,则所述服务节点启动的所述多个业务线程为x/n的向上取整个业务线程;
每个所述服务节点分别申请将对应的所述多个业务线程注册至所述共享存储服务器中,其中,所述共享存储服务器的业务线程的注册数量不超过x个;若所述服务节点的所述多个业务线程注册成功,则在所述共享存储服务器中设置所述多个业务线程的第二过期时间,并执行所述多个业务线程;若所述服务节点的所述多个业务线程注册失败,则持续向所述共享存储服务器申请注册对应的所述多个业务线程,直至存在已成功注册的所述服务节点超出第一过期时间且未更新第一过期时间,或存在已成功注册的所述服务节点的所述多个业务线程超出第二过期时间且未更新第二过期时间,或存在已成功注册的所述服务节点在第二过期时间内释放对应的所述多个业务线程时,才申请注册成功,并设置注册成功的所述多个业务线程的第二过期时间和执行所述多个业务线程。
根据本发明实施例的多服务节点的线程分配控制方法,至少具有如下有益效果:
首先服务节点集群中的已启动的每个服务节点都在共享存储服务器上进行注册,并设置服务节点的第一过期时间;其次抢占到锁的服务节点将业务线程总数x进行注册;然后每个服务节点能够获取到线程总数x和服务节点的总数n,并启动x/n个服务节点或x/n的向上取整个服务节点,确保启动的业务线程数冗余;最后业务线程启动之后,必须先将自己注册到共享存储服务器上才能正常执行业务,当注册失败或者已注册成功的线程总数量超过x时,线程不会执行并一直尝试注册直到成功,这样能够对服务节点的处理线程进行均衡分配。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述服务节点通过总控线程在所述共享存储服务器中读取到所述共享存储服务器中存在所述服务节点的注册信息,则更新对应的第一过期时间;否则,则在所述共享存储服务器中进行注册并设置对应的第一过期时间。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述服务节点通过总控线程在所述共享存储服务器中读取到所述共享存储服务器中存在所述服务节点的所述多个业务线程的注册信息,则更新对应的第二过期时间;否则,则持续向所述共享存储服务器申请注册对应的所述多个业务线程,直至注册成功。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述服务节点集群启动一个新的服务节点时,所述新的服务节点在所述共享存储服务器中进行注册并设置对应的第一过期时间;
所述新的服务节点启动x/(n+1)个业务线程或x/(n+1)向上取整个业务线程,并持续申请将启动的x/(n+1)个业务线程或x/(n+1)向上取整个业务线程注册至所述共享存储服务器中,直至注册成功。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述共享存储服务器中的服务节点总数n发生变化,且存在x/n<x/(n+1)时,则多个所述服务节点释放(x/n)-(x/(n+1))个业务线程,并在所述共享存储服务器上注销被释放的业务线程的注册信息。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述服务节点集群关停一个服务节点时,在所述共享存储服务器上注销关停的所述服务节点的注册信息和对应的所述多个业务线程的注册信息。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当已成功注册的所述服务节点在第一过期时间内未更新第一过期时间,则在所述共享存储服务器上注销所述服务节点的注册信息和对应的所述多个业务线程的注册信息。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述共享存储服务器中的服务节点总数n发生变化,且x/(n+1)>x/n时,则多个所述服务节点启动(x/n-1)-(x/n)个业务线程。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
抢占到锁的所述服务节点将所述服务节点集群的运行总速度y注册在所述共享存储服务器中;
当所述服务节点的总控线程更新所述第一过期时间或所述第二过期时间时,调整运行速度为z/y*x;其中,z表示所述服务节点运行的已注册至所述共享存储服务器中的业务线程的数量。
根据本发明的一些实施例,所述多服务节点的线程分配控制方法还包括:
当所述业务线程总数x为1,且在所述共享存储服务器中成功注册的所述服务节点释放或宕机时,通过已启动的其中一个所述服务节点接替执行被释放或宕机的所述服务节点的业务线程。
本发明的其它特征和优点将在随后的说明书中阐述,并且,部分地从说明书中变得显而易见,或者通过实施本发明而了解。
附图说明
本发明的上述和/或附加的方面和优点从结合下面附图对实施例的描述中将变得明显和容易理解,其中:
图1是本发明一实施例提供的一种多服务节点的线程分配控制方法的流程示意图;
图2是本发明一实施例提供的redis中存储服务节点注册信息示意图;
图3是本发明一实施例提供的redis中存储服务节点、运行速度和线程总数的注册信息示意图;
图4是本发明一实施例提供的redis中存储服务节点、运行速度、线程总数和业务线程的注册信息示意图。
具体实施方式
下面详细描述本发明的实施例,所述实施例的示例在附图中示出,其中自始至终相同或类似的标号表示相同或类似的元件或具有相同或类似功能的元件。下面通过参考附图描述的实施例是示例性的,仅用于解释本发明,而不能理解为对本发明的限制。
在本发明的描述中,如果有描述到第一、第二等只是用于区分技术特征为目的,而不能理解为指示或暗示相对重要性或者隐含指明所指示的技术特征的数量或者隐含指明所指示的技术特征的先后关系。
在本发明的描述中,需要理解的是,涉及到方位描述,例如上、下等指示的方位或位置关系为基于附图所示的方位或位置关系,仅是为了便于描述本发明和简化描述,而不是指示或暗示所指的装置或元件必须具有特定的方位、以特定的方位构造和操作,因此不能理解为对本发明的限制。
本发明的描述中,需要说明的是,除非另有明确的限定,设置、安装、连接等词语应做广义理解,所属技术领域技术人员可以结合技术方案的具体内容合理确定上述词语在本发明中的具体含义。
在介绍本申请实施例之前,先对本申请基本术语进行介绍:
1)抢占锁:只能有一台服务节点获取到它,直到它释放,其他服务节点才能获取,用于保证只能单个服务节点处理的场景。可实现的方式有:redis分布式锁,mysql共享锁,zookeeper分布式锁等;
2)共享存储服务器:具有存储能力的服务器,所有的服务节点都连接上去保存或更新信息,例如:redis、mysql、mongodb等;
3)有限的共享资源:因受限于有限的资源条件,此资源不能无限使用,如运营商提供的连接数是固定的,每个线程只能持有一个连接,但一个服务节点能创建多个线程,所以运营商提供的连接数需要均匀共享分配给业务线程;
4)总控线程:用来续租,以维持本服务节点和线程的注册不过期失效,同时用来监听redis上数据的变化,以达到扩容和缩容的目的。
但现有的多台服务器处理服务时会对有限的共享资源(如运营商的连接数)进行争抢,导致大部分业务集中于某台服务器,同时某台服务器负载压力过大,导致业务处理慢、大负载压垮服务器的情况。
为了解决上述缺陷,参照图1,本申请的一个实施例,提供一种多服务节点的线程分配控制方法,本方法包括如下步骤S101至S104,具体的:
步骤S101、服务节点集群中已启动的每个服务节点分别在共享存储服务器进行注册并设置服务节点的第一过期时间。在本申请的一些实施例中,共享存储服务器是redis。第一过期时间的作用是判断服务节点的注册信息是否失效,第一过期时间可以根据实际情况进行设定,例如设为30秒,当某一服务节点在共享存储服务器进行注册并设定30秒的第一过期时间,在经过30秒之后,该服务节点未更新注册信息(即更新第一过期时间,如将第一过期时间重新设定30秒),则证明该服务节点无反应,所以需将该服务节点注销(后续实施例进行介绍),避免无效占用资源。
步骤S102、每个服务节点抢占锁,抢占到锁的服务节点将服务节点集群的业务线程总数x注册在共享存储服务器中。在本实施例中,每个服务节点都会参与去抢占锁,其中抢到锁的一个服务节点将把服务节点集群支持的业务线程总数x注册在共享存储服务器中。需要注意的是,本实施例对服务节点集群支持的业务线程总数不进行具体限定,其值可以由实际情况进行设定,此处不再细述。
步骤S103、每个服务节点分别从共享存储服务器中获取线程总数x和服务节点总数n,并启动多个业务线程;其中,当x/n为整数,服务节点启动的多个业务线程为x/n个业务线程,当x/n不为整数,则服务节点启动的多个业务线程为x/n的向上取整个业务线程。确保启动的业务线程数是冗余的。
步骤S104、每个服务节点分别申请将对应的多个业务线程注册至共享存储服务器中,其中,共享存储服务器的业务线程的注册数量不超过x个;若服务节点的多个业务线程注册成功,则在共享存储服务器中设置多个业务线程的第二过期时间,并执行多个业务线程;若服务节点的多个业务线程注册失败,则持续向共享存储服务器申请注册对应的多个业务线程,直至存在已成功注册的服务节点超出第一过期时间且未更新第一过期时间,或存在已成功注册的服务节点的多个业务线程超出第二过期时间且未更新第二过期时间,或存在已成功注册的服务节点在第二过期时间内释放对应的多个业务线程时,才申请注册成功,并设置注册成功的多个业务线程的第二过期时间和执行多个业务线程。业务线程启动之后,必须先将自己注册到共享存储服务器上才能正常执行该业务,当注册失败或者已注册成功的线程总数量超过x时,线程不会执行并一直尝试注册直到成功,达到控制业务线程数量的目的,这样能够实现对服务节点的处理线程进行均衡分配。
在本申请的一些实施例中,本方法还包括如下步骤:
当服务节点通过总控线程在共享存储服务器中读取到共享存储服务器中存在服务节点的注册信息,则更新对应的第一过期时间;否则,则在共享存储服务器中进行注册并设置对应的第一过期时间。在本实施例中,每一服务节点的总控线程将每隔一段时间(例如5秒)监控共享存储服务器中的信息,如果当服务节点的总控线程读取到共享存储服务器中存在自身的信息时,则更新第一过期时间,避免自身的注册信息失效。如果当服务节点的总控线程读取到共享存储服务器中不存在自身的信息时,那么意味着在当前时刻,该服务节点没有在共享存储服务器中进行注册,此时将会向共享存储服务器进行注册,并设置一个第一过期时间。
在本申请的一些实施例中,本方法还包括如下步骤:
当服务节点通过总控线程在共享存储服务器中读取到共享存储服务器中存在服务节点的多个业务线程的注册信息,则更新对应的第二过期时间;否则,则持续向共享存储服务器申请注册对应的多个业务线程,直至注册成功。与上述实施例同理,这里的总控线程将每隔一段时间(例如5秒)监控共享存储服务器中的信息,如果当服务节点的总控线程读取到共享存储服务器中存在自身的多个业务线程的注册信息时,则更新第二过期时间,避免自身的多个业务线程的注册信息失效。如果当服务节点的总控线程读取到共享存储服务器中不存在自身的的多个业务线程的注册信息时,那么意味着在当前时刻,该服务节点的多个业务线程没有在共享存储服务器中进行注册,那么该服务节点的多个业务线程无法被执行,此时将会持续向共享存储服务器进行申请注册多个业务线程,直至多个业务线程成功注册后,设置对应的第二过期时间并执行业务线程。
在本申请的一些实施例中,本方法还包括如下步骤:
当服务节点集群启动一个新的服务节点时,新的服务节点在共享存储服务器中进行注册并设置对应的第一过期时间;
新的服务节点启动x/(n+1)个业务线程或x/(n+1)向上取整个业务线程,并持续申请将启动的x/(n+1)个业务线程或x/(n+1)向上取整个业务线程注册至共享存储服务器中,直至注册成功。
在本实施例中,当服务节点集群扩大容量时(本实施默认一次增加一个节点),由于业务量的激增需要扩展水平的服务能力,增加一个节点,那么当前需要启动一个相同的服务节点,节点数量变成n+1,那么本实施例新增的服务节点直接向共享存储服务器中进行注册并设置对应的第一过期时间,新增的服务节点启动x/(n+1)个业务线程来申请注册到共享存储服务器上(若有小数点则向上取整)。
在本申请的一些实施例中,本方法还包括如下步骤:
当共享存储服务器中的服务节点总数n发生变化,且存在x/n<x/(n+1)时,则多个服务节点释放(x/n)-(x/(n+1))个业务线程,并在共享存储服务器上注销被释放的业务线程的注册信息。
在本实施例中,当服务节点集群增加一个节点时,原来旧的服务节点将会释放一定资源,当总控线程读取到共享存储服务器中注册的服务节点数量有变化时,且发现x/n<x/(n+1),则多个旧的服务节点释放(x/n)-(x/(n+1))个业务线程,并在共享存储服务器中注销被释放业务线程的注册信息。
在本申请的一些实施例中,本方法还包括如下步骤:
当服务节点集群关停一个服务节点时,在共享存储服务器上注销关停的服务节点的注册信息和对应的多个业务线程的注册信息。
在本实施例中,服务节点集群运行的过程中,由于业务量和成本的降低,减少一个服务节点,那么当前需要关停一个服务节点,或者某个服务节点因为硬件、网络或者其他原因宕机了,节点数量变成n-1,那么将在共享存储服务器上注销关停的服务节点的注册信息和对应的多个业务线程的注册信息。
在本申请的一些实施例中,本方法还包括如下步骤:
当已成功注册的服务节点在第一过期时间内未更新第一过期时间,则在共享存储服务器上注销服务节点的注册信息和对应的多个业务线程的注册信息。
假设在30s内没有在共享存储服务器中更新第一过期时间,意味着服务器宕机,为了避免出现无效占用资源,该节点在共享存储服务器中的服务节点和线程节点的注册信息将被移除。
在本申请的一些实施例中,本方法还包括如下步骤:
当共享存储服务器中的服务节点总数n发生变化,且x/(n+1)>x/n时,则多个服务节点启动(x/n-1)-(x/n)个业务线程。
在本申请的一些实施例中,本方法还包括如下步骤:
抢占到锁的服务节点将服务节点集群的运行总速度y注册在共享存储服务器中;
当服务节点的总控线程更新第一过期时间或第二过期时间时,调整运行速度为z/y*x;其中,z表示服务节点运行的已注册至共享存储服务器中的业务线程的数量。
通过上述步骤实现对服务节点的处理速度进行均衡分配。可以达到充分利用每个服务节点,降低服务节点因数据业务处理的倾斜导致资源波动,达到提高服务节点的稳定性降低服务故障的发生概率的效果。同时还有限流的效果,例如存在以下这种场景:假如该集群服务节点需要调用下游服务,下游服务的资源有限,能够承受的tps有限,最大为y,那么集群服务节点都用最大的y去调用下游服务,会会导致下游服务奔溃。所以对速度进行均衡的分配,在总速度不大于y的情况下,将业务数据的处理速度均衡分派是有必要的。
在本申请的一些实施例中,本方法还包括如下步骤:
当业务线程总数x为1,且在共享存储服务器中成功注册的服务节点释放或宕机时,通过已启动的其中一个服务节点接替执行被释放或宕机的服务节点的业务线程。当业务线程总数只有1时,只有一个服务节点能抢占到业务线程执行,那么如果有多个服务节点一起启动的话,其他节点的业务线程都在等待,直到占有的那个节点释放,那么当占有的节点宕机的时候,备用的节点就会接替执行,达到了冷热备用的目的。
参照图2至图4,本实施例提供一种多服务节点的线程分配控制方法,本方法包括如下步骤S201至S207,具体的:
假设某业务服务节点集群,持有x个共享资源的业务线程,运行的总速度为y,当前需要启动n个服务节点,共享存储服务器为redis。
步骤S201、服务节点启动;
当n个服务节点同时启动时,会执行如下步骤S2011至S2014:
步骤S2011、注册节点;
每个服务节点到redis中进行注册,并设置自身的第一过期时间为30秒。
参照图2,在redis中存储的注册信息。
步骤S2012、初始化总线程数和总速度;
如图3所示,所有服务节点同时去申请抢占锁,抢到锁的服务节点将服务节点集群的线程总数和运行总速度设置到redis中(服务节点集群的总速度和总线程数,所有服务器节点共享这两值)。其他服务节点没申请到或发现运行总速度和业务线程总数已经被设置了的就直接不做处理。
步骤S2013、执行业务线程;
每个服务节点从redis上获取业务线程总数x,以及获取到节点总数n,所以每个节点启动x/n,若有小数点则向上取整数量的线程,从而保证启动的线程数是冗余的。
步骤S2014、业务线程争抢资源;
参照图4,在每个业务线程执行业务前,将线程自己注册到redis上,并设置线程的第二过期时间为10秒,并限制线程集合数量最多为x。注册到redis失败的线程则只能不停的申请进行注册,不能继续执行业务,直到其他服务节点关停或者宕机导致redis的线程的时间过期或者释放,才能申请得到,达到控制业务线程数量的目的。
步骤S202、续租;
由每个服务节点上的总控线程定时(例如每隔5秒)将该服务节点的第一过期时间更新到redis上,以防服务节点的注册信息过期失效。具体包括如下步骤S2021和S2022:
步骤S2021、服务节点续租;
每个服务节点的总控线程读取redis上是否包含当前的该服务节点,如果不包含,则注册自己上去,如果包含,则更新第一过期时间。
步骤S2022、服务节点的线程续租;
每个服务节点的总控线程读取redis上是否包含当前持有所有的业务线程,如果不包含,则注册上去,如果包含,则更新第二过期时间(注意这里可能会被其他节点抢占,被抢占则不做处理)。
步骤S203、服务节点扩容;
假设在服务节点集群运行的过程中,由于业务量的激增需要扩展水平的服务能力,增加一个服务节点,那么当前需要启动一个相同的服务节点,服务节点数量变成n+1,那么具体包括如下步骤S2031和S2032:
步骤S2031、新节点启动;
新服务节点将自己注册到redis上,并启动x/(n+1)个业务线程来争抢,注册到业务节点上(若有小数点则向上取整)。
步骤S2032、旧节点释放资源;
当总控线程读取到redis上节点数量有变化时,发现x/n<x/(n+1),则多个旧节点释放(x/n)-(x/(n+1))个业务线程,并在redis上注销被释放业务线程的注册。
步骤S204、新节点抢占资源;
新的服务节点在总控线程的定时续租时注册新节点业务线程上去。
步骤S205、服务节点缩容;
假设在服务节点集群运行的过程中,由于业务量和成本的降低,减少一个服务节点,那么当前需要关停一个服务节点,或者某个服务节点因为硬件、网络或者其他原因宕机了,节点数量变成n-1,那么具体包括如下步骤S2051至S2053:
步骤S2051、节点关停;
主动关停:服务节点主动关停时,同时移除自身在redis的服务节点和线程节点注册信息过期被移除;
服务器宕机:由于30秒内没有在redis上续租,该节点在redis的服务节点和线程节点注册信息过期被移除。
步骤S2052、线程启动;
当总控线程读取到redis上节点数量有变化时,发现x/(n-1)>x/n,则多个旧节点启动(x/n-1)-(x/n)个业务线程。
步骤S2053、新线程抢占资源;
多个存活节点的空闲没抢占到资源执行的业务线程在总控线程的定时续租时抢占注册到redis,并开始执行,达到资源自动均衡的目的。
步骤S206、速度控制;
基于以上的线程数量分配,在总控线程续租时,当前可运行的总速度x,总业务线程数量y,和当前节点运行的已注册到redis业务线程数量z;
那么可以调整该服务节点的运行速度为z/y*x,便可根据实际抢占到的业务线程数量分配速度。
步骤S207、服务节点冷热备;
当业务线程总数只有1时,只有一个服务节点能抢占到业务线程执行,那么如果有多个服务节点一起启动的话,其他服务节点的业务线程都在等待,直到占有的那个服务节点释放,那么当占有的服务节点宕机的时候,备用的服务节点就会接替执行,达到了冷热备用的目的。
本方法能够对服务节点的处理线程以及处理速度进行均衡分配,同时保证当多服务节点中某台宕机时,服务节点的处理线程以及处理速度重新分配。均匀分配有限的资源,减少服务器启停的次数,降低了服务器的人工运维成本,以及提升多节点服务的可用性,提高了用户调用服务的用户体验,市场空间大。
在本说明书的描述中,参考术语“一个实施例”、“一些实施例”、“示意性实施例”、“示例”、“具体示例”、或“一些示例”等的描述意指结合该实施例或示例描述的具体特征、结构、材料或者特点包含于本发明的至少一个实施例或示例中。在本说明书中,对上述术语的示意性表述不一定指的是相同的实施例或示例。而且,描述的具体特征、结构、材料或者特点可以在任何的一个或多个实施例或示例中以合适的方式结合。
上面结合附图对本发明实施例作了详细说明,但本发明不限于上述实施例,在所属技术领域普通技术人员所具备的知识范围内,还可以在不脱离本发明宗旨的前提下作出各种变化。
Claims (10)
1.一种多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法包括:
服务节点集群中已启动的每个服务节点分别在共享存储服务器进行注册并设置所述服务节点的第一过期时间;
每个所述服务节点抢占锁,抢占到锁的所述服务节点将所述服务节点集群的业务线程总数x注册在所述共享存储服务器中;
每个所述服务节点分别从所述共享存储服务器中获取所述线程总数x和服务节点总数n,并启动多个业务线程;其中,当x/n为整数,所述服务节点启动的所述多个业务线程为x/n个业务线程,当x/n不为整数,则所述服务节点启动的所述多个业务线程为x/n的向上取整个业务线程;
每个所述服务节点分别申请将对应的所述多个业务线程注册至所述共享存储服务器中,其中,所述共享存储服务器的业务线程的注册数量不超过x个;若所述服务节点的所述多个业务线程注册成功,则在所述共享存储服务器中设置所述多个业务线程的第二过期时间,并执行所述多个业务线程;若所述服务节点的所述多个业务线程注册失败,则持续向所述共享存储服务器申请注册对应的所述多个业务线程,直至存在已成功注册的所述服务节点超出第一过期时间且未更新第一过期时间,或存在已成功注册的所述服务节点的所述多个业务线程超出第二过期时间且未更新第二过期时间,或存在已成功注册的所述服务节点在第二过期时间内释放对应的所述多个业务线程时,才申请注册成功,并设置注册成功的所述多个业务线程的第二过期时间和执行所述多个业务线程。
2.根据权利要求1所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述服务节点通过总控线程在所述共享存储服务器中读取到所述共享存储服务器中存在所述服务节点的注册信息,则更新对应的第一过期时间;否则,则在所述共享存储服务器中进行注册并设置对应的第一过期时间。
3.根据权利要求1所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述服务节点通过总控线程在所述共享存储服务器中读取到所述共享存储服务器中存在所述服务节点的所述多个业务线程的注册信息,则更新对应的第二过期时间;否则,则持续向所述共享存储服务器申请注册对应的所述多个业务线程,直至注册成功。
4.根据权利要求1所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述服务节点集群启动一个新的服务节点时,所述新的服务节点在所述共享存储服务器中进行注册并设置对应的第一过期时间;
所述新的服务节点启动x/(n+1)个业务线程或x/(n+1)向上取整个业务线程,并持续申请将启动的x/(n+1)个业务线程或x/(n+1)向上取整个业务线程注册至所述共享存储服务器中,直至注册成功。
5.根据权利要求4所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述共享存储服务器中的服务节点总数n发生变化,且存在x/n<x/(n+1)时,则多个所述服务节点释放(x/n)-(x/(n+1))个业务线程,并在所述共享存储服务器上注销被释放的业务线程的注册信息。
6.根据权利要求1所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述服务节点集群关停一个服务节点时,在所述共享存储服务器上注销关停的所述服务节点的注册信息和对应的所述多个业务线程的注册信息。
7.根据权利要求6所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当已成功注册的所述服务节点在第一过期时间内未更新第一过期时间,则在所述共享存储服务器上注销所述服务节点的注册信息和对应的所述多个业务线程的注册信息。
8.根据权利要求7所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述共享存储服务器中的服务节点总数n发生变化,且x/(n+1)>x/n时,则多个所述服务节点启动(x/n-1)-(x/n)个业务线程。
9.根据权利要求1至8任一项所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
抢占到锁的所述服务节点将所述服务节点集群的运行总速度y注册在所述共享存储服务器中;
当所述服务节点的总控线程更新所述第一过期时间或所述第二过期时间时,调整运行速度为z/y*x;其中,z表示所述服务节点运行的已注册至所述共享存储服务器中的业务线程的数量。
10.根据权利要求1至8任一项所述的多服务节点的线程分配控制方法,其特征在于,所述多服务节点的线程分配控制方法还包括:
当所述业务线程总数x为1,且在所述共享存储服务器中成功注册的所述服务节点释放或宕机时,通过已启动的其中一个所述服务节点接替执行被释放或宕机的所述服务节点的业务线程。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211240397.2A CN115695334B (zh) | 2022-10-11 | 2022-10-11 | 一种多服务节点的线程分配控制方法 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202211240397.2A CN115695334B (zh) | 2022-10-11 | 2022-10-11 | 一种多服务节点的线程分配控制方法 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN115695334A true CN115695334A (zh) | 2023-02-03 |
CN115695334B CN115695334B (zh) | 2023-06-02 |
Family
ID=85063980
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202211240397.2A Active CN115695334B (zh) | 2022-10-11 | 2022-10-11 | 一种多服务节点的线程分配控制方法 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN115695334B (zh) |
Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050204352A1 (en) * | 2004-01-13 | 2005-09-15 | Hewlett-Packard Development Company, L.P. | Method, system and software for synchronising multiple threads which are using a resource |
WO2018040750A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种配置方法、装置和数据处理服务器 |
CN110058940A (zh) * | 2019-03-08 | 2019-07-26 | 苏宁易购集团股份有限公司 | 一种多线程环境下的数据处理方法及装置 |
WO2022007594A1 (zh) * | 2020-07-08 | 2022-01-13 | 苏宁易购集团股份有限公司 | 分布式任务调度的方法及系统 |
CN114816748A (zh) * | 2022-04-22 | 2022-07-29 | 北京达佳互联信息技术有限公司 | 线程调度方法、装置、电子设备和存储介质 |
-
2022
- 2022-10-11 CN CN202211240397.2A patent/CN115695334B/zh active Active
Patent Citations (5)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20050204352A1 (en) * | 2004-01-13 | 2005-09-15 | Hewlett-Packard Development Company, L.P. | Method, system and software for synchronising multiple threads which are using a resource |
WO2018040750A1 (zh) * | 2016-08-31 | 2018-03-08 | 华为技术有限公司 | 一种配置方法、装置和数据处理服务器 |
CN110058940A (zh) * | 2019-03-08 | 2019-07-26 | 苏宁易购集团股份有限公司 | 一种多线程环境下的数据处理方法及装置 |
WO2022007594A1 (zh) * | 2020-07-08 | 2022-01-13 | 苏宁易购集团股份有限公司 | 分布式任务调度的方法及系统 |
CN114816748A (zh) * | 2022-04-22 | 2022-07-29 | 北京达佳互联信息技术有限公司 | 线程调度方法、装置、电子设备和存储介质 |
Non-Patent Citations (2)
Title |
---|
王磊 等: "基于高并发的分布式系统幂等设计", 计算机测量与控制 * |
陈红洲: "同时多线程处理器资源共享控制策略研究", 中国博士学位论文全文数据库(电子期刊) * |
Also Published As
Publication number | Publication date |
---|---|
CN115695334B (zh) | 2023-06-02 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN112867050B (zh) | 一种upf网元管理方法及系统 | |
CN109302483B (zh) | 一种应用程序的管理方法及系统 | |
CN107066332B (zh) | 分布式系统及其调度方法和调度装置 | |
CN112000445A (zh) | 分布式任务调度的方法及系统 | |
CN109582447B (zh) | 计算资源分配方法、任务处理方法及装置 | |
US8413163B2 (en) | Program control device including per-timeslot switching of thread execution | |
CN109564528B (zh) | 分布式计算中计算资源分配的系统和方法 | |
CN109960591B (zh) | 一种面向租户资源侵占的云应用资源动态调度的方法 | |
WO2021103646A1 (zh) | 一种部署pod的方法及装置 | |
CN113672391B (zh) | 一种基于Kubernetes的并行计算任务调度方法与系统 | |
US11438271B2 (en) | Method, electronic device and computer program product of load balancing | |
CN114138434A (zh) | 一种大数据任务调度系统 | |
CN111611074A (zh) | 一种集群资源的调度方法及装置 | |
WO2020108337A1 (zh) | 一种cpu资源调度方法及电子设备 | |
CN115695334A (zh) | 一种多服务节点的线程分配控制方法 | |
CN111124674A (zh) | 一种硬件资源的管理方法、存储介质及终端 | |
CN113010309B (zh) | 集群资源调度方法、装置、存储介质、设备和程序产品 | |
US20080022287A1 (en) | Method And System For Transferring Budgets In A Technique For Restrained Budget Use | |
CN114116068B (zh) | 服务启动优化方法、装置、电子设备和可读存储介质 | |
CN113342466A (zh) | 一种基于Kubernetes云原生容器可变启动资源限制的方法及其系统 | |
CN115774614A (zh) | 资源调控方法、终端及存储介质 | |
CN113434280A (zh) | 基于时间动态调整调度间隔的方法 | |
CN114598706B (zh) | 基于Serverless函数的存储系统弹性伸缩方法 | |
CN116720179B (zh) | Api接口管理方法、终端设备及计算机可读存储介质 | |
CN114390058B (zh) | 服务管理系统、方法、设备及存储介质 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |