发明内容
为克服相关技术中存在的问题,本说明书提供了控制异步请求的方法、装置及设备。
根据本公开实施例的第一方面,提供一种控制异步请求的方法,所述方法包括:
获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
可选的,所述指标数据包括CPU当前使用率、当前在规定时间内处理完请求的次数、当前在规定时间内处理完事务的次数中的一种或多种。
可选的,所述控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求之前,还包括:确定请求消费端的资源满足预设资源空闲条件。
可选的,预设资源空闲条件包括以下一种或多种条件:
当前在规定时间内处理完请求的次数小于请求消费端在规定时间内处理完请求的次数峰值;
当前在规定时间内处理完事务的次数小于请求消费端在规定时间内处理完事务的次数峰值。
可选的,所述消费速度基于请求消费端在规定时间内处理完请求的次数峰值、与当前在规定时间内处理完请求的次数的差值获得,或,所述消费速度基于请求消费端在规定时间内处理完事务的次数峰值、与当前在规定时间内处理完事务的次数的差值获得。
可选的,所述控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求,包括:
通知所述请求消费端按所确定的消费速度从所述消息存储端中拉取异步请求并处理;或,
通知所述消息存储端以所确定的消费速度向请求消费端下发异步请求,以供请求消费端及时处理所接收的异步请求。
可选的,所述消息存储端至少包括两种消息队列,所述方法还包括:
通知请求生产端按异步请求的优先级将不同优先级的异步请求存放在不同的消息队列中,其中,优先级高的消息队列中异步请求的消费速度,大于优先级低的消息队列中异步请求的消费速度。
可选的,所述消息存储端包括及时处理消息队列和调速处理消息队列,所述通知请求生产端按异步请求的优先级将不同优先级的异步请求存放在不同的消息队列中,包括:
在预设流量高峰期达到之前,通知请求生成端将高优先级的异步请求发送至及时处理消息队列,将低优先级的异步请求发送至调速处理消息队列,及时处理消息队列中的异步请求被实时处理,调速处理消息队列中的异步请求被暂停处理。
可选的,在预设流量高峰期期间,所述调速处理消息队列中的异步请求按所确定的消费速度被处理,所确定的消费速度基于预设流量高峰期期间的指标数据确定。
可选的,所述方法还包括:
在预设流量高峰期结束时,通知请求生成端将低优先级的异步请求发送至及时处理消息队列,调速处理消息队列中未处理的异步请求被暂停处理。
可选的,在预设流量高峰期结束后每间隔预设时间更新一次消费速度,所述调速处理消息队列中的异步请求按所更新的消费速度被处理,直至调速处理消息队列中的异步请求全部被处理。
根据本公开实施例的第二方面,提供一种控制异步请求的装置,所述装置包括:
数据采集模块,用于:获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
调度决策模块,用于:至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
处理模块,用于:控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
可选的,所述指标数据包括CPU当前使用率、当前在规定时间内处理完请求的次数、当前在规定时间内处理完事务的次数中的一种或多种。
可选的,所述调度决策模块,具体用于:确定请求消费端的资源满足预设资源空闲条件,至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度。
可选的,预设资源空闲条件包括以下一种或多种条件:
当前在规定时间内处理完请求的次数小于请求消费端在规定时间内处理完请求的次数峰值;
当前在规定时间内处理完事务的次数小于请求消费端在规定时间内处理完事务的次数峰值。
可选的,所述消费速度基于请求消费端在规定时间内处理完请求的次数峰值、与当前在规定时间内处理完请求的次数的差值获得,或,所述消费速度基于请求消费端在规定时间内处理完事务的次数峰值、与当前在规定时间内处理完事务的次数的差值获得。
可选的,所述处理模块具体用于:
通知所述请求消费端按所确定的消费速度从所述消息存储端中拉取异步请求并处理;或,
通知所述消息存储端以所确定的消费速度向请求消费端下发异步请求,以供请求消费端及时处理所接收的异步请求。
可选的,所述消息存储端至少包括两种消息队列,所述处理模块还用于:
通知请求生产端按异步请求的优先级将不同优先级的异步请求存放在不同的消息队列中,其中,优先级高的消息队列中异步请求的消费速度,大于优先级低的消息队列中异步请求的消费速度。
可选的,所述消息存储端包括及时处理消息队列和调速处理消息队列,所述处理模块还用于:
在预设流量高峰期达到之前,通知请求生成端将高优先级的异步请求发送至及时处理消息队列,将低优先级的异步请求发送至调速处理消息队列,及时处理消息队列中的异步请求被实时处理,调速处理消息队列中的异步请求被暂停处理。
可选的,在预设流量高峰期期间,所述调速处理消息队列中的异步请求按所确定的消费速度被处理,所确定的消费速度基于预设流量高峰期期间的指标数据确定。
可选的,所述处理模块还用于:
在预设流量高峰期结束时,通知请求生成端将低优先级的异步请求发送至及时处理消息队列,调速处理消息队列中未处理的异步请求被暂停处理。
可选的,在预设流量高峰期结束后每间隔预设时间更新一次消费速度,所述调速处理消息队列中的异步请求按所更新的消费速度被处理,直至调速处理消息队列中的异步请求全部被处理。
根据本公开实施例的第三方面,提供一种计算机设备,包括:
处理器;
用于存储处理器可执行指令的存储器;
其中,所述处理器被配置为:
获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
本说明书的实施例提供的技术方案可以包括以下有益效果:
本说明书实施例,获取用于表示请求消费端当前资源利用率的指标数据,并至少根据指标数据动态确定对消息存储端中异步请求进行处理的消费速度,以控制请求消费端以所确定的消费速度处理消息存储端中的异步请求,保证最大化资源利用率、且异步请求最小延迟被处理,从而避免由于异步请求延迟处理带来的风险。
应当理解的是,以上的一般描述和后文的细节描述仅是示例性和解释性的,并不能限制本说明书。
具体实施方式
这里将详细地对示例性实施例进行说明,其示例表示在附图中。下面的描述涉及附图时,除非另有表示,不同附图中的相同数字表示相同或相似的要素。以下示例性实施例中所描述的实施方式并不代表与本说明书相一致的所有实施方式。相反,它们仅是与如所附权利要求书中所详述的、本说明书的一些方面相一致的装置和方法的例子。
在本说明书使用的术语是仅仅出于描述特定实施例的目的,而非旨在限制本说明书。在本说明书和所附权利要求书中所使用的单数形式的“一种”、“所述”和“该”也旨在包括多数形式,除非上下文清楚地表示其他含义。还应当理解,本文中使用的术语“和/或”是指并包含一个或多个相关联的列出项目的任何或所有可能组合。
应当理解,尽管在本说明书可能采用术语第一、第二、第三等来描述各种信息,但这些信息不应限于这些术语。这些术语仅用来将同一类型的信息彼此区分开。例如,在不脱离本说明书范围的情况下,第一信息也可以被称为第二信息,类似地,第二信息也可以被称为第一信息。取决于语境,如在此所使用的词语“如果”可以被解释成为“在……时”或“当……时”或“响应于确定”。
实际应用中,经常采用包括同步请求方式和异步请求方式的请求处理方式处理请求,或者纯异步请求方式处理请求。如图1所示,是本说明书根据一示例性实施例示出的一种生产消费模型示意图。在该示例中,请求生产端可以是异步请求消息的发送方,请求消费端可以是异步请求消息的处理方,消息存储端是请求生产端和请求消费端的桥梁,可以存储请求生产端发出的请求。请求生产端可以生成异步请求到消息存储端,请求消费端可以从消息存储端拉取请求以进行处理。虽然不要求异步请求被及时处理,但很多场景下延迟过久时间处理异步请求可能造成影响。但在遇到流量高峰期时,如果同步请求和异步请求都被实时处理,对硬件设备要求极大,通过提升硬件资源以满足流量高峰期时同步请求和异步请求都被实时处理,会增大设备成本。以下以互联网的风险监控识别场景为例,对本说明书所面临的问题进行示例说明。可以理解的是,本说明书实施例可以应用的场景可以是:异步请求不要求被实时处理、但延迟过长时间处理会造成影响的场景,以下只是以互联网的风险监控识别场景为例进行说明。
随着互联网技术的飞速发展,越来越多的用户通过互联网平台执行各种与互联网相关联的业务,例如:网上支付业务、网上充值业务等等。随着用户对互联网平台上业务需求的不断增加,互联网平台在给人们的生产生活带来便利的同时,也带来了一定的风险。例如:用户的账户信息被非法用户盗取、用户的银行账号被非法用户窃取、非法用户冒充其他用户的身份进行欺诈等等,这些使得互联网平台中业务执行的安全性降低。为了提高互联网平台的安全性,提出建立互联网的风险监控识别平台,利用风险监控识别平台对用户在互联网平台上的用户行为进行监控,通过监控及时发现非法用户的非法行为。为了精准刻画用户行为并实现风险拦截,在风控系统中对用户的行为数据分为同步请求和异步请求。同步请求可以是由用户操作触发、用于对用户的实际操作进行风险实时拦截、且对操作结果产生实时影响的请求行为。如用户支付时如果被判定有风险,那么将中断用户的操作行为,支付将不会成功。异步请求可以是用户操作行为成功后发出的一次请求,该请求的目的主要用于风控行为累计,而不进行风险的实时拦截,为用户未来的行为风险分析提供参考。如用户支付成功后会发出的一个异步消息,风险监控系统可以对该笔行为做分析和累计。其中同步请求要实时返回,异步请求则可以准时处理,甚至可以延迟一断时间处理。用户一次同步请求的风险监控将会依赖于用户历史上一段时间内所有异步请求分析的结果,但如果用户的异步消息处理延迟时间较长,则会影响同步请求风险监控的结果,可能出现风险漏过的情况。但由于机器、存储等系统资源有限,当用户请求量级发生飙涨时,如何保证同异步请求都能被完全处理,对于风险防控是及其重要的。但如果同步请求和异步请求在流量高峰期都被实时处理对硬件设备要求极大。
鉴于此,为了最大化利用系统资源、且尽可能降低异步请求延迟处理带来的风险,本说明书实施例提出一种控制异步请求的方案,基于消费端当前资源利用率对异步请求的消费速度进行动态控制,保证最大化资源利用率、且异步请求最小延迟被处理,从而避免由于异步请求延迟处理带来的风险。特别是针对电商秒杀类活动,流量峰值往往持续时间很短但峰值请求量极大,如果整个系统资源都按照峰值来准备必然设备利用率不高,本说明书实施例提出了动态控制消费速度的方案,能够自动的错峰填谷提升资源利用率。另外,对于极端情况也能够动态感知系统瓶颈,限制异步请求消费速度,保证系统稳定。
以下结合附图对本说明书实施例进行示例说明。
如图2所示,是本说明书根据一示例性实施例示出的一种控制异步请求的方法的流程图,所述方法包括:
在步骤202中,获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
在步骤204中,根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
在步骤206中,控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
本说明书实施例可以应用于请求生产端、或消息存储端、或请求消费端,或者应用于新增设的异步请求控制端,该异步请求控制端可以与请求生产端、消息存储端、请求消费端进行通信。
在纯异步请求的场景中,请求消息端可以是用于处理异步请求的一方;在包括同步请求和异步请求的场景中,请求消息端可以是用于处理同步请求和异步请求的一方,从而实现利用本说明书实施例方案,可以保证同步请求能够被正常处理的前提下,最大化处理异步请求,保证最大化资源利用率、且对业务影响最小。
指标数据可以是用于衡量请求消费端当前资源利用率的指标参数值。例如,指标数据可以是请求消费端的CPU当前使用率、当前在规定时间内处理完请求的次数(QueryPer Second,QPS)、当前在规定时间内处理完事务的次数(Transaction per Second,TPS)等中的一种或多种。可以理解的是,还可以是其他用于衡量请求消费端当前资源利用率的指标数据,例如负载(load)等,只要能衡量请求消费端的当前资源利用率即可,在此不一一列举。
可见,本实施例中可以利用QPS或TPS衡量请求消费端当前资源利用率,由于QPS或TPS比较容易获得、且能够比较准确的反应请求消费端的资源利用率,因此可以提高指标数据的获得效率以及准确性。
关于指标数据的获取时机,可以是预设异步请求控制条件满足。预设异步请求控制条件可以是预设流量高峰期期间,也可以是预设流量高峰期之后一段时间内。
预设流量高峰期可以是预先设置的可能产生流量高峰的时间段,例如,在秒杀活动中,预设流量高峰期可以是以秒杀活动的起始时间为参考时间划分的时间段。在双十一活动中,预设流量高峰期可以是以双十一活动的起始时间为参考时间划分的时间段。在预设流量高峰期内,可以在预先指定的时间点执行步骤202,如,指定在预设流量高峰期的一个或多个时间点获取指标数据。在预设流量高峰期内,可以按预设间隔时间执行步骤202,间隔时间可以基于预设流量高峰期的时长进行设置,同一预设流量高峰期内可以基于可能的高峰时间点设置不同间隔时间。以双十一为例,由于11:55至00:10可能是流量最高峰,而预设流量高峰期的其他时间段流量可能相对较少,因此,这两个时间段设置的间隔时间可以不相同。
预设流量高峰期之后一段时间内也可以对异步请求进行控制。例如,可以在预设流量高峰期之后每间隔预设时间段执行步骤202,执行的截止条件可以是消息存储端中指定消息队列的异步请求被处理完成,又或者达到预设的截止时间等。
应当理解的是,上述预设异步请求控制条件仅为举例,而不应被理解为对本说明书的任何限制,其他现有的或将来的触发执行异步请求控制的条件可以适用本说明书,均应包括在本说明书的保护范围内。
本说明书实施例中,可以将指标数据作为确定对消息存储端中异步请求进行处理的消费速度的影响因素。
在一个实施例中,可以直接将指标数据作为唯一确定消费速度的影响因素。即,直接根据指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系,以达到最大化利用资源。以下列举几种确定消费速度的方法。
在一个例子中,所述消费速度基于请求消费端在规定时间内处理完请求的次数峰值、与当前在规定时间内处理完请求的次数的关系获得,特别是基于请求消费端在规定时间内处理完请求的次数峰值、与当前在规定时间内处理完请求的次数的差值获得。
其中,请求消费端在规定时间内处理完请求的次数峰值可以是请求消费端能够承载的最大QPS,可以用Q表示。当前在规定时间内处理完请求的次数可以是请求消费端当前的QPS,可以用q1表示。Q和q1的关系可以反映请求消费端当前资源使用情况,因此,可以根据Q和q1的关系确定消费速度,以实现最大化利用系统资源。例如,可以根据(Q-q1)获得消费速度。一方便,可以直接将(Q-q1)作为消费速度,另一方面,也可以基于(Q-q1)与预设的权重值的乘积作为消费速度等。
在该实施例中,根据在规定时间内处理完请求的次数峰值、与当前在规定时间内处理完请求的次数的关系获得消费速度,可以提高获得消费速度的效率。
在另一个例子中,所述消费速度基于请求消费端在规定时间内处理完事务的次数峰值、与当前在规定时间内处理完事务的次数的关系获得,特别是基于请求消费端在规定时间内处理完事务的次数峰值、与当前在规定时间内处理完事务的次数的差值获得。
其中,请求消费端在规定时间内处理完事务的次数峰值可以是请求消费端能够承载的最大TPS,可以用T表示。当前在规定时间内处理完事务的次数可以是请求消费端当前的TPS,可以用t1表示。T和t1的关系可以反映请求消费端当前资源使用情况,因此,可以根据T和t1的关系确定消费速度,以实现最大化利用系统资源。例如,可以根据(T-t1)获得消费速度。一方面,可以直接将(T-t1)作为消费速度,另一方面,也可以基于(T-t1)与预设的权重值的乘积作为消费速度等。
在该实施例中,根据请求消费端在规定时间内处理完事务的次数峰值、与当前在规定时间内处理完事务的次数的关系获得消费速度,可以提高获得消费速度的效率。
相应的,还可以将其他指标数据作为消费速度的影响因素,在此不一一列举。
在一个实施例中,所述控制异步请求的方法还可以包括:确定请求消费端的资源满足预设资源空闲条件。请求消费端的资源是否满足预设资源空闲条件可以在步骤204之前判断,也可以在步骤206之前判断,在此不做限制。预设资源空闲条件可以是用于判定请求消费端有空闲资源未使用的条件。该实施例实现在请求消费端有空闲资源未使用时,才确定消费速度,以及控制以所确定的消费速度处理异步请求。
例如,预设资源空闲条件包括以下一种或多种条件。当包括多种条件时,可以是任一条件满足,则判定预设资源空闲条件满足,也可以是组合条件同时满足,则判定预设资源空闲条件满足。
当前在规定时间内处理完请求的次数小于请求消费端在规定时间内处理完请求的次数峰值;
当前在规定时间内处理完事务的次数小于请求消费端在规定时间内处理完事务的次数峰值。
可见,可以通过QPS、TPS判断请求消费端是否有空闲资源未使用,由于参数容易获得,因此可以提高判断效率。
进一步的,还可以结合业务流量量级或同步业务量级判断预设资源空闲条件是否满足。例如,预设资源空闲条件还可以包括:当前业务流量量级小于总业务流量峰值。又如,预设资源空闲条件还可以包括:当前同步业务量级小于同步业务量级峰值。
其中,当前业务流量量级可以利用消息存储端中当前存储请求数量衡量,总业务流量峰值可以利用消息存储端中可存储请求数量的上限值衡量。
其中,在仅包括异步请求的场景中,可存储请求数量的上限值可以是消息存储端可达到的异步请求的量级;在包括同步请求和异步请求的场景中,可存储请求数量的上限值可以是同步请求的量级+异步请求的量级。
可见,该实施例将存储的请求数量作为预设资源空闲条件的条件之一,可以提高判断请求消费端是否存在空闲能力的准确性。
应当理解的是,上述预设资源空闲条件仅为举例,而不应被理解为对本说明书的任何限制,其他现有的或将来的用于判断请求消费端有空闲资源未使用的条件可以适用本说明书,均应包括在本说明书的保护范围内。
而在另一个可选的实现方式中,还可以将异步请求的优先级作为确定对消息存储端中异步请求进行处理的消费速度的影响因素。即,至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度包括:根据异步请求的优先级以及所述指标数据确定对消息存储端中异步请求进行处理的消费速度,以实现优先级高的消息队列中异步请求的消费速度,大于优先级低的消息队列中异步请求的消费速度。
在该实施例中,所述消息存储端至少包括两种消息队列,所述方法还包括:通知请求生产端按异步请求的优先级将不同优先级的异步请求存放在不同的消息队列中。
其中,异步请求的优先级可以基于该请求所对应的业务优先级确定,或者,异步请求的优先级可以基于延迟处理异步请求造成的影响程度确定。例如,实际业务中,对于修改密码、更换绑定等的风险程度高于用户付款业务,因此,可以将修改密码、更换等高风险业务所对应的异步请求设置为高优先级的异步请求,将用户付款等稍低风险业务所对应的异步请求设置为低优先级的异步请求。
可见,消息存储端中将不同优先级的异步请求分别存放在不同的消息队列中,而不同优先级的消息队列被处理的速度不同,从而实现针对不同异步消息进行不同速度控制,避免高风险的异步请求延迟处理带来的风险。
以其中一种基于异步请求的优先级和指标数据确定消费速度的方式,进行示例说明。优先级高的消息队列可以实时被处理,优先级低的消息队列可以暂停或减缓处理。
在一个例子中,所述消息存储端包括及时处理消息队列和调速处理消息队列,所述通知请求生产端按异步请求的优先级将不同优先级的异步请求存放在不同的消息队列中,包括:在预设流量高峰期达到之前,通知请求生成端将高优先级的异步请求发送至及时处理消息队列,将低优先级的异步请求发送至调速处理消息队列,及时处理消息队列中的异步请求被实时处理,调速处理消息队列中的异步请求被暂停处理。
在该实施例中,直接将不同优先级的异步请求划分到不同的两个消息队列,对优先级高的异步请求及时处理,对优先级低的异步请求暂停处理。
进一步的,在预设流量高峰期期间,所述调速处理消息队列中的异步请求按所确定的消费速度被处理,所确定的消费速度基于预设流量高峰期期间的指标数据确定。
该实施例将预设流量高峰期期间(可以是期间指定时间或间隔指定时间)作为获取指标数据的触发条件,获得用于表示请求消费端当前资源利用率的指标数据,并根据指标数据确定对调速处理消息队列中的异步请求进行处理的消费速度,并控制请求消费端以所确定的消费速度处理调速处理消息队列中的异步请求。
进一步的,所述方法还可以包括:在预设流量高峰期结束时,通知请求生成端将低优先级的异步请求发送至及时处理消息队列,调速处理消息队列中已存的异步请求被暂停处理。
由于预设流量高峰期结束后,系统往往能同时处理异步请求和同步请求,鉴于此,可以将低优先级的异步请求发送至及时处理消息队列,以实现在预设流量高峰期结束后,能实时处理高峰期结束后的同步请求和异步请求。
进一步的,在预设流量高峰期结束后每间隔预设时间更新一次消费速度,所述调速处理消息队列中的异步请求按所更新的消费速度被处理,直至调速处理消息队列中的异步请求全部被处理。
针对调速处理消息队列中未处理的异步请求,可以在预设流量高峰期结束后一段时间,每间隔一段时间执行一次步骤202和204,并控制请求消费端按所更新的消费速度处理调速处理消息队列中的异步请求,直至调速处理消息队列中的异步请求全部被处理。即,在调速处理消息队列中的异步请求全部被处理后,停止更新消费速度以及停止处理消息队列中的异步请求。调速处理消息队列中异步请求全部被处理,可以理解为调速处理消息队列中异步请求被处理完成。
由此可见,可以分阶段处理调速处理消息队列中的异步请求,实现保证同步请求和高风险的异步请求被及时处理的前提下,最大化处理其他异步请求,实现将同步和异步请求错峰处理,最小化异步请求的处理延迟,保证系统成本不会随着峰值请求量的增加而成倍增长。
关于控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求,在一个例子中,可以通知所述请求消费端按所确定的消费速度从所述消息存储端中拉取异步请求并处理,从而实现请求消费端主动拉取请求并处理。在另一个例子中,可以通知所述消息存储端以所确定的消费速度向请求消费端下发异步请求,以供请求消费端及时处理所接收的异步请求,从而实现消息存储端主动下发请求给请求消费端进行处理。
由上述实施例可见,本说明书实施例可以将同步请求和异步请求错峰,采集系统当前处理能力以及业务相关因素做综合判定,对异步请求的消费速度做动态控制,保证同步请求能够被正常处理的前提下,最大化处理异步请求,通过这种方式保证最大化资源利用率且对业务影响最小,整个过程根据系统情况做实时自动化控制保证系统稳定。
以上实施方式中的各种技术特征可以任意进行组合,只要特征之间的组合不存在冲突或矛盾,但是限于篇幅,未进行一一描述,因此上述实施方式中的各种技术特征的任意进行组合也属于本说明书公开的范围。
以下以其中一种组合进行示例说明。
如图3A所示,是本说明书根据一示例性实施例示出的一种控制异步请求的方法的流程图,所述方法包括:
在步骤302中,在预设流量高峰期达到之前,通知请求生成端将高优先级的异步请求发送至及时处理消息队列,将低优先级的异步请求发送至调速处理消息队列,及时处理消息队列中的异步请求被实时处理,调速处理消息队列中的异步请求被暂停处理。
在步骤304中,在预设异步请求控制条件满足时,获取请求消费端能够处理的最大QPS以及请求消费端当前QPS、总业务流量峰值以及当前业务流量量级。
其中,预设异步请求控制条件可以是预设流量高峰期期间,也可以是预设流量高峰期之后一段时间内。在另一个例子中,可以用同步业务量级峰值替代总业务流量峰值,利用当前同步请求业务量级替代当前业务流量量级,目的是为了考虑当前流量量级,因此,可以灵活配置。
在步骤306中,根据所述最大QPS与当前QPS的差值确定消费速度。
在一个例子中,可以直接将最大QPS与当前QPS的差值作为消费速度。
在步骤308中,若当前同步请求业务量级小于同步业务量级峰值,向各个请求消费端推送所确定的消费速度,以控制请求消费端以所确定的消费速度处理调速处理消息队列中的异步请求。
进一步的,还可以在预设流量高峰期结束时,通知请求生成端将低优先级的异步请求发送至及时处理消息队列,调速处理消息队列中未处理的异步请求被暂停处理。
可以理解的是,图3A中与图2中相关技术相同,在此不一一赘述。
由上述实施例可见,本实施例动态控制生产端消息发送队列和消费端消费速率,保证系统稳定的前提下最大化系统资源率、且异步请求最小延迟被处理,保证业务的稳定。
本说明书实施例可以应用于风险监控业务,提供一种控制风险监控业务中异步请求的方法,同步请求可以是需实时返回结果的请求,异步请求可以是用于进行风控行为累计的请求。下面以一次电商双十一活动促销活动为例说明上述发明的使用情况。双十一活动0点开始,0点支付流量峰值为P(P远大于日常量级),峰值持续时间预估为N分钟,单机最大QPS为Q,改密、换绑等高风险业务仍存在,同异步请求均在一个系统(请求消费端)处理。
整个促销过程中,可以实时采集指标数据。峰值之前,为了保证活动的稳定,可以通知请求生产端将支付异步请求流量消息发送到队列queue1中,非支付异步请求消息发送到队列queue 2中,通知请求消费端对队列queue1中的消息暂停处理,对队列queue2中的消息实时处理。通过广播消息到各个请求生产端和请求消费端执行此指令,实现改密、换绑等高风险业务得到高保障。活动进行了n1分钟(n1<N)后,根据采集的指标数据确定:当前总业务量为M(M<P),单机实际QPS为q1(q1<Q),判定系统有空闲能力,此时做出决策:控制请求消费端以(Q-q1)的速度消费queue1中的数据,并广播消息到各个请求消费端,此时历史消息得到处理。活动进行了N分钟之后,若当前业务总量S,判定该业务量级下消息不会产生延迟,做出如下决策:请求生产端将支付异步消息全部写入queue2中,queue1消费暂停,并广播消息到各个请求生产端和请求消费端以执行此指令,改密、换绑以及此时之后的支付异步请求得到实时处理,queue1中未处理的消息暂停处理。间隔指定时间后(如1分钟后)定时任务再次唤起异步请求控制操作:若采集的单机实际QPS为q2,则通知请求消费端对queue1中的异步请求以(Q-q2)的速度消费。以后每间隔指定时间,重复唤起异步请求控制操作,直到queue1消息处理完成。如图3B所示,是本说明书根据一示例性实施例示出的一种流量切换示意图。由此可见,整个操作均由系统自动完成,无需人工干预,通过动态控制消费速度实现最大化资源利用率。
与前述控制异步请求的方法的实施例相对应,本说明书还提供了控制异步请求的装置及其所应用的电子设备的实施例。
本说明书控制异步请求的装置的实施例可以应用在计算机设备。装置实施例可以通过软件实现,也可以通过硬件或者软硬件结合的方式实现。以软件实现为例,作为一个逻辑意义上的装置,是通过其所在计算机设备的处理器将非易失性存储器中对应的计算机程序指令读取到内存中运行形成的。从硬件层面而言,如图4所示,为本说明书控制异步请求的装置所在计算机设备的一种硬件结构图,除了图4所示的处理器410、内存430、网络接口420、以及非易失性存储器440之外,实施例中控制异步请求的装置431所在的计算机设备通常根据该设备的实际功能,还可以包括其他硬件,对此不再赘述。
如图5所示,是本说明书根据一示例性实施例示出的一种控制异步请求的装置的框图,所述装置包括:
数据采集模块52,用于:获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
调度决策模块54,用于:至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
处理模块56,用于:控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
可选的,所述指标数据包括CPU当前使用率、当前在规定时间内处理完请求的次数、当前在规定时间内处理完事务的次数中的一种或多种。
可选的,所述调度决策模块54具体用于:确定请求消费端的资源满足预设资源空闲条件,至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度。
可选的,预设资源空闲条件包括以下一种或多种条件:
当前在规定时间内处理完请求的次数小于请求消费端在规定时间内处理完请求的次数峰值;
当前在规定时间内处理完事务的次数小于请求消费端在规定时间内处理完事务的次数峰值。
可选的,所述消费速度基于请求消费端在规定时间内处理完请求的次数峰值、与当前在规定时间内处理完请求的次数的差值获得.
可选的,所述消费速度基于请求消费端在规定时间内处理完事务的次数峰值、与当前在规定时间内处理完事务的次数的差值获得。
可选的,所述处理模块56具体用于:
通知所述请求消费端按所确定的消费速度从所述消息存储端中拉取异步请求并处理;或,
通知所述消息存储端以所确定的消费速度向请求消费端下发异步请求,以供请求消费端及时处理所接收的异步请求。
可选的,所述消息存储端至少包括两种消息队列,所述处理模块56还用于:
通知请求生产端按异步请求的优先级将不同优先级的异步请求存放在不同的消息队列中,其中,优先级高的消息队列中异步请求的消费速度,大于优先级低的消息队列中异步请求的消费速度。
可选的,所述消息存储端包括及时处理消息队列和调速处理消息队列,所述处理模块56还用于:
在预设流量高峰期达到之前,通知请求生成端将高优先级的异步请求发送至及时处理消息队列,将低优先级的异步请求发送至调速处理消息队列,及时处理消息队列中的异步请求被实时处理,调速处理消息队列中的异步请求被暂停处理。
可选的,在预设流量高峰期期间,所述调速处理消息队列中的异步请求按所确定的消费速度被处理,所确定的消费速度基于预设流量高峰期期间的指标数据确定。
可选的,所述处理模块56还用于:在预设流量高峰期结束时,通知请求生成端将低优先级的异步请求发送至及时处理消息队列,调速处理消息队列中未处理的异步请求被暂停处理。
可选的,在预设流量高峰期结束后每间隔预设时间更新一次消费速度,所述调速处理消息队列中的异步请求按所更新的消费速度被处理,直至调速处理消息队列中的异步请求全部被处理。
对于装置实施例而言,由于其基本对应于方法实施例,所以相关之处参见方法实施例的部分说明即可。以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的模块可以是或者也可以不是物理上分开的,作为模块显示的部件可以是或者也可以不是物理模块,即可以位于一个地方,或者也可以分布到多个网络模块上。可以根据实际的需要选择其中的部分或者全部模块来实现本说明书方案的目的。本领域普通技术人员在不付出创造性劳动的情况下,即可以理解并实施。
相应的,本说明书实施例还提供一种计算机设备,包括:处理器;用于存储处理器可执行指令的存储器;其中,所述处理器被配置为:
获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
本说明书中的各个实施例均采用递进的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。尤其,对于设备实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
一种计算机存储介质,所述存储介质中存储有程序指令,所述程序指令包括:
获取用于表示请求消费端当前资源利用率的指标数据,所述请求消费端至少用于处理异步请求;
至少根据所述指标数据确定对消息存储端中异步请求进行处理的消费速度,所述消费速度与请求消费端的资源利用率成负相关关系;
控制请求消费端以所确定的消费速度处理所述消息存储端中的异步请求。
本说明书实施例可采用在一个或多个其中包含有程序代码的存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。计算机可用存储介质包括永久性和非永久性、可移动和非可移动媒体,可以由任何方法或技术来实现信息存储。信息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括但不限于:相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的信息。
本领域技术人员在考虑说明书及实践这里申请的发明后,将容易想到本说明书的其它实施方案。本说明书旨在涵盖本说明书的任何变型、用途或者适应性变化,这些变型、用途或者适应性变化遵循本说明书的一般性原理并包括本说明书未申请的本技术领域中的公知常识或惯用技术手段。说明书和实施例仅被视为示例性的,本说明书的真正范围和精神由下面的权利要求指出。
应当理解的是,本说明书并不局限于上面已经描述并在附图中示出的精确结构,并且可以在不脱离其范围进行各种修改和改变。本说明书的范围仅由所附的权利要求来限制。
以上所述仅为本说明书的较佳实施例而已,并不用以限制本说明书,凡在本说明书的精神和原则之内,所做的任何修改、等同替换、改进等,均应包含在本说明书保护的范围之内。