发明内容
本申请提供一种用于流量控制的方法,以解决现有的流量控制方法存在的资源浪费和存在缺陷的问题。本申请同时涉及一种用于流量控制的装置。
本申请提供一种用于流量控制的方法,包括:
接收来自消息生产者的消息;
获取该消息在至少两个维度下的取值;
获取在各个维度下的所有取值中每一个取值分别对应的消息流量;
依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内;
若是,则将该消息输出至消息消费者;
其中,所述消息在每一个维度下包括至少一个取值,每一个取值对应一个预设的流量阈值。
可选的,所述依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内;
若否,则返回所述获取在各个维度下的所有取值中每一个取值分别对应的消息流量的步骤。
可选的,所述依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内步骤之前,包括:
获取预先设定的各个维度的优先级。
可选的,所述依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内,包括:
读取优先级最高的维度下的所有取值中每一个取值分别对应的消息流量;
依次判断该维度下的所有取值中每一个取值分别对应的消息流量是否在预设的流量阈值之内;
若是,则按照优先级从高到低的顺序读取下一个维度下的至少一个取值中每一个取值对应的消息流量,并返回所述依次判断该维度下的所有取值中每一个取值分别对应的消息流量是否在预设的流量阈值之内的步骤,直至该维度为优先级最低的维度;
若否,则返回所述获取在各个维度下的所有取值中每一个取值分别对应的消息流量的步骤。
可选的,所述依次判断该维度下的所有取值中每一个取值分别对应的消息流量是否在预设的流量阈值之内,包括:
按照自然顺序读取该维度下的所有取值中的第一个取值对应的消息流量;
判断该取值对应的消息流量是否在预设的流量阈值之内;
若是,则判断该维度下的所有取值中除该取值之外是否存在未经上述判断的取值;
若存在,则按照自然顺序读取该维度下的下一个取值对应的消息流量,并返回所述判断该取值对应的消息流量是否在预设的流量阈值之内的步骤,直至该维度下的所有取值中每一个取值分别对应的消息流量被读取完毕;
若不存在,则按照优先级从高到低的顺序读取下一个维度下的第一个取值对应的消息流量,并返回所述判断该取值对应的消息流量是否在预设的流量阈值之内的步骤,直至该维度为优先级最低的维度;
若否,则返回所述获取在各个维度下的所有取值中每一个取值分别对应的消息流量的步骤。
可选的,所述依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内步骤之前,包括:
获取在各个维度下的所有取值中每一个取值分别对应的预设的流量阈值。
可选的,所述消息包括:
该消息在各个维度下的所有取值的组合。
本申请另外提供一种用于流量控制的装置,包括:
消息接收单元,用于接收来自消息生产者的消息;
消息取值获取单元,用于获取该消息在至少两个维度下的取值;
消息流量获取单元,用于获取在各个维度下的所有取值中每一个取值分别对应的消息流量;
阈值判断单元,用于依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内;
若是,则进入消息输出单元;
所述消息输出单元,用于将该消息输出至消息消费者;
其中,所述消息在每一个维度下包括至少一个取值,每一个取值对应一个预设的流量阈值。
可选的,所述用于流量控制的装置,包括:
维度优先级获取单元,用于获取预先设定的各个维度的优先级。
可选的,所述阈值判断单元,包括:
第一消息流量读取子单元,用于读取优先级最高的维度下的所有取值中每一个取值分别对应的消息流量;
阈值判断子单元,用于依次判断该维度下的所有取值中每一个取值分别对应的消息流量是否在预设的流量阈值之内;
若是,则进入第二消息流量读取子单元;
所述第二消息流量读取子单元,用于按照优先级从高到低的顺序读取下一个维度下的至少一个取值中每一个取值对应的消息流量,并进入所述阈值判断子单元,直至该维度为优先级最低的维度读取;
若否,则进入第二消息流量读取子单元。
可选的,所述用于流量控制的装置,包括:
流量阈值获取单元,用于获取在各个维度下的所有取值中每一个取值分别对应的预设的流量阈值。
与现有技术相比,本申请具有以下优点:
本申请提供的一种用于流量控制的方法,包括:接收来自消息生产者的消息;获取该消息在至少两个维度下的取值;获取在各个维度下的所有取值中每一个取值分别对应的消息流量;依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内;若是,则将该消息输出至消息消费者;其中,所述消息在每一个维度下包括至少一个取值,每一个取值对应一个预设的流量阈值。
本申请提供的所述用于流量控制的方法中,获取每一个消息在至少两个维度下的所有取值,并将上述所有取值中每一个取值分别对应的消息流量全部限制在预设的流量阈值内,在多个维度实现了对输出至所述消息消费者的消息的控制,对消息的流量控制更加完善;此外,避免了单一维度的流量控制造成的资源浪费。
实施例所述用于流量控制的方法,基于并行处理机制实现,可同时分别接收多个消息发出的输出请求,当接收到上述的一个或多个消息的输出请求之后,对所述消息进行处理,该处理是指下述步骤S103至S105所述的判断所述消息是否满足被输出至支付系统的条件的过程,并且针对其中的每一个消息的处理过程是完全相同的。
本步骤中,当接收到所述消息发出的输出请求之后,首先获取该消息对应的维度,并且获取该消息在各个维度下的取值。
需要说明的是,本实施例中,对上述流量控制系统已缓存任意一个消息分别在4个维度进行流量控制,4个维度分别为:支付消息维度、消息来源维度、资金源维度、占用账务库资源维度。
并且将上述4个维度下各个维度的取值分别抽象为:
支付消息维度下的取值包括:是、否;
消息来源维度下的取值包括:PC、无线;
资金源维度下的取值包括:银行卡、余额、红包;
占用账务库资源维度下的取值包括:是、否。
具体的,所述消息的4个维度和所述消息在4个维度下的取值之间的对应关系,参见下表:
上表中,提供了消息编号为1~7的7个消息在上述支付消息维度下、消息来源维度下、资金源维度下、占用账务库资源维度下的所有取值。
除此之外,还可以获取该消息在本实施例之外的其他维度(至少两个)下的取值,比如3个维度下或者5个维度下的所有取值,或者将该消息的其他属性分类作为该消息的维度,在此不作限定。
需要说明的是,本实施例中,针对上述4个维度下的所有取值,其中的每一个取值都存在一个预设的流量阈值。
所述流量阈值,是指每秒钟能够输出至所述支付系统的包含上述每一个取值的消息的最大数目,即:所述消息系统每秒钟能够处理的包含上述每一个取值的消息的最大数目。
上述4个维度下的各个取值对应的流量阈值如下:
其中,支付消息为是的取值对应的流量阈值是30000TPS;
消息来源为PC终端的取值对应的流量阈值是15000TPS;
消息来源为无线终端的取值对应的流量阈值是15000TPS;
资金源为银行卡的取值对应的流量阈值是7000TPS;
资金源为余额的取值对应的流量阈值是20000TPS;
资金源为红包的取值对应的流量阈值是8000TPS;
占用账务处理为是的取值对应的流量阈值是25000TPS。
步骤S103,获取在各个维度下的所有取值中每一个取值分别对应的消息流量。
上述步骤S102,读取到所述消息在上述4个维度下的所有取值,本步骤中,获取上述的所有取值中每一个取值分别对应的消息流量。
上述每一个取值对应的消息流量,是指1秒内输出至所述支付系统的包含上述的所有取值中每一个取值的消息的实际数目。
例如:1S内输出至支付系统并且支付方式为银行卡的消息的实际数目为5550,即:资金源维度下取值为银行卡对应的消息流量是5550TPS。
除此之外,所述消息流量还可可以其他方式定义,比如以本实施例所述1S之外的其他时间段输出至所述支付系统的消息的实际数目为所述消息流量,在此不作限定。
步骤S104,依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内。
上述步骤S101接收来自用户的消息,步骤S102获取该消息在上述4个维度下的所有取值,步骤S103获取上述所有取值中每一个取值分别对应的消息流量;本步骤中,依次判断在上述4个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内;若是,则进入下述步骤S105,将该消息输出至消息消费者;若否,则返回上述步骤S103,获取下一个消息在上述4个维度下的所有取值中每一个取值分别对应的消息流量,针对下一个消息进行判断。
需要说明的是,在本步骤之前,包括获取预先设定的各个维度的优先级。
本实施例中,上述4个维度的优先级顺序为:支付消息>消息来源>占用账务库资源>资金源。
本步骤对所述消息进行判断时,根据所述维度的优先级,以及该消息在上述4个维度下取值的排列顺序,优先判断该消息的优先级高的维度,并且,对于该消息在同一维度下的所有取值,按照自然顺序依次进行判断,如图3所示,其示出了各维度优先级的示意图。
此外,对于上述流量控制系统已缓存任意一个消息在上述4个维度下的所有取值中的每一个取值分别对应的消息流量,必须满足该消息在上述4个维度下的所有取值中的每一个取值分别对应的消息流量全部处于预设的流量阈值范围内,该消息才能被输出至支付系统进行处理;一旦存在该消息在上述4个维度下的所有取值中的任意一个对应的消息流量超出预设的流量阈值,则该消息由上述流量控制系统继续以缓存的方式进行存储。
具体实现如下:
1)读取优先级最高的维度下的所有取值中的第一个取值对应的消息流量;
例如上表中消息编号为1的消息,结合图3,优先级最高的维度为支付消息维度,并且该消息在支付消息维度下的取值为是,则读取支付消息维度下取值为是对应的消息流量。
2)判断该取值对应的消息流量是否在预设的流量阈值之内;
本实施例中,判断每秒钟输出至所述支付系统的包含该取值的消息的实际数目是否在最大数目之内的目的在于,判断每秒钟输出至所述支付系统的包含该取值的消息的实际数目是否在支付系统每秒钟能够处理的最大数目之内,一旦超出最大数目,则超出支付系统每秒钟能够处理的最大数目,很可能将支付系统冲垮。
因此,本步骤中,判断该取值对应的消息流量是否达到预设的流量阈值的目的在于,限制输出至所述支付系统的消息流量,使输出至所述支付系统的消息能够及时被所述支付系统处理,避免支付系统被大量的消息冲垮,保证第三方支付业务的正常运行。
若是,则表明该取值对应的消息流量在预设的流量阈值之内,进入下述步骤3)读取下一个取值进行判断;
例如上表中消息编号为1的消息,假设该消息在支付消息维度下的取值为是对应的消息流量为20000TPS,小于在支付消息维度下的取值为是对应的流量阈值30000TPS,则进入下述步骤3)读取下一个取值进行判断。
若否,则表明该消息在支付消息维度下的取值中,存在某一取值对应的消息流量已经达到预设的流量阈值,则返回上述步骤S103,获取下一个消息在上述4个维度下的所有取值中每一个取值分别对应的消息流量,针对下一个消息进行判断。
例如上表中消息编号为1的消息,假设在支付消息维度下的取值为是对应的消息流量为30000TPS,则表明所述支付系统能够处理的包含支付消息维度下的取值为是的消息已经达到最大数目,该消息无法输出至所述支付系统,并返回上述步骤S103,获取上表中消息编号为2的消息在上述4个维度下的所有取值中每一个取值分别对应的消息流量。
3)判断该维度下的所有取值中除该取值之外是否存在未经上述判断的取值;
上述步骤2)中,若所述取值对应的消息流量在预设流量阈值之内,则本步骤中,读取该消息的下一个取值进行判断,在读取之前,结合图3,判断该下一个取值所处的位置,是处于该支付消息维度下,还是处于下一个消息来源维度下。
若存在,则表明即将读取的下一个取值处于支付消息维度下,按照自然顺序在该支付消息维度下读取到上述的下一个取值,读取到该取值之后,返回上述步骤2)所述的判断该取值对应的消息流量是否达到预设的流量阈值,对该取值进行判断,直至该维度下的所有取值完成上述判断;
若不存在,表明所述消息在该维度下只存在一个取值,则结合图3,读取下一个消息来源维度下的第一个取值对应的消息流量,并返回上述步骤2)所述的判断该取值对应的消息流量是否达到预设的流量阈值,对下一个取值进行判断,直至所述消息在上述4个维度下的所有取值都完成上述判断。
例如上表中消息编号为1的消息,该消息在支付消息维度下的取值为是,并且在该支付消息维度下的取值唯一,不存在其他取值,则读取下一个消息来源维度下的取值PC终端,并返回上述步骤2),对该PC终端对应的消息流量是否达到预设的流量阈值进行判断,直至所述消息在上述4个维度下的所有取值都完成上述判断。
需要说明的是,除此之外,上述实现方法还可以采用本实施之外的其他方法实现,在此不作限定。
步骤S105,将该消息输出至消息消费者。
本步骤得以实施的前提是上述步骤S104依次判断在上述4个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值范围内的判断结果为是,即:所述消息在上述4个维度下的所有取值中的每一个取值分别对应的消息流量,均未超出所述每一个取值对应的流量阈值范围,表明支付系统处理消息的能力尚未达到最大值,则将通过上述步骤S104判断的消息输出至所述支付系统,由支付系统对该消息进行处理。
所述用于流量控制的装置实施例如下:
在上述的实施例中,提供了一种用于流量控制的方法,与之相对应的,本申请还提供了一种用于流量控制的装置。
参照图4,其示出了根据本实施例提供的一种用于流量控制的装置示意图。由于装置实施例基本相似于方法实施例,所以描述得比较简单,相关的部分请参见方法实施例的对应说明即可。下述描述的装置实施例仅仅是示意性的。
本申请所述的一种用于流量控制的装置,包括:
消息接收单元401,用于接收来自消息生产者的消息;
消息取值获取单元402,用于读取该消息在至少两个维度下的取值;
消息流量获取单元403,用于获取在各个维度下的所有取值中每一个取值分别对应的消息流量;
阈值判断单元404,用于依次判断在各个维度下的所有取值中每一个取值分别对应的消息流量是否在该取值预设的流量阈值之内;
若是,则进入消息输出单元405;
所述消息输出单元405,用于将该消息输出至消息消费者;
其中,所述消息在每一个维度下包括至少一个取值,每一个取值对应一个预设的流量阈值。
可选的,所述用于流量控制的装置,包括:
维度优先级获取单元,用于获取预先设定的各个维度的优先级。
可选的,所述阈值判断单元404,包括:
第一消息流量读取子单元,用于读取优先级最高的维度下的所有取值中每一个取值分别对应的消息流量;
阈值判断子单元,用于依次判断该维度下的所有取值中每一个取值分别对应的消息流量是否在预设的流量阈值之内;
若是,则进入第二消息流量读取子单元;
所述第二消息流量读取子单元,用于按照优先级从高到低的顺序读取下一个维度下的至少一个取值中每一个取值对应的消息流量,并进入所述阈值判断子单元,直至该维度为优先级最低的维度读取;
若否,则进入第二消息流量读取子单元。
可选的,所述用于流量控制的装置,包括:
流量阈值获取单元,用于获取在各个维度下的所有取值中每一个取值分别对应的预设的流量阈值。
本申请虽然以较佳实施例公开如上,但其并不是用来限定本申请,任何本领域技术人员在不脱离本申请的精神和范围内,都可以做出可能的变动和修改,因此本申请的保护范围应当以本申请权利要求所界定的范围为准。
在一个典型的配置中,计算设备包括一个或多个处理器(CPU)、输入/输出接口、网络接口和内存。
内存可能包括计算机可读介质中的非永久性存储器,随机存取存储器(RAM)和/或非易失性内存等形式,如只读存储器(ROM)或闪存(flash RAM)。内存是计算机可读介质的示例。
1、计算机可读介质包括永久性和非永久性、可移动和非可移动媒体可以由任何方法或技术来实现消息存储。消息可以是计算机可读指令、数据结构、程序的模块或其他数据。计算机的存储介质的例子包括,但不限于相变内存(PRAM)、静态随机存取存储器(SRAM)、动态随机存取存储器(DRAM)、其他类型的随机存取存储器(RAM)、只读存储器(ROM)、电可擦除可编程只读存储器(EEPROM)、快闪记忆体或其他内存技术、只读光盘只读存储器(CD-ROM)、数字多功能光盘(DVD)或其他光学存储、磁盒式磁带,磁带磁磁盘存储或其他磁性存储设备或任何其他非传输介质,可用于存储可以被计算设备访问的消息。按照本文中的界定,计算机可读介质不包括非暂存电脑可读媒体(transitorymedia),如调制的数据信号和载波。
2、本领域技术人员应明白,本申请的实施例可提供为方法、系统或计算机程序产品。因此,本申请可采用完全硬件实施例、完全软件实施例或结合软件和硬件方面的实施例的形式。而且,本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质(包括但不限于磁盘存储器、CD-ROM、光学存储器等)上实施的计算机程序产品的形式。