本发明涉及一种客户端数量控制方法及装置。
背景技术:
目前基于C/S、B/S的应用和解决方案非常的多,客户端连接到服务器后,服务器为客户端提供服务。这时我们经常会遇到一个问题,就是当客户端数量越来越多,服务器的实际性能已经不能支撑这么多客户端时,客户端就会出现各种响应超时、操作卡顿、用户体验差等等问题。在众多用户体验要求至上的应用场合(如实时点播),这是不能接受的。
因此若能在服务器数量和性能有限的情况下,动态控制和调整客户端数量,要求在最大限度利用系统性能的情况下,仍然可以始终保证已接入的所有客户端都有最佳的用户体验,是目前业内的追求目标。
2011-07-27公开的,公开号为102137091A的中国发明公开了一种过负荷控制方法,本发明实施例还提供相应的装置、系统及客户端。本发明技术方案通过接收客户端发送的资源请求消息,判断与该资源类型对应的当前最大允许请求数与当前的累计分配资源数量的差值是否为0,若为0,则向客户端发送分配失败消息;若不为0,再判断该差值是否大于等于每次最大申请数,若是,则向客户端发送携带资源类型和资源数量的资源分配消息,其中资源数量等于每次最大申请数;若否,则向客户端发送携带资源类型和资源数量的资源分配消息,其中资源数量等于差值。该发明与其它现有技术一样,都是规定接入客户端的定值,无法根据服务器性能的实际使用情况进行调整。
技术实现要素:
本发明要解决的技术问题,在于提供一种服务器自动控制可负载客户端数量的方法及装置,在服务器数量和性能有限的情况下,可以动态控制和调整客户端数量,在始终保证所有客户端最佳用户体验的前提下,仍然能将服务器的性能资源用到极限。
本发明方法是这样实现的:一种服务器自动控制可负载客户端数量的方法,包括如下步骤:
S1、系统预设若干个性能监测点,并对这些监测点进行实时监控;
S2、客户端需要使用服务器提供的服务时,向服务器端发送接入请求;
S3、服务器根据客户端请求的业务类型,粗略计算新请求需要的性能占用情况;
S4、服务器根据性能监测数据进行判断,如果当前系统剩余性能不足以保证在接纳该新客户端后所有客户端正常使用,则拒绝新请求的接入;否则接纳该新客户端;如果未人为限定接入客户端数量最大值,则系统的性能将用到极限。
进一步地,本发明方法还包括:
S5、在确认了允许新客户端接入后,服务器为新客户端分配授权令牌,并将该客户端加入到定时监控列表中;
S6、客户端根据获得的授权令牌,使用服务器提供的在线服务,服务器必须判断每次的请求是否合法。
S7、当客户端不再需要服务器提供服务时,主动向服务器发送退出请求;服务器从在线客户端列表中移除该客户端,并回收对应的授权令牌,减少在线客户端数量。
进一步地,所述S4中,如果判断结果为当前系统剩余性能足以保证在接纳该新客户端后所有客户端正常使用时,还继续判断当前在线客户端数量是否已经达到管理员预设最大值,如果没有达到则接纳该新客户端,进行下一步,如果已经达到,仍拒绝,并返回错误原因,其中,预设最大值需小于满负载客户端数量;且步骤S6之后还包括:
进一步地,本发明方法中,服务器定时向监控列表中的所有客户端发送存活检测包,以检测客户端的实际在线情况,没有响应的客户端将视为异常,服务器自动回收对应的授权令牌,并相应减少在线客户端数量;
进一步地,所述步骤S1中的性能监测点主要包括磁盘IO监测点、网络带宽监测点、内存检测点和CPU监测点。
进一步地,所述S3中新请求需要的性能占用情况的计算是主要根据客户端请求服务的类型,大致计算该请求需要占用的系统性能情况(包括磁盘IO占用、网卡带宽占用,内存占用,CPU占用等),以及大致需要的服务时长。
本发明装置是这样实现的:一种服务器自动控制可负载客户端数量的装置,包括:
实时监测模块,用于对服务器预设的若干个性能监测点进行实时监控;
计算模块,当客户端需要使用服务器提供的服务而向服务器端发送接入请求时,用于服务器根据客户端请求的业务类型,计算新请求需要的性能占用情况;
判断模块,用于服务器根据性能监测数据进行判断,如果当前系统剩余性能不足以保证在接纳该新客户端后所有客户端正常使用,则拒绝新请求的接入;否则接纳该新客户端。
进一步的,本发明装置还包括:
分配授权令牌模块,在确认了允许新客户端接入后,用于服务器为新客户端分配授权令牌,并将该客户端加入到定时监控列表中;
校验授权令牌模块,用于客户端根据获得的授权令牌,向服务器发送授权令牌进行校验,服务器判断授权令牌是否合法,若合法,则响应该客户端请求,反之,则拒绝客户端请求。
进一步的,本发明装置还包括
移除客户端模块,当客户端不再需要服务器提供服务并主动向服务器发送退出请求时,用于服务器从在线客户端列表中移除该客户端,并回收对应的授权令牌,减少在线客户端数量。
进一步的,本发明装置还包括:
存活检测模块,用于服务器定时向监控列表中的所有客户端发送存活检测包,以检测客户端的实际在线情况,没有响应的客户端将视为异常,服务器自动回收对应的授权令牌,并相应减少在线客户端数量;
进一步的,本发明装置中,所述判断模块在判断结果为当前服务器剩余性能足以保证在接纳该新客户端后所有客户端正常使用时,还继续判断当前在线客户端数量是否已经达到预设最大值,如果没有达到则接纳该新客户端,如果已经达到,仍拒绝,并返回错误原因,其中,预设最大值需小于满负载客户端数量。
进一步的,本发明装置中,所述性能监测点包括以下的一种或两种以上:磁盘IO监测点、网卡吞吐量监测点、内存检测点或CPU监测点。
进一步的,本发明装置中,所述新请求需要的性能占用情况的计算是主要根据客户端请求服务的类型,计算该请求需要占用的系统性能情况以及大致需要的服务时长。
本发明具有如下优点:
1、本发明方法或装置可实现对系统性能占用情况的实时监控,以确定当前服务器的剩余性能,对新请求需要的性能占用情况,确定当前的剩余性能是否可以满足新请求的要求,然后再确定是否接入新客户端,从而实现智能且精确控制客户端的接入数量,以在保证所有客户端的正常用户体验的前提下,将服务器系统性能用到极致;
2、结合手动控制客户端接入数量的方式,满足不同业务需求;
3、对所有客户端可进行统一管理,并实时监控所有客户端的在线状态。
具体实施方式
本发明的出发点就是在始终保证所有客户端最佳用户体验的前提下,仍然能将服务器的性能资源用到极限。为此,可先在系统上预设了若干个性能监测点,并对这些性能监测点进行实时的监控。当有新客户端请求接入服务器时,服务器自动根据请求的服务类型,结合当前系统的实际性能剩余情况,通用估算,判断当前系统剩余性能是否足以保证新接入客户端和所有在线客户端的正常使用,如果不能,则必须对新接入请求给与拒绝。对于已被允许接入的新客户端,服务器将为其分配授权令牌。服务器只为具有合法令牌的客户端提供服务,同时服务器将对已经授权的所有在线客户端进行实时状态的监控和统一管理。
本发明的服务器自动控制可负载客户端数量的方法的一较佳实施例,具体包括如下步骤:
S1、服务器预设若干个性能监测点,并对这些监测点进行实时监控;所述性能监测点是指磁盘IO监测点、网络带宽监测点、内存检测点和CPU监测点,通过监测这四个监测点,就可以对当前服务器的性能剩余情况有一个直观的了解。在不同的应用场合,需要关注的性能监测点可能不同,这个需要根据实际的应用情况进行分析,并非每种场合这四个监测点都要监测。
通过上述的实时监控操作,获得服务器当前剩余性能情况,为判定是否接入新客户端做好准备。
S2、客户端需要使用服务器提供的服务时,向服务器端发送接入请求;
S3、服务器根据客户端请求的业务类型,粗略计算新请求需要的性能占用情况;计算是主要根据客户端请求服务的类型、服务文件以及服务时长。例如,若服务器是点播服务器,主要关注磁盘IO剩余和网络带宽剩余这两个性能监测点,看是否可以满足客户端新请求的性能占用。
例如:当服务器是一个点播服务器,那么我们就可以根据点播某个节目文件的请求,通过节目文件的文件大小和播放时长等数据,从而精确算出本次点播所需要的网络带宽要求,磁盘IO占用等。
S4、服务器根据性能监测数据进行判断,如果当前系统剩余性能不足以保证在接纳该新客户端后所有客户端正常使用,则拒绝新请求的接入。在这种情况下,未人为限定接入客户端数量最大值,服务器的性能将用到极限。
在另一些实施例中,在步骤S4的基础上,即使当前系统剩余性能足以保证在接纳该新客户端后所有客户端正常使用,仍需继续判断当前在线客户端数量是否已经达到预设最大值,如果没有达到则接纳该新客户端,进行下一步,如果已经达到,仍拒绝,并返回错误原因,其中,预设最大值需小于满负载客户端数量。
所以,在实际应用中,可以只根据服务器的剩余性能及客户端新请求需要的性能占用情况进行判定是否接入新的客户端,还可以进一步结合接入客户端的预设最大值,进行综合判定是否接入新的客户端。
另外,允许管理员预设最大客户端接入数量,是因为在有些情况下,用户购买的服务器负载的客户端数量有限;为了有效控制服务器的使用权限,需对服务器负载的最大客户端数量进行限制,即使服务器的还有性能空间。因此可以通过手动控制方式,达到控制客户端数量的目的。
S5、在确认了允许新客户端接入后,服务器为新客户端分配授权令牌,并将该客户端加入到定时监控列表中;
S6、客户端根据获得的授权令牌,使用服务器提供的在线服务,服务器必须判断每次的请求是否合法;
通过该S5和S6两个步骤,即可对客户端合法性进行验证,从而对非法客户端起到限制作用。
S7、当客户端不再需要服务器提供服务时,主动向服务器发送退出请求;服务器从在线客户端列表中移除该客户端,并回收对应的授权令牌,减少在线客户端数量。
上述过程中,服务器会定时向监控列表中的所有客户端发送存活检测包,以检测客户端的实际在线情况,没有响应的客户端将视为异常,服务器自动回收对应的授权令牌,并相应减少在线客户端数量;通过这种存活异常检测机制或步骤S7的主动登出处理,可使服务器负载的客户端数量准确,与实际情况相符,避免影响新客户端的接入。
本发明还提供一种服务器自动控制可负载客户端数量的装置,其包括:
实时监测模块,用于对服务器预设的若干个性能监测点进行实时监控;所述性能监测点包括以下的一种或两种以上:磁盘IO监测点、网卡吞吐量监测点、内存检测点或CPU监测点。
计算模块,当客户端需要使用服务器提供的服务而向服务器端发送接入请求时,用于服务器根据客户端请求的业务类型,计算新请求需要的性能占用情况;该计算是主要根据客户端请求服务的类型,计算该请求需要占用的系统性能情况以及大致需要的服务时长。
判断模块,用于服务器根据性能监测数据进行判断,如果当前系统剩余性能不足以保证在接纳该新客户端后所有客户端正常使用,则拒绝新请求的接入;否则接纳该新客户端。所述判断模块在判断结果为当前服务器剩余性能足以保证在接纳该新客户端后所有客户端正常使用时,还继续判断当前在线客户端数量是否已经达到预设最大值,如果没有达到则接纳该新客户端,如果已经达到,仍拒绝,并返回错误原因,其中,预设最大值需小于满负载客户端数量。
分配授权令牌模块,在确认了允许新客户端接入后,用于服务器为新客户端分配授权令牌,并将该客户端加入到定时监控列表中;
校验授权令牌模块,用于客户端根据获得的授权令牌,向服务器发送授权令牌进行校验,服务器判断授权令牌是否合法,若合法,则响应该客户端请求,反之,则拒绝客户端请求。
移除客户端模块,当客户端不再需要服务器提供服务并主动向服务器发送退出请求时,用于服务器从在线客户端列表中移除该客户端,并回收对应的授权令牌,减少在线客户端数量。
存活检测模块,用于服务器定时向监控列表中的所有客户端发送存活检测包,以检测客户端的实际在线情况,没有响应的客户端将视为异常,服务器自动回收对应的授权令牌,并相应减少在线客户端数量。
虽然以上描述了本发明的具体实施方式,但是熟悉本技术领域的技术人员应当理解,我们所描述的具体的实施例只是说明性的,而不是用于对本发明的范围的限定,熟悉本领域的技术人员在依照本发明的精神所作的等效的修饰以及变化,都应当涵盖在本发明的权利要求所保护的范围内。