一种信息处理方法、装置、电子设备及存储介质
技术领域
本申请涉及互联网技术领域,尤其涉及一种信息处理方法、装置、电子设备及存储介质。
背景技术
在日常工作生活中一些突发的高并发场景,诸如:在购物狂欢节期间一些热门商品的降价促销,当这其中的某一件商品被几十万、上百万甚至上千万次点击、购买时,会形成一个较大的需求量,这种情况下每一次查询库存请求都集中到数据库,导致效率低。在实现本发明过程中,发明人发现当数据库被访问次数过多,会造成流量过于集中,达到物理网卡上限,从而导致宕机。
发明内容
为了解决上述技术问题或者至少部分地解决上述技术问题,本申请实施例提供了一种信息处理方法、装置、电子设备及存储介质。
第一方面,本申请提供了一种信息处理方法,该方法包括以下步骤:
获取预设时间内的第一数量;
在所述预设时间内接收所述第一数量的第一查询请求;
对于大于或等于所述第一数量的第二查询请求执行限流操作。
在一个可能的实施方式中,所述在所述预设时间内接收所述第一数量的第一查询请求,包括:
获取所述预设时间内单位时间的个数;
根据所述第一数量和所述单位时间的个数计算每个单位时间内接收的第一查询请求的第二数量;
在每个单位时间内接收所述第二数量的第一查询请求。
在一个可能的实施方式中,所述方法还包括:
确定所述第一查询请求对应的待查询业务;
当所述待查询业务为无效业务时,返回预设提示信息。
在一个可能的实施方式中,所述方法还包括:
确定所述所述待查询业务的业务参数;
根据所述业务参数查询预存的白名单;
当所述业务参数不属于所述白名单时,确定所述待查询业务为所述无效业务。
在一个可能的实施方式中,所述方法还包括:
获取第一数据库中存储所述待查询业务对应的正本数据;
根据所述正本数据在第二数据库中生成至少一个副本数据,所述正本数据对应的第一执行阈值大于或等于所有副本数据对应的第二执行阈值之和。
在一个可能的实施方式中,所述方法还包括:
当所述业务参数属于所述白名单时,获取所述第一查询请求对应的用户标识;
基于哈希路由算法计算所述用户标识对应的路由参数;
根据所述路由参数从所述第二数据库中匹配相应的副本数据;
查询所述副本数据存储的所述待查询业务的第一执行次数。
在一个可能的实施方式中所述方法还包括:
当所述第一执行次数小于所述副本数据的第二执行阈值时,获取所述第一查询请求对应的第二执行次数;
根据所述第一执行次数和所述第二执行次数进行累加得到第三执行次数,并将所述第三执行次数替换所述副本数据中存储的第一执行次数。
在一个可能的实施方式中,所述方法还包括:
获取所述正本数据存储的第四执行次数;
将所述第二执行次数和第四执行次数进行累加得到第五执行次数,将所述第五执行次数替换所述正本数据中的存储的第四执行次数。
第二方面,本申请提供了一种信息处理装置,该装置包括:
获取模块,用于获取预设时间内的第一数量;
接收模块,用于在所述预设时间内接收所述第一数量的第一查询请求;
执行模块,用于对于大于或等于所述第一数量的第二查询请求执行限流操作。
第三方面,本申请提供了一种电子设备,包括:处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
所述存储器,用于存放计算机程序;
所述处理器,用于执行计算机程序时,实现上述方法步骤。
第四方面,本申请提供了一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现上述方法步骤。
本申请实施例提供的上述技术方案与现有技术相比具有如下优点:一方面通过对处于并发状态的查询请求进行限流;另一方面,通过哈希路由算法将用户绑定到某一具体的副本数据中,可以有效地再次对查询请求进行分流,能够有效的缓解数据库的压力,同时增加用户的体验效果。
附图说明
此处的附图被并入说明书中并构成本说明书的一部分,示出了符合本发明的实施例,并与说明书一起用于解释本发明的原理。
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,对于本领域普通技术人员而言,在不付出创造性劳动性的前提下,还可以根据这些附图获得其他的附图。
图1为本申请实施例提供的一种信息处理方法的流程图;
图2为本申请另一实施例提供的一种信息处理方法的流程图;
图3为本申请实施例提供的一种信息处理装置的框图;
图4为本申请实施例提供的一种电子设备的结构示意图。
具体实施方式
为使本申请实施例的目的、技术方案和优点更加清楚,下面将结合本申请实施例中的附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本申请的一部分实施例,而不是全部的实施例。基于本申请中的实施例,本领域普通技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
在以下的说明中,本发明的具体实施例将参考由一部或多部计算机所执行之作业的步骤及符号来说明,除非另有述明。因此,其将可了解到这些步骤及操作,其中有数次提到为由计算机执行,包括了由代表了以一结构化型式中的数据之电子信号的计算机处理单元所操纵。此操纵转换该数据或将其维持在该计算机之内存系统中的位置处,其可重新配置或另外以本领域技术人员所熟知的方式来改变该计算机之运作。该数据所维持的数据结构为该内存之实体位置,其具有由该数据格式所定义的特定特性。但是,本发明原理以上述文字来说明,其并不代表为一种限制,本领域技术人员将可了解到以下所述的多种步骤及操作亦可实施在硬件当中。
本申请实施例提供了一种信息处理方法、装置、电子设备及存储介质。以解决高并发场景下数据库、缓存压力过大的问题。下面首先对本发明实施例所提供的一种信息处理方法进行介绍。
图1为本申请实施例提供的一种信息处理方法的流程图,如图1所示,该方法包括以下步骤:
步骤S11,获取预设时间内的第一数量;
步骤S12,在预设时间内接收第一数量的第一查询请求;
步骤S13,对于大于或等于第一数量的第二查询请求执行限流操作。
本实施例公开的方法适用于高并发访问限流的场景,如抢购,领取优惠券等业务。
本实施例中,首先确定预设时间的第一数量,其中第一数量为服务接口在预设时间段内可以接收并处理的查询请求的最大数量,或者第一数量是工作人员为了实现系统的理想运行而设置的。当预设时间内查询请求的总数量大于第一数量时,则在预设时间内接收第一数量的第一查询请求,之后获取查询请求的总数量与第一数量之间的差值,拒绝与该差值对应数量的第二查询请求。
本实施例中,执行限流操作可以是将大于或等于第一数量的第二查询请求放入队列,可以按照待查询业务的业务优先级将大于或等于第一数量的第二查询请求进行优先级排序,当第一数量的第一查询请求处理完后,依据业务优先级对队列中的第二数量的查询请求进行处理,或者直接拒绝第二查询请求访问。或者拒绝第二查询请求访问。
在接收第一数量的查询请求后,对第一数量的第一查询请求进行检测,判断其是否为正常请求,具体可以通过判断查询请求携带的数据包中是否包括注入攻击代码或者包括恶意注册请求等。
当确定查询请求为正常请求时,获取预设时间内单位时间的个数,根据第一数量和单位时间的个数计算每个单位时间内接收的第一查询请求的第二数量,在每个单位时间内接收所述第二数量的第一查询请求,其中单位时间可以根据当前查询请求的数量自行设置。
比如:预设在10秒内接收的第一查询请求为100个,单位时间设置为1秒,则每个单位时间内接收的第一查询请求的数量为10个;或,单位时间设置为2秒,则每两秒接收第一查询请求的数量为20个。所以通过自行设置任意时间段内任一单位时间可接收的访问请求的最大值,可以应对突发的高并发状态的访问。
之后本实施例中采用令牌桶算法,令牌桶算法是基于如下的场景的模拟,有一个装有令牌且令牌数量固定的桶,令牌添加的速率是固定的,当接收到访问请求时,会检查下桶中是否包含足够多的令牌(一个请求可能需要多个令牌)。再从桶中消费令牌,若令牌数量足够,则消费掉桶中的令牌;所以在本实施例中,为每个单位时间内接收的第二数量的第一查询请求分配相应的令牌。以此不会造成令牌的消耗速率大于令牌的添加速率。
图2为本申请另一实施例提供的一种信息处理方法的流程图,如图2所示,该方法包括以下步骤:
步骤S14,确定第一查询请求对应待查询业务;
步骤S15,当待查询业务为无效业务时,返回预设提示信息。
本实施例中,获取第一查询请求中携带的数据包,根据其中携带的数据包能够确定其对应的待查询业务,比如通过第一查询请求携带的数据包可以确定查询打折促销活动中的某一个商品,之后调用查询请求的资源定位符,从资源定位符中获取待查询业务的业务参数,比如:业务参数可以是优惠活动编号等。当业务参数不属于白名单时,则确定待查询业务为无效业务,例如,该商品参加的打折促销活动结束,或者商品的购买名额已达到预设名额。之后向待查询业务对应的终端返回预设提示信息,预设提示信息可以是查询失败或者无法访问。
本实施例中通过白名单判断业务是否失效,过滤掉失效业务的查询请求,来减少对数据库的访问。例如10个商品已经秒杀结束,后续所有请求将直接返回秒杀失败,不再进行后续操作,大大减少了对数据库的访问。而对于属于白名单的第一查询请求,则确认待查询业务为有效业务。
为了避免对数据库中某个有效业务的集中访问,先确定第一数据库中存储待查询业务对应的正本数据。根据正本数据在第二数据库中构建多个副本数据,以对第一数据库的集中访问进行分流,且正本数据中的第一执行阈值大于或等于所有副本数据中第二执行阈值之和。
例如,某电商网站上有一件参加限时活动的商品,且当前该参加限购活动的商品只有20000件,此时,不对查询请求进行分流,如果第一数据库一旦接收的请求量超过20000次,一方面,超出的查询请求无法获得该商品,另一方面,超大量的用户请求几乎同时访问数据库,从而极易导致第一数据库崩溃。
因此为解决上述问题,需要设定的数量在第二数据库中建立多个副本数据,其中第二数据库可以是多个。例如:正本数据的第一执行阈值为20000次时,构建10个副本数据,10个副本数据分别位于10个第二数据库中,每个副本数据中的第二执行阈值则为2000次。
示例性地,在接收有效的待查询业务时,首先获取查询请求对应的用户标识,比如用户ID等,基于哈希路由算法计算用户ID对应的路由参数,根据路由参数从第二数据库中匹配与用户ID相对应的副本数据,采用哈希路由算法的具体过程如下:用户ID的哈希值对副本个数取余,即userId.hashCode()%副本个数=数据目标副本值,以此得到用户ID对应的副本数据。
之后从副本数据中确定待查询业务的第一执行次数,本实施例中第一执行次数为该商品当前被交易的次数,并对查询到的第一执行次数进行校验,当第一执行次数小于第二执行阈值时,获取第一查询请求对应的第二执行次数,本实施例中第二执行次数为该商品即将被交易的次数,根据第一执行次数和第二执行次数进行累加得到第三执行次数,并将第三执行次数替换副本数据中存储的第一执行次数。
比如,某参加限购商品的库存为10000件,其对应的第一执行阈值10000次,即被交易次数为10000次,其所对应的正本数据包括5个副本数据,每个副本数据的第二执行阈值均为2000,之后根据用户ID确定用户ID对应的副本为副本A,查询到副本A中当前显示的被交易次数为787,及第一执行次数,由于787小于副本A的第二执行阈值2000,获取第一查询请求对应的交易次数为13,即第二执行次数,根据第一执行次数和第一查询请求对应的第二执行次数进行累加,得到最终被交易次数即800,即第三执行次数,并用第三执行次数800替换副本数据存储的第一执行次数787。
因为正本数据与所有副本数据的执行情况同步,所以还需要获取正本数据当前存储的第四执行次数,同上述实施例,第四执行次数为所有副本数据当前执行次数的和为8987,之后根据第一查询请求对应的交易次数为13,即第二执行次数,与第四执行次数8987累加,得到第五执行次数为9000,并用第五执行次数9000替换第四执行次数8987。
通过上述方式在进行库存扣减计算时,不是在总执行次数的基础上往下减,而是对执行次数进行累加计算,累加后达到设定总执行次数时,则表示该商品被交易完,以此方式计算的目的在于避免运营在活动期间调整库存时,不会影响交易量。
图3为本申请实施例提供的一种信息处理装置的框图,该装置可以通过软件、硬件或者两者的结合实现成为电子设备的部分或者全部。如图3所示,该信息处理装置包括:
获取模块301,用于获取预设时间内的第一数量;
接收模块302,用于在预设时间内接收第一数量的第一查询请求;
执行模块303,用于对于大于或等于第一数量的第二查询请求执行限流操作。
本申请实施例还提供一种电子设备,如图4所示,电子设备可以包括:处理器1501、通信接口1502、存储器1503和通信总线1504,其中,处理器1501,通信接口1502,存储器1503通过通信总线1504完成相互间的通信。
存储器1503,用于存放计算机程序;
处理器1501,用于执行存储器1503上所存放的计算机程序时,实现以上实施例中的步骤。
上述电子设备提到的通信总线可以是外设部件互连标准(Peripheral ComponentInterconnect,PCI)总线或扩展工业标准结构(Extended Industry StandardArchitecture,EISA)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
通信接口用于上述电子设备与其他设备之间的通信。
存储器可以包括随机存取存储器(Random Access Memory,RAM),也可以包括非易失性存储器(Non-Volatile Memory,NVM),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
上述的处理器可以是通用处理器,包括中央处理器(Central Processing Unit,CPU)、网络处理器(Network Processor,NP)等;还可以是数字信号处理器(DigitalSignalProcessing,DSP)、专用集成电路(Application Specific Integrated Circuit,ASIC)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)或者其他可编程逻辑器件、分立门或者晶体管逻辑器件、分立硬件组件。
本申请还提供一种计算机可读存储介质,其上存储有计算机程序,该计算机程序被处理器执行时实现以下步骤:
可选的,该计算机程序被处理器执行时还实现以下步骤:
在所述预设时间内接收第一数量的第一查询请求,包括:
获取预设时间内单位时间的个数;
根据第一数量和单位时间的个数计算每个单位时间内接收的第一查询请求的第二数量;
在每个单位时间内接收第二数量的第一查询请求。
可选的,该计算机程序被处理器执行时还实现以下步骤:
确定所述第一查询请求对应待查询业务;
当待查询业务为无效业务时,返回预设提示信息。
可选的,该计算机程序被处理器执行时还实现以下步骤:
获取第一查询请求对应待查询业务的业务参数;
根据业务参数查询预存的白名单;
当业务参数不属于所述白名单时,确定待查询业务为无效业务。
可选的,该计算机程序被处理器执行时还实现以下步骤:
获取数据库中存储待查询业务对应的正本数据;
根据正本数据生成在第二数据库中生成至少一个副本数据,正本数据对应的第一执行阈值大于或等于所有副本数据对应的第二执行阈值之和。
可选的,该计算机程序被处理器执行时还实现以下步骤:
当业务参数属于白名单时,获取第一查询请求对应的用户标识;
基于哈希路由算法计算用户标识对应的路由参数;
根据路由参数从第二数据库中匹配相应的副本数据;
查询副数据本存储的待查询业务的第一执行次数。
可选的,该计算机程序被处理器执行时还实现以下步骤:
当第一执行次数小于副本数据的第二执行阈值时,获取第一查询请求对应的第二执行次数;
根据第一执行次数和第二执行次数进行累加得到第三执行次数;
将第三执行次数替换副本数据中存储的第一执行次数。
可选的,该计算机程序被处理器执行时还实现以下步骤:
获取正本数据存储的第四执行次数;
将第二执行次数和第四执行次数进行累加得到第五执行次数;
将第五执行次数替换正本数据中存储的第四执行次数。
需要说明的是,对于上述装置、电子设备及计算机可读存储介质实施例而言,由于其基本相似于方法实施例,所以描述的比较简单,相关之处参见方法实施例的部分说明即可。
进一步需要说明的是,在本文中,诸如“第一”和“第二”等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
以上所述仅是本发明的具体实施方式,使本领域技术人员能够理解或实现本发明。对这些实施例的多种修改对本领域的技术人员来说将是显而易见的,本文中所定义的一般原理可以在不脱离本发明的精神或范围的情况下,在其它实施例中实现。因此,本发明将不会被限制于本文所示的这些实施例,而是要符合与本文所申请的原理和新颖特点相一致的最宽的范围。