发明内容
本发明提供了一种终端设备日志请求控制方法、服务端和系统,用于解决现有的日志请求控制方式在终端设备持续发起日志请求时,服务端易发生雪崩效应,导致无法提供服务,且固定时长暂停发送请求的方式会存在部分终端设备会长时间无法得到服务的技术问题。
有鉴于此,本发明第一方面提供了一种终端设备日志请求控制方法,包括:
S1、接收终端设备发送的日志请求,其中,日志请求携带未被服务次数,第一次发送日志请求时对应的未被服务次数置1;
S2、判断日志请求是否携带优先服务标记,若是,则执行步骤S3,否则,跳转至步骤S4;
S3、将日志请求加入处理队列,在处理日志请求结束后向终端设备发送应答信息,使得终端设备根据应答信息重置未被服务次数;
S4、从令牌桶中获取令牌,若获取到令牌,则返回步骤S3,若未获取到令牌,则执行步骤S5;
S5、根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,计算动态暂停时长;
S6、判断动态暂停时长是否大于时长阈值,若是,则跳转至步骤S8,否则,执行步骤S7;
S7、向终端设备发送动态暂停时长和添加优先服务标记信息,使得终端设备在日志请求中添加优先服务标记,并在等待动态暂停时长后再重新发起日志请求,返回步骤S1;
S8、向终端设备发送动态暂停时长和未被服务次数加1信息,使得终端设备将未被服务次数加1,并在等待动态暂停时长后再重新发起日志请求,返回步骤S1。
可选地,动态暂停时长的计算公式为:
其中,Y为动态暂停时长,T为初始暂停时长,N为未被服务次数,X为令牌桶控制速率,C为总在线终端设备数量。
可选地,初始暂停时长的计算公式为:
其中,δ为取值范围为2~10的常数。
可选地,时长阈值为1个日志请求发送周期。
可选地,令牌桶根据限流工具类RateLimiter控制令牌速率。
本发明第二方面提供了一种服务端,所述服务端用于执行第一方面任一种所述的终端设备日志请求控制方法。
本发明第三方面提供了一种终端设备日志请求控制系统,包括终端设备和服务端;
服务端用于:
接收终端设备发送的日志请求,其中,日志请求携带未被服务次数,第一次发送日志请求时对应的未被服务次数置1;
判断日志请求是否携带优先服务标记,若是,则将日志请求加入处理队列,在处理日志请求结束后向终端设备发送应答信息,使得终端设备根据应答信息重置未被服务次数,否则,从令牌桶中获取令牌;
若获取到令牌,则将日志请求加入处理队列,在处理日志请求结束后向终端设备发送应答信息,使得终端设备根据应答信息重置未被服务次数;
若未获取到令牌,则根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,计算动态暂停时长;
判断动态暂停时长是否大于时长阈值,若是,则向终端设备发送动态暂停时长和未被服务次数加1信息,否则,向终端设备发送动态暂停时长和添加优先服务标记信息;
终端设备用于:
向服务端发送日志请求,其中,日志请求携带未被服务次数,第一次发送日志请求时对应的未被服务次数置1;
在接收到服务端发送的处理日志请求结束的应答信息后,重置未被服务次数;
在接收到服务端发送的动态暂停时长和添加优先服务标记信息后,在日志请求中添加优先服务标记,并在等待动态暂停时长后再重新发起日志请求;
在接收到服务端发送的动态暂停时长和未被服务次数加1信息后,将未被服务次数加1,并在等待动态暂停时长后再重新发起日志请求。
可选地,动态暂停时长的计算公式为:
其中,Y为动态暂停时长,T为初始暂停时长,N为未被服务次数,X为令牌桶控制速率,C为总在线终端设备数量。
可选地,初始暂停时长的计算公式为:
其中,δ为取值范围为2~10的常数。
可选地,时长阈值为1个日志请求发送周期。
从以上技术方案可以看出,本发明提供的终端设备日志请求控制方法具有以下优点:
本发明提供的终端设备日志请求控制方法,在终端设备发送的日志请求中设置未被服务次数和优先服务标记,使得服务端根据日志请求中的未被服务次数和优先服务标记携带情况确定是直接进入处理队列还是等待队列,能够根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,动态调整设备端暂停时长及服务优先级,能有效的调整物联网终端设备发起日志请求的数量,避免服务发生雪崩效应,又能保证所有设备都能获得服务的机会,确保日志的完整性,解决了现有的日志请求控制方式在终端设备持续发起日志请求时,服务端易发生雪崩效应,导致无法提供服务,且固定时长暂停发送请求的方式会存在部分终端设备会长时间无法得到服务的技术问题。
具体实施方式
为了使本技术领域的人员更好地理解本发明方案,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有做出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
为了便于理解,请参阅图1和图2,本发明中提供了一种终端设备日志请求控制方法的实施例,包括:
步骤101、接收终端设备发送的日志请求,其中,日志请求携带未被服务次数,第一次发送日志请求时对应的未被服务次数置1。
需要说明的是,在终端设备发起日志请求时,将终端设备当前的未被服务次数N放入日志请求中,首次发起日志请求时设定终端设备的未被服务次数N=1。
步骤102、判断日志请求是否携带优先服务标记,若是,则执行步骤103,否则,跳转至步骤104。
需要说明的是,当服务端接收到日志请求时,首先判断日志请求中是否存在优先服务标记,若存在优先服务标记,则对该日志请求进行优先处理,直接进入步骤103,若不存在优先服务标记,则正常对日志请求进行处理,进入步骤104。
步骤103、将日志请求加入处理队列,在处理日志请求结束后向终端设备发送应答信息,使得终端设备根据应答信息重置未被服务次数。
需要说明的是,对于存在优先服务标记的日志请求,则直接进入日志请求的处理序列,将处理结果反馈给终端设备,同时,终端设备在接收到处理结果之后,将未被服务次数N重置为1,继续下一周期的数据发送过程。
步骤104、从令牌桶中获取令牌,若获取到令牌,则返回步骤103,若未获取到令牌,则执行步骤105。
需要说明的是,服务端的令牌桶的发生器按预设速率X往令牌桶中放入令牌,其中,令牌桶根据限流工具类RateLimiter控制令牌速率。若日志请求中不存在优先服务标记,则服务端从令牌桶中获取令牌,如果获取令牌成功,则返回执行步骤103,若获取令牌失败,则执行步骤105。
步骤105、根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,计算动态暂停时长。
需要说明的是,若服务端获取令牌失败,则该日志请求将不在本轮中被处理,此时,需要计算下一次发起该日志请求的等待时长,因此,需要根据令牌桶控制速率X、总在线终端设备数量C、初始暂停时长T和未被服务次数N,来计算动态暂停时长Y。具体地,动态暂停时长的计算公式为:
终端设备首次(N=1)流量控制发生时,动态暂停时长Y需大于1个日志请求发送周期才能使下一个日志请求发送周期得到限制,因此,初始暂停时长的计算公式为:
其中,δ为取值范围为2~10的常数,优选2.5。
步骤106、判断动态暂停时长是否大于时长阈值,若是,则跳转至步骤108,否则,执行步骤107。
步骤107、向终端设备发送动态暂停时长和添加优先服务标记信息,使得终端设备在日志请求中添加优先服务标记,并在等待动态暂停时长后再重新发起日志请求,返回步骤101。
步骤108、向终端设备发送动态暂停时长和未被服务次数加1信息,使得终端设备将未被服务次数加1,并在等待动态暂停时长后再重新发起日志请求,返回步骤101。
需要说明的是,在服务端处理能力一定的条件下,未被服务次数越多,暂停时长越短,重新发起日志请求机会越多,而已获得过服务机会的设备暂停时长更长,重新发起请求机会越少。当动态暂停时长小于或等于指定的时长阈值y(y取值为至少1个日志请求发送周期)时,在此次暂停结束后,终端设备可标记请求优先级,即做优先服务标记,从而直接获得服务机会。本发明实施例的这种动态控制策略能够在有限服务资源条件下,能有效的调整物联网终端设备发起日志请求的数量,避免服务发生雪崩效应,又能保证所有终端设备都有获得服务的机会,确保日志的完整性。
为了对本发明实施例提供的终端设备日志请求控制方法的效果进行更具体的说明,本发明中提供了一个具体的应用例如下:
当有10万在线终端设备,且这些终端设备每分钟发起一次日志请求,而服务端每分钟仅能处理5万个日志请求,则有5万个日志请求被拒绝,此时服务端已满载,下一分钟依然会有10万日志请求发起,则服务器可能会因负载过高无法响应终端设备的日志请求。通过本发明中的控制策略设备动态暂停时长暂停发送日志请求,可避免以上情况的发生。如针对其中不能处理的5万个日志请求设定动态暂停时长为10分钟,即在接下来10分钟内可稳定为5万个终端设备提供服务。10分钟后所有设备再次请求服务,此时流量控制策略再次生效,仍有5万个日志请求不能获得服务,其中包括第一次不能服务的请求,因此在极端的情况下,某些终端设备将长时间无法获得服务。通过本发明提供的方法,可以避免此类问题。当部分请求因流量控制无法获得服务时,会得到一个暂停发起动态暂停时长Y,设初始暂停时长T=2.5×C/N=5分钟,终端设备在第一次请求中的动态暂停时长Y=5分钟×10万/1/5万=10分钟,即该设备会暂停10分钟再发起请求,在第二次请求中的暂停时长Y=5分钟×10万/2/5万=5分钟,而对于第一次已获得服务的设备,其暂停时长为10分钟,,即未获得服务发终端设备的请求会有更多的重试机会,且次数越来越多。假设设置时长阈值y为2分钟,则在5次请求后,终端设备必定可以获得服务机会,避免了极端情况下某些设备长时间无法得到服务的问题。
本发明提供的终端设备日志请求控制方法,在终端设备发送的日志请求中设置未被服务次数和优先服务标记,使得服务端根据日志请求中的未被服务次数和优先服务标记携带情况确定是直接进入处理队列还是等待队列,能够根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,动态调整设备端暂停时长及服务优先级,能有效的调整物联网终端设备发起日志请求的数量,避免服务发生雪崩效应,又能保证所有设备都能获得服务的机会,确保日志的完整性,解决了现有的日志请求控制方式在终端设备持续发起日志请求时,服务端易发生雪崩效应,导致无法提供服务,且固定时长暂停发送请求的方式会存在部分终端设备会长时间无法得到服务的技术问题。
本发明中还提供了一种服务端的实施例,服务端用于执行前述终端设备日志请求控制方法实施例中的终端设备日志请求控制方法。
为了便于理解,请参阅图3,本发明中还提供了一种终端设备日志请求控制系统的实施例,包括终端设备和服务端;
服务端用于:
接收终端设备发送的日志请求,其中,日志请求携带未被服务次数,第一次发送日志请求时对应的未被服务次数置1;
判断日志请求是否携带优先服务标记,若是,则将日志请求加入处理队列,在处理日志请求结束后向终端设备发送应答信息,使得终端设备根据应答信息重置未被服务次数,否则,从令牌桶中获取令牌;
若获取到令牌,则将日志请求加入处理队列,在处理日志请求结束后向终端设备发送应答信息,使得终端设备根据应答信息重置未被服务次数;
若未获取到令牌,则根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,计算动态暂停时长;
判断动态暂停时长是否大于时长阈值,若是,则向终端设备发送动态暂停时长和未被服务次数加1信息,否则,向终端设备发送动态暂停时长和添加优先服务标记信息;
终端设备用于:
向服务端发送日志请求,其中,日志请求携带未被服务次数,第一次发送日志请求时对应的未被服务次数置1;
在接收到服务端发送的处理日志请求结束的应答信息后,重置未被服务次数;
在接收到服务端发送的动态暂停时长和添加优先服务标记信息后,在日志请求中添加优先服务标记,并在等待动态暂停时长后再重新发起日志请求;
在接收到服务端发送的动态暂停时长和未被服务次数加1信息后,将未被服务次数加1,并在等待动态暂停时长后再重新发起日志请求。
动态暂停时长的计算公式为:
其中,Y为动态暂停时长,T为初始暂停时长,N为未被服务次数,X为令牌桶控制速率,C为总在线终端设备数量。
初始暂停时长的计算公式为:
其中,δ为取值范围为2~10的常数。
时长阈值为1个日志请求发送周期。
令牌桶根据限流工具类RateLimiter控制令牌速率。
本发明提供的终端设备日志请求控制系统,在终端设备发送的日志请求中设置未被服务次数和优先服务标记,使得服务端根据日志请求中的未被服务次数和优先服务标记携带情况确定是直接进入处理队列还是等待队列,能够根据令牌桶控制速率、总在线终端设备数量、初始暂停时长和未被服务次数,动态调整设备端暂停时长及服务优先级,能有效的调整物联网终端设备发起日志请求的数量,避免服务发生雪崩效应,又能保证所有设备都能获得服务的机会,确保日志的完整性,解决了现有的日志请求控制方式在终端设备持续发起日志请求时,服务端易发生雪崩效应,导致无法提供服务,且固定时长暂停发送请求的方式会存在部分终端设备会长时间无法得到服务的技术问题。
本发明实施例提供的终端设备日志请求控制系统,用于执行前述终端设备日志请求控制方法实施例中的终端设备日志请求控制方法,其原理与前述终端设备日志请求控制方法实施例中的终端设备日志请求控制方法相同,在此不再进行赘述。
以上所述,以上实施例仅用以说明本发明的技术方案,而非对其限制;尽管参照前述实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本发明各实施例技术方案的精神和范围。