新加入负载节点分流的方法、存储介质与流程

文档序号:19124194发布日期:2019-11-13 01:57阅读:498来源:国知局
新加入负载节点分流的方法、存储介质与流程

本发明涉及分布式节点领域,具体涉及新加入负载节点分流的方法、存储介质。



背景技术:

在很多项目中,因为数据量大的情况很多,所以现在很多的系统或者软件中都有使用分布式部署的方式来进行项目的部署或者系统的部署。其中,需要进行分布式部署的软件,最经常使用的就是集群方式进行部署,集群内部实现多个的服务节点,每个服务节点均提供同样的功能,而外部有一个统一的流量入口,通过一定的策略方式来实现流量的分流,比如说某个请求这次到a节点,下次根据一定的规则就到b节点。

在这种情况下,如果是服务节点不够时,就需要新增加服务节点来提供更多的流量吞吐。一般每个集群中都有一个中心节点功能,当一个新的服务节点加入后,都会向这个中心节点进行注册,提供自身的相关信息,当后续的请求来时,中心节点就可以通过路由策略发送请求到这个新节点上了。

此时,旧有方式中一般采用两种策略:(1)轮询,每一个节点轮流发送请求。(2)权重,根据配置文件设置好每一个节点的权重数值,根据权重进行请求的发送。采用轮询方式会导致请求都平均分配到各个节点上,而新加入的节点所承担的流量始终低于旧有的节点,从而导致各个节点请求分配不均衡;而权重方式,虽然可以在短期内使新的节点达到均衡,但是,后续还需要经常修改权重方式,不太智能,同时,如果新加入节点权重设置过大,则可能直接导致新加入的节点在短期之内,会因为短期负载过大而崩溃,导致服务不可用。

因此,有必要提供一种新的分流方式,能够针对新加入节点后的情况,尽量使各个服务节点的负载相对均衡,从而避免短期负载压力过大的问题出现。



技术实现要素:

本发明所要解决的技术问题是:提供一种新加入负载节点分流的方法、存储介质,能够使各个服务节点的负载相对均衡,从而提高集群的可用性。

为了解决上述技术问题,本发明采用的技术方案为:

一种新加入负载节点分流的方法,包括:

各节点在周期性发送给中心节点的心跳包中附上自身服务器的磁盘使用率;

以预设速度缓慢写入数据至新加入节点,直至新加入节点对应的磁盘使用率达到第一预设值;

所述新加入节点对应的磁盘使用率达到第一预设值后,依据公式1/总比例份数*最大比例计算分配至所述新加入节点的流量。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机可读程序,所述程序在被处理器执行时,能够实现上述一种新加入负载节点分流的方法所包含的步骤。

本发明的有益效果在于:中心节点能够掌握各个节点的磁盘使用率,在加入新节点时,先以缓慢写入数据方式处理请求,有效防止短期内写入多大数据量而导致负载压力过大崩溃;而在新节点的磁盘使用率达到第一预设值时,依据公式1/总比例份数*最大比例重新计算分配给新节点的流量,即采用最大比例方式进行流量分配,以此缓慢地提高新节点的磁盘使用率,提高系统的流量吞吐能力;同时又能使各个节点的负载相对均衡,整体上提高集群的可用性。

附图说明

图1为本发明实施例一种新加入负载节点分流的方法的流程示意图;

图2为本发明实施例一的新加入负载节点分流的方法的流程示意图。

具体实施方式

为详细说明本发明的技术内容、所实现目的及效果,以下结合实施方式并配合附图予以说明。

本发明最关键的构思在于:新节点刚加入时,以缓慢写入数据方式处理请求,防止短期内负载压力过大而崩溃;在新节点的磁盘使用率达到第一预设值时,采用最大比例方式进行流量分配,缓慢地提高新节点的磁盘使用率。

请参照图1,本发明提供一种新加入负载节点分流的方法,包括:

各节点在周期性发送给中心节点的心跳包中附上自身服务器的磁盘使用率;

以预设速度缓慢写入数据至新加入节点,直至新加入节点对应的磁盘使用率达到第一预设值;

所述新加入节点对应的磁盘使用率达到第一预设值后,依据公式1/总比例份数*最大比例计算分配至所述新加入节点的流量。

进一步地,所述以预设速度缓慢写入数据至新加入节点,具体为:

依据所述第一预设值分配相应比例的流量至新加入节点,并以预设速度缓慢写入数据至新加入节点。

由上述描述可知,将第一预设值作为新节点刚加入时的流量分配标准,具备合理性,能够确保所分配的流量适中,不至于过大,支持缓慢写入而不影响请求处理效率。

进一步地,所述依据公式1/总比例份数*最大比例计算分配至所述新加入节点的流量,之后,还包括:

剩余流量采用轮询方式平均分配至其他节点中。

由上述描述可知,系统中原有的其他节点,仍然采用现有的流量分配方式,而无需改变,能降低实现难度,提高实施的简便性。

进一步地,当中心节点判定各个节点自身服务器的磁盘使用率之间的差距在第二预设值之内时,执行所述剩余流量采用轮询方式平均分配至其他节点中的步骤。

由上述描述可知,在系统内各个节点的磁盘使用率都相当的时候,直接采用现有的流量分配方式进行分配,能实现系统内各个节点的负载相对均衡。

进一步地,还包括:

所述新加入节点加入分布式系统后,获取自身服务器的资源信息,所述资源信息包括cpu使用率、内存使用率以及磁盘使用率;

新加入节点向中心节点注册时,同时发送所述资源信息。

由上述描述可知,新节点在注册时需要上报自身服务器的资源信息,以便中心节点据此进行更准确的流量分配。

进一步地,所述第一预设值为3-10%。

由上述描述可知,该数字设置合理,具备较高可行性。

本发明提供的另一个技术方案为:

一种计算机可读存储介质,其上存储有计算机可读程序,所述程序在被处理器执行时,能够实现上述各种新加入负载节点分流的方法所包含的步骤。

从上述描述可知,对应本领域普通技术人员可以理解实现上述技术方案中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来实现的,所述的程序可存储于一计算机可读取的存储介质中,该程序在执行时,可包括如上述各方法的流程。同时,上述各个流程在执行后,同样能实现对应的方法所具备的有益效果。

其中,所述的存储介质可以是磁盘、光碟、只读存储记忆体(read-onlymemory,rom)或随机存储记忆体(randomaccessmemory,ram)等。

实施例一

请参照图2,本实施例针对分布式系统新加入节点的情况,提供一种新加入负载节点的分流方法,实现系统内各节点负载相对均衡,提高集群可用性。本实施例适用于mongo或者cassandra或者其他数据库存储这样的软件,其进行集群部署的时候,均会部署多个的分布式节点。

本实施例具体包括以下步骤:

s1:新节点加入集群系统后,会向集群的中心节点进行注册,提供自身的相关信息,所述信息包括自身服务器名称、内网ip以及端口等其他配置信息,注册后,新节点将与中心节点建立关联,中心节点便可据此发送请求到这个新节点;

特别的,在本实施例中,所述信息还包括资源信息,所述资源信息包括新节点自身系统的cpu使用率、内存使用率以及磁盘使用率。对应的,集群系统中的各个节点将具备能够获取自身服务器相关资源信息的能力。

s2:集群系统中的各个节点将通过与中心节点关联后建立的通信通道,将定时发送心跳包给中心节点,以确认各个节点是否存活,即是否能够正常提供服务。

特别的,在本实施例中,各个节点将在每一次的心跳包中附上自身服务器的资源信息,可选的,只需附上磁盘使用率。

s3:中心节点将收集各个节点定时发送过来的心跳包,监控各个节点的磁盘使用率;

s4:依据预设的路由策略进行请求的路由分配。

具体而言,当集群系统中自由一个节点时,所有请求信息都发送给该节点;

当大于一个节点时,则依据磁盘使用率比例进行分配,下面,将展开进行详细说明:

针对新加入集群系统的节点,此时,新节点的磁盘使用率一般为0,低于第一预设值,因此采用缓慢写入数据方式,以预设速度缓慢写入数据至新加入节点;所述第一预设值,可选为3-10%,优选为5%。采用缓慢写入数据的方式,能防止短期内写入过大数据量而导致节点短期负载过大而崩溃,导致服务不可用。

优选地,在新节点的磁盘使用率到达第一预设值之前,依据所述第一预设值来分配相应比例的流量至新加入节点,比如,按照配置好的5%的比例分流请求。比如,当前系统中有2个节点:a和b,对应的平均磁盘使用率均为50%;之后又新增加了一个节点c;此时,节点c的使用率为0;则系统判定节点c的使用率低于预设的5%,采用缓慢写入数据的方式,一段时间之内发送一些请求给节点c。

而当新节点对应的磁盘使用率达到预设值以后,则依据公式1/总比例份数*最大比例来计算之后要分配至所述新加入节点的流量。即采用最大比例的方式来重新分流。比如,上述的节点a:b:c的磁盘使用率比例为60:50:5,此时,新接待你c的资源占用率已超过5%,则所述比例60:50:5化简为11:10:1,然后以1/22*11这样的流量比例进行新节点c流量的分配,即依据最大比例(11)的数据为流量比例,以使得流量导向节点c,以此慢慢地让节点c的资源提高,和已有节点a和b的资源占用比例慢慢地接近,最后达到一个平衡。

针对剩余的流量,可选地,采用轮询方式平均写入其他节点中。当然,也可以使用其他方式进行分配。

优选地,当中心节点判定各个节点自身服务器的磁盘使用率之间的差距在第二预设值之内时,再采用轮询方式平均分配系统所有流量至各个节点。其中,第二预设值优选与第一预设值相同,即5%。

通过上述针对新节点的分流策略与轮询策略的结合,实现了新加入节点的资源占用率与其他节点相当以后,再使用均分方式分配流量,从而保证系统内各个节点的负载相对均衡。

本实施例实现了系统中各个节点的负载相对均衡,且在新节点加入后,既不会出现短期负载压力多大的问题,也不会破坏系统的负载均衡,而是能重新达到负载均衡,以显著提高集群的可用性。

实施例二

本实施例对应实施例一,提供一种计算机可读存储介质,其上存储有计算机可读程序,所述程序在被处理器执行时,能够实现上述实施例一所述的一种新加入负载节点分流的方法所包含的步骤,具体的步骤内容在此不进行复述,详情请参阅实施例一的记载。

综上所述,本发明提供的一种新加入负载节点分流的方法、存储介质,不仅能克服新节点短期负载压力过大而崩溃的问题;而且能在新节点加入后尽快达到系统各节点的负载相对均衡,从而显著提高集群的可用性;进一步地,还具备实用性高,实现难度低等优点。

以上所述仅为本发明的实施例,并非因此限制本发明的专利范围,凡是利用本发明说明书及附图内容所作的等同变换,或直接或间接运用在相关的技术领域,均同理包括在本发明的专利保护范围内。

当前第1页1 2 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1